<쉽게 배우는 운영체제> 교재를 참고하였습니다.
준비 상태의 다중 큐
준비 상태의 다중 큐
-
프로세스는 준비 상태에 들어올 때마다 자신의 우선순위에 해당하는 큐의 마지막에 삽입
-
CPU 스케줄러는 우선순위가 가장 높은 큐(0번 큐)의 맨 앞에 있는 프로세스 6에 CPU 할당
-
준비 큐를 몇 개로 나눌지, 여러 개의 준비 큐에 있는 프로세스 중 어떤 프로세스에 CPU를 할당할지 결정하는 일은 스케줄링 알고리즘에 따라 달라짐
-
프로세스는 중요도가 각각 다르며 프로세스 중요도는 PCB에 표시됨
-
CPU 스케줄러는 모든 프로세스 제어블록을 검색해 가장 높은 우선순위의 프로세스에 CPU를 할당
-
그러나 매번 모든 PCB를 검색하는 것은 번거로운 일임
-
그림[4-9]의 오른쪽의 준비 상태의 다중 큐를 나타낸 것임
-
왼쪽그림은 정리되어 있지 않아 매번 우선순위가 높은 PCB를 검색해야 하지만, 오른쪽 그림과 같이 여러 개의 큐를 만들면 편리함
프로세스의 우선순위를 배정하는 방식
- 고정 우선순위 방식 (static priority)
-
운영체제가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식
-
프로세스가 작업하는 동안 우선순위가 변하지 않기 때문에 구현하기 쉽지만, 시스템의 상황이 시시각각 변하는데 우선순위를 고정하면 시스템의 변화에 대응하기 어려워 작업 효율이 떨어짐
-
- 변동 우선순위 방식 (dynamic priority)
-
프로세스 생성 시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
-
구현하기 어렵지만 시스템의 효율성을 높일 수 있음
- 예) 우선 순위가 낮은 p1이 중요 자원 사용 → 자원 독점 사용하기 때문에 이 자원을 기다리는 다른 프로세스는 p1이 작업을 끝낼 때까지 기다림
- 이때 p1 우선순위를 높이면 다른 프로세스보다 CPU를 자주 할당받게 되어 작업을 빨리 끝냄
-
대기 상태의 다중 큐
대기 상태의 다중 큐
-
시스템의 효율을 높이기 위해 대기 상태에서는 같은 입출력을 요구한 프로세스끼리 모아 놓음
- 대기상태에서도 다중 큐를 사용함
-
대기상태는 입출력이 완료되기를 기다리는 프로세스가 모여 있는 곳
-
시스템 내에는 다양한 종류의 입출력장치가 있기 때문에 대기 상태의 프로세스를 한곳에 모아 놓으면 관리하기 불편함
-
따라서 시스템의 효율을 고려할 때 같은 입출력을 요구한 프로세스들을 모아 놓음
-
그림[4-10] 같은 장치의 입출력을 기다리는 프로세스의 PCB는 동일한 입출력 큐에 모여 있음
-
예) 하드디스크 입출력을 기다리는 PCB는 모두 HDD 큐에 삽입됨
-
하드디스크에서 완료 인터럽트가 도착하면 HDD큐에 있는 PCB를 검색하여 이 PCB의 상태를 준비상태로 바꾸고 HDD큐에서 제거 후 준비 큐로 이동함
-
그림[4-10] 같은 장치의 입출력을 기다리는 프로세스의 PCB는 동일한 입출력 큐에 모여 있음
-
예) 하드디스크 입출력을 기다리는 PCB는 모두 HDD 큐에 삽입됨
-
하드디스크에서 완료 인터럽트가 도착하면 HDD큐에 있는 PCB를 검색하여 이 PCB의 상태를 준비상태로 바꾸고 HDD큐에서 제거 후 준비 큐로 이동함
다중 큐 비교 : 준비상태의 다중 큐와 대기상태의 다중 큐는 차이가 존재함.
- 준비상태 다중 큐
- 한 번에 하나의 프로세스를 꺼내어 CPU를 할당
- 대기상태 다중 큐
- 여러 개의 프로세스 제어 블록을 동시에 꺼내어 준비 상태로 옮김
-
시스템에는 다양한 입출력 장치가 있기 때문에 입출력이 동시에 끝날 경우 여러 개의 인터럽트가 한꺼번에 처리됨
- 대기 큐에서는 이렇게 동시에 끝나는 인터럽트를 처리하기 위해 인터럽트 벡터라는 자료 구조 사용
-
대기상태의 다중 큐에 있는 PCB는 큐에 삽입된 순서대로 처리되지만, 일부는 나중에 들어온 PCB 먼저 준비상태로 이동도 가능함
- 입출력장치는 CPU나 메모리보다 느리기 때문에 작업 속도를 높이기 위해 작업순서를 바꾸는 경우가 있음
다중 큐
'전공 > 운영체제' 카테고리의 다른 글
[심화]Ch04. CPU 스케줄링 _05)인터럽트 처리 (0) | 2023.04.04 |
---|---|
Ch04. CPU 스케줄링 _04) 스케줄링 알고리즘 (0) | 2023.04.04 |
Ch04. CPU 스케줄링 _02) 스케줄링 시 고려 사항 (0) | 2023.03.29 |
Ch04. CPU 스케줄링 _01) 스케줄링의 개요 (0) | 2023.03.29 |
[심화]Ch03. 프로세스와 스레드 _05) 동적 할당 영역과 시스템 호출 (0) | 2023.03.26 |
댓글