운영체제 & 컴퓨터구조

[OS] #6. CPU ( 자원 ) 스케줄링

코딩하는상후니 2022. 9. 5. 16:56

 

 


 

 

* CPU 스케줄링

 
 
 

 

 
=> 작업 스케줄링 ( Job Scheduling ) 이라고도 한다.
 
 
* 쓰레드마다 우선 순위가 존재한다.
 
* GUI 같은 경우, 우선 순위가 높다.
( 사용자에게 눈으로 보여주어야 하기 때문에. )
 
* 압축해제 같은 경우, 우선순위가 상대적으로 낮다.
 
 
 
 
=> 입출력 I/O 처리는 매우 느리다. ( 항상 느리다고 생각. )
 
 
그래서 비동기 방식으로 I/O 를 처리하는 것이 중요하다.
 
( non-blocking I/O )
=> I/O 처리할 때, 쓰레드가 다른 일 ( ex.GUI Rendering ) 을 수행하도록 한다.
 
 
 
 
 
 
 
 
* 선점형 ( Preemtive, 강제한다. ) / 비선점형 ( non-Preemtive 강제하지 않음. )
 
 
어떤 쓰레드가 CPU 를 사용할 때,
OS ( 운영체제 ) 가 해당 쓰레드를 제어할 수 있는 상황.
( ex. 다른 쓰레드로 교체하는 행동. )
 
=> 거의 대부분 선점형 스케줄링을 하는 것이 일반적이다.

 

 

 
 
 
 
 
 
 
 
 

* 스케줄링 기법 종류

 
 
* 라운드 로빈 스케줄링 ( Round Robin Scheduling, RR )
 
 
 
=> 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위 ( Time Quantum ) 으로
CPU 를 할당하는 방식이다.
 
=> 보통 시간단위 10 ms ~ 100 ms 정도이다.
 
 
 
 
 
* SJF 스케줄링 ( Shortest Job First Scheduling )
 
 
=> CPU 점유 시간이 가장 짧은 프로세스에 CPU 를 먼저 할당하는 방식.
 
=> 단점으론 항상 요구시간이 짧은 프로세스에게 CPU 를 할당하기에
'기아' 문제가 발생할 수 있다.
또한, 정확한 CPU 요구 시간을 알기가 힘들다.
 
 
 
 
=> 이외에도 여러가지 스케줄링 기법이 존재한다.
 
 
 
 
 
 
 
 
 
 
 

* 우선순위 시스템 설정

 
 
고급 시스템 설정 -> 고급 -> 성능 -> 설정
 
 

 

=> CPU 를 어떻게 스케줄링 할 것인가 에 대한 내용.
위에서 말하는 프로세서 리소스가 'CPU ( 자원 )' 를 말한다.
 
 
 
=> 성능을 위해 조정 부분에 보통의 경우 프로그램 위주 설정으로 되어있는데,
서버 같은 경우는 백그라운드 서비스 설정으로 맞춘다.
즉, 스케줄링의 우선 순위가 다르다.
 
 
 
 
 
 
 

 

 
 
 
 

* 프로세스 우선 순위 수준

 
작업 관리자 -> 세부사항 -> 우선 순위 설정

 

 

 

=> 대부분의 경우 '보통' 으로 설정되어있다.

 

 

 

 

 

 

 

 

 
=> 커널이 개입하는 프로세스는 일반적인 프로세스들보다 빠르다.
그래서 IOCP 네트워크 통신은 커널이 개입하기 때문에 빠르다.
 
 
 
=> 사용자의 요구에 즉각적으로 반응해야하는 전면프로세스는 우선순위가 높다.
 
 
 
=> 대표적인 대화형 프로세스 예는 '웹 브라우저' 를 들 수 있다.
사용자가 실시간으로 빠른 응답시간을 요구한다.
 
 
 
=> 사용자에게 보여주어야 하는 GUI ( 전면 프로세스 ) 들은 우선순위가 높다.
그렇지 않으면 사용자가 답답해한다.