* 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 ( 전면 프로세스 ) 들은 우선순위가 높다.
그렇지 않으면 사용자가 답답해한다.
'운영체제 & 컴퓨터구조' 카테고리의 다른 글
[OS] #8. 공유 자원 & 임계 구역 ( Critical Section ) (0) | 2022.09.12 |
---|---|
[OS] #7. 프로세스간 통신 ( IPC, Inter-Process Communication ) (0) | 2022.09.07 |
[OS] #5. 프로세스 ( Process ) 와 쓰레드 ( Thread ) (0) | 2022.09.04 |
[OS] #4. CPU ( 중앙 처리 장치 ) (0) | 2022.09.02 |
[OS] #3. DMA ( Direct Memory Access ) (0) | 2022.09.02 |