2024. 5. 2. 17:14ㆍCS/운영체제
프로세스 우선순위
운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다.
프로세스마다 CPU를 할당받을 수 있는 우선순위가 존재하게 된다. 우선순위가 높은 프로세스는 입출력 작업이 많은 프로세스가 있다.
왜 입출력 작업이 많은 프로세스를 우선순위를 높게 매겨 먼저 CPU를 할당받도록 할까?
워드 프로세서를 생각해보자. 워드 프로세서는 CPU를 사용하여 명령어를 실행하고, 사용자로부터 입력받은 내용을 보조기억장치에 저장하고, CPU를 사용하여 다시 명령어를 실행하고, 입력한 내용을 화면에 출력하는 과정이 반복된다.
CPU를 이용하는 작업은 CPU 버스트이고, 입출력 장치를 기다리는 작업을 입출력 버스트라고 한다.
CPU 버스트가 많은 프로세스를 CPU 집중 프로세스라고 하며 입출력 버스트가 많은 프로세스를 입출력 집중 프로세스라고 한다.
즉, 프로세스는 실행 상태와 대기 상태를 반복하며 실행된다는 것이다.
입출력 작업이 많은 프로세스들은 입출력 장치가 완료되기까지 대기 상태에 들어가기 때문에 입출력 집중 프로세스부터 CPU 자원을 할당해서 먼저 처리하면 대기 상태동안 다른 프로세스가 CPU를 사용할 수 있기 때문에 입출력 집중 프로세스가 우선순위가 높은 것이다.
정리하자면 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고 PCB에 적힌 우선순위를 기준으로 먼저 처리할 프로세스를 결정한다. 물론 입출력 작업이 높은 프로세스 말고도 우선순위가 높은 프로세스는 여러가지 존재한다.
스케줄링 큐
운영체제는 메모리로 적재되고 싶은 프로세스들을 큐에 삽입하여 줄을 세우고, CPU를 이용하고 싶은 프로세스들 또한 큐에 삽입하여 줄을 세우고, 특정 입출력장치를 이용하고 싶은 프로세스들 역시 큐에 삽입하여 줄을 세운다.
자료구조에서 큐는 FIFO 자료구조이지만 스케줄링에서 말하는 큐는 반드시 FIFO 방식일 필요는 없다.
운영체제는 자원들을 큐로 관리하고 큐에는 다양한 종류가 있다.
그림에서 보는 것처럼 CPU를 사용하기 위해 대기하는 줄을 준비 큐(Ready Queue)라고 한다.
입출력 장치를 사용하기 위해 프로세스들이 서는 줄을 대기 큐(Waiting Queue)라고 한다.
준비 상태에 있는 프로세스들의 PCB는 준비 큐의 마지막에 삽입되어 CPU를 사용할 차례를 기다린다.
운영체제는 PCB들이 큐에 삽입된 순서대로 프로세스를 하나씩 꺼내어 실행한다.
단, 우선순위가 높은 프로세스라면 늦게 삽입되어도 먼저 실행될 수 있다.
대기 상태에 있는 프로세스도 같은 장치를 요구한 프로세스들끼리 같은 대기 큐에서 기다리게 된다.
그리고 입출력이 완료되어 완료 인터럽트가 발생하면 운영체제는 대기 큐에서 작업이 완료된 PCB를 찾고, 이 PCB를 준비 상태로 변경한 뒤 대기 큐에서 제거한다. 그리고 해당 PCB를 준비 큐로 이동시킨다.
'CS > 운영체제' 카테고리의 다른 글
프로세스 동기화 (0) | 2024.05.07 |
---|---|
CPU 스케줄링 알고리즘 (2) | 2024.05.02 |
스레드 (0) | 2024.05.02 |
프로세스 상태와 계층 구조 (0) | 2024.05.01 |
프로세스 개요 (0) | 2024.04.27 |