• 12. 다중 큐

    2021. 9. 22.

    by. ahntree

    728x90

    1. 준비 상태의 다중 큐

    프로세스의 우선순위는 프로세스 제어 블록에 표시된다. CPU는 다음에 실행할 프로세스를 선택하기 위해 이 제어 블록을 탐색할 수 있다. 하지만 선택할 때마다 일일이 탐색하는 것은 너무 비효율적이다. 그래서 준비 상태의 프로세스들은 다중 큐(multiple queue)로 배치된다.

     

    각 큐는 저마다 다른 우선순위를 가지고 있다. 우선순위가 높은 큐의 가장 앞에 있는 프로세스가 다음에 실행될 프로세스다. 그런데 프로세스의 우선순위는 어떻게 결정되는 것일까? 2가지 방식이 있다.

     

     

    고정 우선순위 방식

    운영체제가 프로세스에 우선순위를 부여하면 프로세스가 종료될 때까지 바뀌지 않는다. 구현하기 쉽지만, 시시각각 변하는 상황에 대처할 수 없어 비효율적이다.

     

     

    변동 우선순위 방식

    프로세스가 생성될 때 부여받은 우선순위가 작업 중간에 변하는 방식이다. 구현하기 어렵지만, 시스템의 효율성을 높일 수 있다.

     

     

     

    2. 대기 상태의 다중 큐

    입출력 장치의 종류는 여러 가지다. 하나의 큐로 대기 상태에 있는 모든 프로세스를 관리한다면 다음에 실행할 프로세스를 찾기 쉽지 않다. 그렇기 때문에 대기 상태에 있는 프로세스들도 다중 큐로 배치된다. 입출력 장치마다 다른 큐를 가지는 구조다.

     

    준비 상태와 다르게 대기 상태의 다중 큐는 한 번에 여러 개의 프로세스가 준비 상태로 변환될 수 있다. 입출력 장치가 여러 개이기 때문에 동시에 끝날 수 있기 때문이다.

     

    이렇게 동시에 끝나는 인터럽트를 처리하기 위해 인터럽트 벡터(interrupt vector)라는 자료 구조를 사용한다. 인터럽트 벡터에는 동시에 완료된 입출력 정보와 처리 방법이 담겨 있어, 완료된 프로세스 제어 블록은 모두 준비 상태로 이동한다.

     

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

    728x90

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

    14. 인터럽트 처리  (0) 2021.09.22
    13. 스케줄링 알고리즘  (0) 2021.09.22
    11. 스케줄링 시 고려 사항  (0) 2021.09.20
    10. 스케줄링의 개요  (0) 2021.09.20
    09. 동적 할당 영역과 시스템 호출  (0) 2021.09.20

    댓글