CPU 스케줄링
CPU 스케줄링이란 운영체제가
프로세스들에게 공정하고 합리적으로
CPU 자원을 배분하는 것을 의미한다.
이는 컴퓨터 성능과 직결되는
매우 중요한 문제다.
효과적인 스케줄링 방법
운영체제가 효과적으로 CPU자원을
배분하기 위한 방법에는
우선순위를 정하는 방법이 있다.
일반적으로 입출력 작업이
많은 프로세스의 우선순위가 높다.
입출력 작업이 처리되는 동안에는
해당 프로세스가 대기 상태에 머물게 되는데,
이때 CPU는 입출력 작업이 필요하지 않은
다른 프로세스를 처리할 수 있게 된다.
때문에 입출력 작업이
많은 프로세스를 먼저 처리해놓는 것이
낭비되는 자원 없이 효율적인 방법이다.
비디오 재생, 디스크 백업 프로세스와 같이
입출력 작업이 많은 프로세스를
입출력 집중 프로세스
(I/O bound process)라고 하고
복잡한 연산, 컴파일, 그래픽 처리 작업과 같이
CPU 작업이 많은 프로세스를
CPU 집중 프로세스
(CPU bound process)라고 한다.
스케줄링 큐
스케줄링 큐란 프로세스들을
줄 세워 관리하도록 만든 자료 구조다.
스케줄링 큐에는 CPU 이용을 위해
서는 줄인 준비 큐(Ready queue)와
입출력장치 이용을 위해
서는 줄인 대기 큐(Waiting queue)가 있다.
전체적인 작업 순서를 살펴보면 다음과 같다.
순서 | 작업 |
1 | 입출력 완료 |
2 | 입출력 완료 인터럽트 발생 |
3 | 대기 큐에서 완료된 작업의 PCB를 찾음 |
4 | 해당 PCB를 준비 상태로 변경 |
5 | 해당 PCB를 대기 큐에서 제거 |
6 | 해당 PCB를 준비 큐로 이동 |
선점형 스케줄링
선점형 스케줄링(Preemptive scheduling)
운영체제가 프로세스로부터 자원을
강제로 빼앗아 다른 프로세스에 할당할 수 있는
스케줄링 방식을 의미한다.
이 방식은 어느 한 프로세스의
자원 독점을 막고 골고루 배분할 수 있다는
장점이 있지만 문맥 교환 과정에서
오버헤드가 발생할 수 있다는 문제점이 있다.
비전섬형 스케줄링
비선점형 스케줄링(Non-preemptive ~)
한 프로세스가 종료되거나 스스로 대기 상태가
되기 전에는 다른 프로세스가
끼어들 수 없는 스케줄링 방식을 의미한다.
이 방식은 문맥 교환의 횟수가 비교적 적어
오버헤드가 적게 일어나지만,
모든 프로세스에 자원을
골고루 배분하지 못한다는 단점이 있다.
'개인 학습 > 운영체제' 카테고리의 다른 글
12 - 동기화 (0) | 2023.02.09 |
---|---|
11 - CPU 스케줄링 알고리즘 (0) | 2023.02.09 |
09 - 스레드 (0) | 2023.02.06 |
08 - 프로세스 계층 구조 (0) | 2023.02.06 |
07 - 프로세스 상태 (2) | 2023.02.06 |