CS/운영체제

[운영체제] 프로세스 다중 큐(multiple queue)

초오오이 2024. 12. 13. 22:56

 


 

다중 큐

프로세스의 중요도는 PCB에 표시된다. 이때 CPU 스케줄러는 모든 프로세스 제어 블록을 뒤져서 우선순위가 가장 높은 프로세스에 CPU를 할당한다. 그러나 매번 모든 프로세스 제어 블록을 검색하는 것은 번거롭다.

때문에 다른 상태로 넘어가기 위해 대기 중인 프로세스가 모인 준비 상태대기 상태는 다중 큐의 형태로 관리되어 좀 더 효율적으로 작동된다.

 

준비 상태 다중 큐

준비 상태의 다중 큐

 

준비 상태 큐는 CPU를 할당받기 위해 대기 중인 프로세스가 들어가는 큐이다. 우선순위에 따라 여러 개의 큐를 만들어 관리하면 각 큐 내에서 효율적으로 프로세스를 선택하고 CPU를 할당할 수 있다.

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

준비 상태 다중 큐는 한 번에 하나의 프로세스를 꺼내어 CPU에 할당한다.

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

고정 우선순위 방식 static priority

  • 운영체제가 프로세스에 우선 순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식
  • 프로세스가 작업하는 동안 우선 순위가 변하지 않기 때문에 구현이 쉽지만 시스템의 상황이 시시각각 변화할 때 대응이 어렵다.

변동 우선순위 방식 dynamic priority

  • 프로세스 생성 시 부여받은 우선 순위가 프로세스 작업 중간에 변하는 방식
  • 구현이 어렵지만 시스템의 효율성을 높일 수 있다.(예시: 상태에 따라 중요 자원을 사용하는 프로세스의 우선 순위를 높여 해당 프로세스의 작업을 빨리 끝내게 하고 다른 프로세스에 중요 자원을 할당할 수 있다.)

 

대기 상태 다중 큐

대기 상태의 다중 큐

 

입출력이 완료되기를 기다리는  프로세스가 모인 대기 상태에서도 다중 큐를 사용한다. 대기 상태 다중 큐는 같은 입출력을 요구한 프로세스끼리 모아 놓는다.

대기 상태 다중 큐는 여러 개의 프로세스 제어 블록을 동시에 꺼내어 준비 상태로 옮긴다.

입출력이 동시에 끝날 경우 여러 개의 인터럽트가 한꺼번에 처리되는데, 이렇게 동시에 끝나는 인터럽트를 처리하기 위해 인터럽트 벡터라는 자료구조를 사용한다.

보통 큐에 삽입된 순서대로 처리되지만 일부는 나중에 들어온 프로세스가 먼저 처리되기도 한다. 입출력장치는 CPU나 메모리보다 느리기 때문에 작업 속도를 높이기 위해 작업 순서를 바꾸는 경우가 있기 때문이다.