CPU 스케줄링
- 공정하고 합리적으로 CPU 자원을 배분하는 것
프로세스 우선순위
- 입출력 집중 프로세스
- 입출력 작업이 많은 프로세스
- 실행 상태보다 입출력을 위한 대기 상태에 더 많이 머무르게됨 - CPU 집중 프로세스
- 복잡한 수학 연산, 컴파일, 그래픽 처리 작업이 많은 프로세스
- 대기 상태보다 실행 상태에 더 많이 머무르게됨 - CPU 버스트, 입출력 버스트
- 프로세스는 일반적으로 CPU 버스트와 입출력 버스트를 반복하며 실행 - 우선순위 부여
- 프로세스 중요도에 맞게 CPU가 이용할 수 있도록 운영체제가 우선순위를 부여
스케줄링 큐
- 프로세스들을 줄을 세워 관리하는 것
- 준비 큐
- CPU를 이용하고 싶은 프로세스들이 서는 줄 - 대기 큐
- 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄
선점형 & 비선점형 스케줄링
선점형 스케줄링
- 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도, 운영체제가 자원을 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
- 하나의 프로세스가 자원 독점하는 것을 막음
- 문맥 교환 과정에서 오버헤드가 발생할 수 있음
비선점형 스케줄링
- 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나, 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링
- 하나의 프로세스가 자원 사용을 독점할 수 있음
- 모든 프로세스가 골고루 자원을 사용할 수 없음
CPU 스케줄링 알고리즘
FCFS 스케줄링 (선입 선처리 스케줄링)
- 준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식
- 때때로 프로세스들이 기다리는 시간이 매우 길어질 수 있음
- 호위효과
- CPU를 오래 사용하는 프로세스가 먼저 도착하면, 다른 프로세스는 기다려야만함
SJF 스케줄링 (최단 작업 우선 스케줄링)
- 준비 큐에 삽입된 프로세스들 중, CPU 이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 스케줄링 방식
라운드 로빈 스케줄링
- 선입 선처리 스케줄링 + 타임 슬라이스
- 타임 슬라이스: 각 프로세스가 CPU를 사용할 수 있는 정해진 시간 - 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CPU를 이용하는 선점형 스케줄링
- 타임 슬라이스 길이가 적절해야함
- 너무 길다면 호위효과 발생
- 너무 짧다면 문맥 교환에 발생하는 비용이 더 커질 수 있음
SRT 스케줄링 (최소 잔여 시간 우선 스케줄링)
- 최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링
- 타임 슬라이스만큼 시간동안 돌아가는데 → 다음 프로세스는 남아있는 작업 시간이 가장 적은 프로세스 선택
우선순위 스케줄링
- 프로세스들에 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 알고리즘
- 우선순위가 같다면 선입 선처리로 처리
- 기아
- 우선순위가 낮은 프로세스가 너무 오랜시간 실행이 연기될 수 있음 - 에이징
- 오랜시간 대기한 프로세스의 우선순위를 점차 높이는 방식
다단계 큐 스케줄링
- 우선순위별로 준비 큐를 여러 개 사용하는 스케줄링 방식
- 프로세스 유형별로 우선순위를 구분하여 실행
- 큐별로 타임 슬라이스 및 다른 스케줄링 알고리즘을 사용할 수 있음
다단계 피드백 큐 스케줄링
- 다단계 큐 스케줄링 + 프로세스들이 큐 사이를 이동할 수 있음
- 우선순위가 낮은 프로세스의 대기 시간이 길어질 경우 우선순위를 높일 수 있음
- 가장 일반적인 CPU 스케줄링 알고리즘
'CS notes > OS' 카테고리의 다른 글
[OS] 가상 메모리는 가상세계에 있지 않습니다. (0) | 2024.04.30 |
---|---|
[OS] 교착 상태를 막아봅시다. (0) | 2024.04.28 |
[OS] 프로세스 동기에 대해서 알아보자 (0) | 2024.04.27 |
[OS] 프로세스와 스레드 (0) | 2024.04.23 |
[OS] 운영체제를 알아야하는 이유?! (0) | 2024.04.11 |