Machineboy空
CPU 스케줄링 ① 개요 본문

프로세스 우선순위 (Priority)
가장 공정한 CPU 스케줄링은?
CPU를 사용하고 싶어하는 프로세스들이 차례로 돌아가는 것?
빨리 처리해야하는 프로세스가 있음
= 프로세스마다 우선순위가 다르기 때문
- 입출력 작업이 많은 프로세스 (= 입출력 집중 프로세스, I/O bound process)의 우선순위는
- CPU작업이 많은 프로세스 (= CPU 집중 프로세스, CPU bound process)의 우선순위보다 높다
입출력 집중 프로세스가 실행 상태보다 대기 상태에 더 많이 머무르게 될 것.
그래서 CPU를 한동안 안쓸 것임. 그래서 빨리 처리할 수 있는 입출력 집중프로젝트를 먼저 처리.



스케줄링 큐
운영체제 입장에서 다음 프로세스를 정하기 위해서 모든 프로세스의 PCB를 뒤적이는 것은 비효율적.
입출력 프로세스나, 메모리 등에서도 CPU를 요구하는 작업이 몰릴 수 있다.
자원을 사용하고자 하는 프로세스들의 대기줄.
- 준비 큐: CPU를 이용하기 위해 기다리는 줄
- 대기 큐: 입출력장치를 이용하기 위해 기다리는 줄
먼저 큐에 삽입되었다고 해서 먼저 처리되는 것은 아니다. 우선순위가 높은 프로세스가 먼저 실행.


동시에 실행되는 프로세스가 여러 개 있다고 가정했을 때
CPU자원은 한정되어 있으므로 프로세스들을 CPU를 번갈아가며 사용해야한다.
- 준비상태에 접어들어 CPU 할당을 기다린다.
- 자신의 차례가 되면 디스패치(준비상태에서 실행상태로 접어듬)이 되어 실행한다.
- 자신의 실행이 끝나면, 타이머 인터럽트가 발생해 다시 준비상태, 준비큐에 삽입된다.
- 다음으로 우선순위가 높은 프로세스가 디스패치된다.
- ...
- 그러다가 입출력 프로세스 해야하면 입출력 프로세스 순서도 준비큐로 들어옴.


운영체제는 우선순위에 따라 프로세스 상태를 결정하고 자원을 관리한다!
선점형 / 비선점형 스케줄링 (Preemtive, Non-Preemtive)
가령 어떤 프로세스가 CPU를 할당받아서 프로세스를 진행하고 있다고 할 때
- 선점형 프로세싱 (preemtive scheduling)
- 현재 CPU를 사용 중인 프로세스로부터 CPU자원을 빼앗아 다른 프로세스에 할당
- 프로세스마다 정해진 시간을 쓰고 타임아웃 인터럽트가 발생하면 다음 프로세스로 넘어가는 것
- 장점: 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분할 수 있다.
- 단점: 그만큼 문맥 교환 과정에서 오버헤드가 발생할 수 있다. (문맥교환을 자주해야하니까)
- 비선점형 프로세싱 (non-preemtive scheduling)
- 현재 CPU를 사용 중인 프로세스의 작업이 끝날 때까지 프로세스를 기다리기
- 장점: 선점형 스케줄링에 비해 문맥교환에서 발생하는 오버헤드가 적다.
- 단점: 모든 프로세스가 골고루 자원을 이용하기 어렵다.
- 현재 CPU를 사용 중인 프로세스의 작업이 끝날 때까지 프로세스를 기다리기


*오버헤드(overhead)
어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등
ex.껌을 사러 마트까지 가는 것은 오버헤드가 너무 커!
배보다 배꼽이 크다 느낌
'Computer > CS' 카테고리의 다른 글
프로세스 동기화, 레이스 컨디션, 상호 배제를 위한 동기화의 원칙 (0) | 2024.01.16 |
---|---|
CPU 스케줄링 ② 스케줄링 알고리즘 (1) | 2024.01.15 |
프로세스와 스레드 ③ 스레드 (0) | 2024.01.12 |
프로세스와 스레드 ② 프로세스 상태와 계층 구조 (fork, exec) (0) | 2024.01.12 |
프로세스와 스레드 ① 프로세스 개요 - 프로세스 제어블록(PCB), 문맥 교환, 정적할당/ 동적할당 (0) | 2024.01.12 |