2023.02.05 – (자료 구조 및 알고리즘) – #7 큐(Queue) – 컨셉(FIFO : First In First Out)
– CPU 스케줄러가 어떻게 작동하는지 알기 전에 이번 기사와 관련되어 있으므로 먼저 읽어 보자
● 프로세스 상태
– 이전 기사에서 만든 프로세스의 상태를 다시 살펴 보겠습니다.
2023.02.24 – (운영 체제) – #8 프로세스 상태 with 시분할 처리
– 프로세스가 생성되면 준비 상태로 전환,
– 준비 상태에서 CPU를 기다리는 프로세스는 CPU 스케줄러에 의해 실행 상태로 전환된다.
– 실행 상태에 있는 프로세스는
1. CPU 할당 시간이 끝나면 다시 준비 상태로
2. I/O 요구가 있으면 대기 상태로
3. 작업이 끝나면 완료 상태로 전환됩니다.
– 이 중 프로세스가 대기 중 준비 상태와 대기 상태는 큐 데이터 구조로 관리된다.
– Queue는 First In First Out 구조이다.
● 멀티 큐
– 프로세스가 실행 상태 → 준비 상태로 돌아갈 때
– OS는 해당 프로세스의 우선순위를 보고 거기에 맞는 ‘준비 큐’에 넣는다.
– 이후 CPU 스케줄러는 “준비 상태의 멀티 큐”에 포함된 프로세스 중에서 적절한 프로세스를 선택하여 실행 상태로 전환
– 프로세스가 실행 상태로부터 I/O 요구를 받아 대기 상태가 되면(실행 상태 → 대기 상태)
– I/O 작업 유형에 따라 분류된 대기열에 들어갑니다.
ex)
– 아래 그림에서 하드 디스크 작업은 HDD 대기열로 들어갑니다.
– 하드 디스크 작업이 완료되고 인터럽트가 발생하면 HDD 대기열을 지연시켜 프로세스를 다시 검색합니다.
– 위에서 Queue에 프로세스가 들어간다고 했는데 정확히 말하면 프로세스 정보를 포함합니다.
PCB가 Queue에 들어간다고 말해야 한다.
● 정리
– 프로세스 정보 포함 PCB는 준비 상태 멀티 큐에 들어가서 실행될 때까지 기다립니다.
있다
– CPU 스케줄러에 의해 실행 상태로 전환된다.
(준비 상태 → 실행 상태)
– 바로 이때 CPU 스케줄러가 준비 상태의 멀티 큐를 참조하여 어떤 프로세스를 실행할지 결정하는 것이다.
– I/O 작업도 이와 비슷하다.
– 실행 중인 프로세스에서 I/O 작업이 발생하면 해당 I/O 작업의 종류별로 나누어 Queue로 들어가 CPU 스케줄러는 이를 참조하여 스케줄링을 진행한다.