CPU 상태 별 다중 큐

GwanMtCat·2023년 9월 15일
0

준비 상태의 다중 큐

프로세스는 저마다 중요도가 달라 프로세스의 중요도는 프로세스 제어 블록에 표시된다.

CPU 스케쥴러는 모든 프로세스 제어 블록을 뒤져서, 가장 높은 우선순위의 프로세스에 CPU를 할당하는데 매번 모든 프로세스 제어 블록을 검색하는 것이 번거로운 일이다.

이를 위해 준비 상태에 들어올 때마다 자신의 우선순위에 해당하는 큐의 마지막에 삽입된다.

준비 큐를 몇개로 나눌지, 여러 개의 준비 큐에 있는 프로세스 중 어떤 프로세스에 CPU를 할당할지 결정하는 일은 스케쥴링 알고리즘에 따라 달라진다.

프로세스의 우선순위를 배정하는 방식에는 고정 우선순위(static prioiry)와 변동 우선순위(dynamic priority) 방식이 있다.

  • 고정 우선순위
    • 우선순위를 부여하면 프로세스가 끝날 떄까지 바뀌지 않는 방식
  • 변동 우선순위
    • 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
    • 프로세스의 낮은 우선순위를 높은 우선순위로 바꾸는 것을 반전 우선순위 라고 한다.

대기 상태의 다중 큐

대기 상태에서도 다중 큐를 사용한다.

대기 상태는 입출력이 완료되기를 기다리는 프로세스가 모여 있는 곳으로 시스템 내에는 다양한 종류의 입출력장치가 있으므로 대기 상태의 프로세스를 한 곳에 모아놓으면 관리하기가 불편하다.
해당 프로세스를 찾기 위해, 대기 상태의 모든 프로세스를 검색해야 한다.

시스템의 효율을 높이기 위해 대기 상태에서는 같은 입출력을 요구한 프로세스끼리 모아 놓는다.

준비 상태의 다중 큐와 대기 상태의 다중 큐는 차이가 있는데 준비 큐는 한 번에 하나의 프로세스를 꺼내어 CPU를 할당하는 반면, 대기 큐는 여러 개의 프로세스의 제어 블록을 동시에 꺼내어 준비 상태로 옮긴다.

시스템에는 많은 입출력장치가 있어 입출력이 동시에 끝날 경우, 여러 개의 인터럽트가 한꺼번에 처리된다. (인터럽트 벡터)

인터럽트 벡터에는 동시에 완료된 입출력 정보와 처리 방법이 담겨 있는데, 이 정보에 따라 완료된 프로세스 제어 블록은 모두 준비 상태로 이동한다.

대기 상태의 다중 큐에 있는 프로세스 제어 블록은 큐에 삽입된 순서대로 처리 되지만, 일부는 나중에 들어온 프로세스 제어 블록이 먼저 준비 상태로 옮겨 가기도 한다.

입출력장치는 CPU나 메모리보다 느리기 때문에 작업 속도를 높이기 위해, 작업 순서를 뒤바꾸는 경우가 있는데 이때는 나중에 요청된 작업이 먼저 처리되기도 한다.


참조한 책 및 사이트

쉽게 배우는 운영체제

0개의 댓글