티스토리 뷰

2023.02.05 - [자료구조 및 알고리즘] - #7 큐(Queue) - 개념(FIFO : First In First Out)

 

#7 큐(Queue) - 개념(FIFO : First In First Out)

- 큐(Queue)도 Stack과 같이 단순한 규칙을 가지고 있는 리스트이다. - 규칙 : FIFO(First In First Out) - 즉, 먼저 들어간 데이터가 가장 먼저 나온다는 의미로서 먼저 들어간게 가장 나중에 나오는 Stack과

radderveloper.tistory.com


● FIFO

- CPU 스케줄링 알고리즘(FIFO, SJF, RR, MLFQ) 중 하나인 FIFO에 대해 알아보자

- FIFO(First In First Out) : 먼저 들어온 작업이 먼저 처리된다.(나간다.) 즉, 프로세스가 케줄링 Queue에 들어온 순서대로 CPU를 할당 받는 방식이다.

- FIFO 방식은 먼저 들어온 프로세스가 완전히 끝나야 다음 프로세스가 실행될 수 있다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

[장점]
- 단순하고 직관적

[단점]
- 하나의 프로세스가 완전히 끝나야 다음 프로세스가 시작될 수 있기 때문에 실행시간이 짧고 늦게 도착한 프로세스가 실행시간이 길고 먼저 도착한 프로세스의 작업을 기다려야한다.
- 만약 프로세스에 I/O 작업이 있으면 CPU는 I/O 작업이 끝날 때까지 쉬고 있기 때문에 CPU 사용률도 떨어진다.

● 평균 대기 시간

- 스케줄링의 성능은 평균 대기 시간으로 평가한다.

- 평균 대기 시간 : 여러개의 프로세스가 실행될 때 해당 프로세스들이 모두 실행되기까지의 대기 시간의 평균

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 위의 그림의 경우 대기 시간이 왼쪽에서부터 5초, 4초, 0초 이므로 평균 대기 시간은 9 / 3 = 3초이다.


- 조금 더 자세한 예로 알아보자

https://asfirstalways.tistory.com/120
출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 프로세스1의 작업 시간(Burst Time)은 25초이다.

- 프로세스2의 작업 시간(Burst Time)은 5초이다.

- 프로세스3의 작업 시간(Burst Time)은 4초이다.

- 프로세스1이 먼저 도착했기에 가장 먼저 실행된다.
- 이때 프로세스1은 기다림 없이 바로 실행되기 때문에 프로세스1의 대기 시간은 0초이다.

- 프로세스1이 25초 동안 실행을 한 후 바로 프로세스2가 실행된다.
- 이때 프로세스2는 프로세스1의 작업 시간(25초) 동안 기다렸으므로 프로세스2의 대기 시간은 25초이다.

- 프로세스2가 5초 동안 실행을 한 후 바로 프로세스3이 실행된다.
- 이때 프로세스3은 프로세스1의 작업 시간(25초)과 프로세스2의 작업 시간(5초) 동안 기다렸으므로 프로세스3의
대기 시간은 30초이다.

- 3개의 프로세스의 평균 대기 시간 = (0 + 25 + 30) / 3 = 18.3초이다.

- 이번에는 Burst Time이 짧은 순서대로 프로세스를 실행 시켜보자

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 프로세스3이 먼저 도착했기에 가장 먼저 실행된다.
- 이때 프로세스3은 기다림 없이 바로 실행되기 때문에 프로세스3의 대기 시간은 0초이다.

- 프로세스3이 4초 동안 실행을 한 후 바로 프로세스2가 실행된다.
- 이때 프로세스2는 프로세스3의 작업 시간(4초) 동안 기다렸으므로 프로세스2의 대기 시간은 4초이다.

- 프로세스2가 5초 동안 실행을 한 후 바로 프로세스1이 실행된다.
- 이때 프로세스1은 프로세스3의 작업 시간(4초)과 프로세스2의 작업 시간(5초) 동안 기다렸으므로 프로세스3의
대기 시간은 9초이다.

- 3개의 프로세스의 평균 대기 시간 = (0 + 4 + 9) / 3 = 4.3초이다.

- 이렇게 프로세스의 실행 순서만 바꿨을 뿐인데 평균 대기 시간의 차이가 많이 난다.

- FIFO 알고리즘은 프로세스의 Burst Time에 따라 성능 차이가 크게 나기 때문에 오늘날의 OS에서는 잘 쓰이지 않고 일괄 처리 시스템에서 사용된다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

'CS > 운영체제' 카테고리의 다른 글

#17 스케줄링 알고리즘 - RR(Round Robin Scheduling)  (0) 2023.03.19
#16 스케줄링 알고리즘 - SJF(Shortest Job First)  (0) 2023.03.14
#14 스케줄링 목표  (0) 2023.03.12
#13 다중큐  (0) 2023.03.10
#12 CPU 스케줄링 개요  (0) 2023.03.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함