🖥️ CPU 스케줄링 🖥️
운영체제가 CPU를 어떻게 관리할까?
CPU 사용이 필요한 프로세스들이 차례로 돌아가며 사용하는 것이 가장 공정한 스케줄링일까?
프로세스마다 우선순위가 다르다는 점을 생각해보자.
입출력 작업이 많은 프로세스 (io bound) -> 프로세스가 대기 상태에 머무르는 시간이 많음(이 때는 CPU 안 씀)
그래서 입출력 작업이 많은 프로세스를 먼저 실행시키고(어차피 금방 대기 상태에 머물러서 CPU를 안 쓸테니)
이후에 CPU 집중 프로세스를 실행해서 CPU를 많이 쓰는것이 효율적
스케줄링 큐
다음으로 CPU를 사용시킬 프로세스의 PCB를 모두 살펴보는 것은 비효율적이다.
같은 큐 내부에서도 우선순위별로 처리됨.
선점형(preemptive) 스케줄링, 비선점형(non-preemptive) 스케줄링
선점형 스케줄링(우선순위에 따라 선점 가능형으로 이해하면 좋음)
- 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유 가능.
- 비교적 응답이 빠르다는 장점, 처리 시간을 예측하기 힘들고 높은 우선순위 프로세스들이 계속 들어오는 경우 오버헤드 발생.
- 어느 한 프로세스의 자원 독점을 막고(시간 지나면 나와야 되니까), 프로세스들에 골고루 자원을 배분할 수 있음.
but context switching 즉 문맥 교환 과정에서 오버헤드가 발생할 수 있음.
비선점형 스케줄링 (선점 못함 기다려)
- 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식.
(자원 독점의 위험)
- 모든 프로세스에 대한 요구를 공정하게 처리할 수 있지만, 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기해야할 수도 있다.
(처리시간 편차가 적은 특정 프로세스 환경에 용이)
학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl
'Computer Science > 운영체제' 카테고리의 다른 글
7. 동기화(synchronization) (0) | 2023.09.02 |
---|---|
6. CPU 스케줄링 알고리즘 (0) | 2023.08.30 |
4. 스레드 (0) | 2023.08.29 |
3. 프로세스 상태와 계층 구조 (0) | 2023.08.28 |
2. 프로세스 개요 (0) | 2023.08.27 |