CPU 스케줄링의 목적
- 공평성
- 모든 프로세스가 자원을 공평하게 배정
- 자원 배정 과정에서 특정 프로세스가 배제되어서는 안됨
- 효율성
- 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링
- 유휴 자원을 사용하려는 프로세스에 우선권
- 안정성
- 우선순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함
- 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호
- 확정성
- 프로세스가 증가해도 시스템이 안정적으로 작동하게 조치
- 시스템 자원이 늘어나는 경우 이 혜택이 시스템에 반영되도록 조치
- 반응 시간 보장
- 응답이 없는 경우 사용자는 시스템이 멈춘 것으로 가정
- 시스템은 적절한 시간 안에 프로세스의 요구에 반응
- 무한 연기 방지
- 특정 프로세스의 작업이 무한히 연기되어서는 안됨
비선점 스케줄링
- 문맥 교환의 횟수가 선점형 스케줄링보다 적음
- 문맥 교환에서 발행하는 오버헤드가 적음
- 하나의 프로세스가 자원을 사용 중이라면 당장 자원을 사용해야 하는 상황에서는 무작정 기다리는 수 밖에 없음
- 종류
FCFS (선입선처리) 스케줄링
- 준비 큐에 도착한 순서대로 CPU를 할당
- 한 번 실행되면 그 프로세스가 끝나야만 다음 프로세스 실행
- 큐가 하나라 모든 프로세스는 운선순위가 동일
- 콘보이 효과로 인한 성능저하 발생 가능성
- 처리 시간이 긴 프로세스가 CPU를 차지하면 다른 프로세스들은 하염없이 기다려 시스템의 효율성 저하
- 현재 작업 중인 프로세스가 입출력 작업을 요청하는 경우 CPU의 idle time이 길어져 작업 효율 저하
SJF (최단 작업 우선) 스케줄링
- 준비 큐에 있는 프로세스 중에서 실행 시간이 가장 짮은 작업부터 CPU를 할당
- 최단 작업 우선 스케줄링
- 콘보이 효과를 완화
- 프로세스의 종료시간을 정확하게 예측하기 어려움
- 작업 시간이 길다는 이유만으로 계속 뒤로 밀리는 아사 현상 발생
- 에이징 기법을 통해 아사 현상 방지
- 프로세스가 양보할 수 있는 상한선을 정함
- 프로세스가 자신의 순서를 양보할 때마다 나이를 한 살씩 먹어 최대 몇 살까지 양보하도록 규정
HRN(최소 응답률 우선) 스케줄링
- SJF 스케줄링에서 발생할 수 있는 아사 현상을 해결하기 위해 만듬
- 서비스를 받기 위해 기다린 시간과 CPU 사용 시간을 고려하여 스케줄링
- 실행 시간이 짧은 프로세스의 우선순위를 높게 설정하면서도 대기 시간을 고려하여 아사 현상 완화
- 프로세스의 우선순위 결정 기준
- 우선 순위 = (대기시간 + CPU 사용시간) / CPU 사용시간
- 대기 시간이 긴 프로세스의 우선순위를 높임으로써 CPU를 할당받을 확률을 높임
- 여전히 공평성이 위배되어 많이 사용하지는 않음
선점 스케줄링
- 더 급한 프로세스가 언제든 끼어들어 사용 가능
- 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골구루 자원을 배분 가능
- 문맥 교환 과정의 오버헤드 증가
- 종류
라운드 로빈 스케줄링
- 한 프로세스가 할당 받은 타임 슬라이스 동안 작업을 하다가 작업을 완료하지 못하면 준비 큐의 맨 뒤로 가서 자기 차례를 기다림
- 선점형 알고리즘 중 가장 단순하고 대표적인 방식
- 프로세스들이 작업을 완료할 때까지 계속 순화하면서 실행
- 타임 슬라이스와 라운드 로빈 스케줄링
- 라운드 로빈 스케줄링이 효과적으로 작동하려면 문맥 교환에 따른 추가 시간을 고려하여 타임 슬라이스를 적절히 설정
- 타임 슬라이스가 큰 경우
- 하나의 작업이 끝난 귀 다음 작업이 시작되는 것처럼 보여 FCFS 스케줄링과 다를게 없음
- 타임 슬라이스가 작을 경우
- 문맥 교환이 너무 자주 일어나 문맥 교환에 걸리는 시간이 실제 작업 시간보다 상대적으로 커지며, 문맥 교환에 많은 시간을 낭비하여 실제 작업을 못하는 문제 발생
SRT (최소 잔여 시간 우선) 스케줄링
- 라운드 로빈 스케줄링을 사용해, CPU를 할당 받을 프로세스를 선택할 때 작업 시간이 가장 적은 프로세스를 선택
- 현재 실행 중인 프로세스와 큐에 있는 프로세스의 남은 시간을 주기적으로 계산하고, 남은 시간이 더 적은 프로세스와 문맥 교환을 해야하므로 SJF 스케줄링에는 없는 작업이 추가됨
- 운영체제가 프로세스의 종료시간을 예측하기 어렵고 아사 현상이 일어나 잘 사용하지 않음
우선순위 스케줄링
- 프로세스의 중요도에 따른 우선순위를 반영
- 비선점형
- SJF
- 작업 시간이 짧은 프로세스에 높은 우선순위
- HRN
- 작업 시간이 짧거나 대기 시간이 긴 프로세스에 높은 우선순위
- 선점형
- SRT
- 남은 시간이 짧은 프로세스에 높은 우선순위
- 고정 우선순위 알고리즘
- 한 번 우선순위를 부여받으면 종료될 때까지 우선순위가 고정
- 단순하게 구현할 수 있지만 시시각각 변하는 시스템의 상황을 반영하지 못해 효율설 저하
- 변동 우선순위 알고리즘
- 일정 시간마다 우선순위가 변하여 일정 시간마다 우선순위를 개호 계산하고 이를 반영
- 복잡하지만 시스템의 상황을 반영하여 효율적인 운영 가능
- 준비 큐에 있는 프로세스의 순서를 무시하고 우선순위가 높은 프로세스에 먼저 CPU를 할당하므로 공평성을 위배하고 아사현상 발생
- 준비 큐에 있는 프로세스의 순서를 무시하고 프로세스의 우선순위를 매번 바꿔랴하기 때문에 오버헤드가 커짐
다단계 큐 스케줄링
- 우선 순위에 따라 준비 큐를 여러개 사용
- 프로세스는 운영체제로부터 부여받은 우선순위에 따라 해당 우선순위의 큐에 삽입
- 상단의 큐에 있는 모든 프로세스의 작업이 끝나야 다음 우선순위 큐의 작업이 시작
다단계 피드백 큐 스케줄링
- 프로세스가 CPU를 한 번씩 할당받아 실행될 때마다 프로세스의 우선순위를 낮춤
- 다단계 큐에서 우선순위가 낮은 프로세스의 실행이 연기되는 문제를 완화
- 우선순위가 낮아져도 커널 프로세스가 일반 프로세스의 큐에 삽입되지는 않음
- 우선순위가 낮아질수록 CPU를 얻은 확률이 적어짐
- 한번 CPUF를 잡을 때 많이 작업하라고 낮은 우선순위의 타임슬라이스를 크게 설정
- 마지막 큐에 들어 있는 프로세스 (우선순위 가장 낮음)는 무한대의 타임 슬라이스를 얻음
- 마지막 큐에 들어온 순서대로 작업을 마치는 FCFS 스케줄링 방식으로 동작
'CS > OS' 카테고리의 다른 글
메모리 스와핑 [혼공컴구] (0) | 2024.01.31 |
---|---|
프로세스 동기화 [혼공컴구] (0) | 2024.01.18 |
프로세스와 스레드 [혼공컴운] (0) | 2023.12.15 |
프로세스 계층 구조 & 생성 기법 [혼공컴운] (0) | 2023.12.15 |
문맥 교환 [혼공컴운] (0) | 2023.12.14 |