hmk run dev

CPU 스케줄링 본문

OS

CPU 스케줄링

hmk run dev 2024. 3. 5. 22:34

CPU 스케줄링이란?

 

운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것

컴퓨터 전체 성능과 직결되는 중요한 과정

 

 

가장 공정한 CPU 스케줄링?

CPU를 사용하고 싶어 하는 프로세스들이 차례로 돌아가면 사용?

빨리 처리해야 하는 프로세스가 있기 때문에, 즉 프로세스마다 우선순위가 다르기 때문에 

그리 좋은 방법이 아니다.

 

 

입출력 작업이 많은 프로세스(입출력 집중 프로세스)의 우선순위는

CPU 작업이 많은 프로세스(CPU 집중 프로세스)의 우선순위보다 높다.

 

대부분의 프로세스는 CPU와 입출력장치를 둘다 사용하는 경우가 많다.

ex) CPU를 썼다 키보드를 쓰고, 보조기억 장치를 쓰고, 모니터를 쓰고 등등

 

 

 

 

비교적 입출력 작업을 덜쓰는 CPU 집중 프로세스들은

컴파일, 수학연산, 그래픽 계산 작업들은 대기상태에 더 많이 머무르게 된다.

 

입출력 작업이 많은 I/O 바운드 프로세스들은 우선순위가 비교적 높다.

 

 

프로세스 우선순위

우선순위는 PCB(Process Control Block)에 저장된다.

 

 

 

스케줄링 큐 

 

CPU를 사용할 프로세스를 선정하기 위해서 모든 프로세스의 PCB를 탐색하는 것은 비효율적이다.

뿐만 아니라, CPU뿐만 아니라 메모리, 입출력 장치를 요구하는 PCB도 많다.

 

스케줄링 큐는, 어떤 자원을 이용하고 싶은 프로세스들이 서는 줄이라고 생각하면 된다.

큐는 먼저 들어오면 먼저나가는 FIFO 구조인데, 스케줄링 큐는 반드시 FIFO는 아니다.

 

준비 큐 & 대기 큐

 

준비 큐와 대기 큐는 대표적인 스케줄링 큐다.

 

준비 큐

 

CPU를 이용하고자 하는 프로세스들이 서는 줄

 

대기 큐

입출력 장치를 이용하고자 하는 프로세스들이 서는 줄

 

대기 큐에도 여러가지 종류가 있다.

같은 장치를 요구한 프로세스들은 같은 큐에서 대기

 

프로세스 상태 다이어그램

 

 

선점형(preemptive) 스케줄링 비선점형(non-preemptive) 스케줄링

 

아래 이미지와 같은 상황이라면?

 

- (선점형)현재 CPU를 사용 중인 프로세스로부터 CPU 자원을 빼앗아 다른 프로세스에 할당

- (비선점형)현재 CPU를 사용 중인 프로세스 작업이 끝날 때까지 프로세스 기다리기

 

선점형

어떤 프로세스가 CPU를 선점하고 있더라도, 우선순위가 높은 프로세스가 CPU 자원을 선점할 수 있음

 

 

+ 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분가능

- 그만큼 문맥 교환 과정에서의 오버헤드가 발생할 수 있음

 

비선점형

어떤 프로세스가 CPU를 선점하고 있으면 다른 프로세스가 끼어들 수 없음

 

+ 선점형 스케줄링에 비해 문맥 교환 오버헤드가 적다.

- 모든 프로세스가 골고루 자원을 이용하기 어렵다.

 

'OS' 카테고리의 다른 글

교착 상태 해결 방법  (0) 2024.03.16
교착상태(Dead lock)  (0) 2024.03.15
스레드란?  (0) 2024.03.05
프로세스의 개요  (0) 2024.03.03
운영체제의 큰 그림  (0) 2024.03.02
Comments