728x90
CPU 스케줄링
- CPU 스케줄러 : 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 함
- 스케줄링 : 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일
스케줄링의 단계
- 고수준 스케줄링
- 고수준(high level), 장기(long-term), 작업(job), 승인(admission) 스케줄링
- 가장 큰 틀에서 이루어지는 CPU 스케줄링
- 전체 작업의 수를 조절 (작업 : 일의 가장 큰 단위, 1개 또는 여러 개의 프로세스로 이루어짐)
- 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수 결정
- 저수준 스케줄링
- 저수준(low level), 단기(short-term) 스케줄링
- 가장 작은 단위의 스케줄링
- 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정
- 중간수준 스케줄링
- 중간 수준(middle level) 스케줄링
- 고수준 스케줄링과 저수준 스케줄링 사이에 일어나는 스케줄링
- 중지(suspend)와 활성화(active)로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막음
스케줄링의 목적
- 공평성 : 모든 프로세스가 자원을 공평하게 배정받아야 함
- 효율성 : 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링하고, 유휴 자원 사용하려는 프로세스는 우선권 부여해야 함
- 안정성 : 우선순위 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유/파괴라여는 프로세스로부터 자원을 보호해야 함
- 확장성 : 프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 함
- 반응 시간 보장 : 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 함
- 무한 연기 방지 : 특정 프로세스의 작업이 무한히 연기되어서는 안 됨
선점형 스케줄링과 비선점형 스케줄링
- 선점형 스케줄링
- 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식
- 문맥 교환 같은 부가적인 작업으로 낭비가 생김
- 빠른 응답 시간을 요구하는 대화형 시스템, 시분할 시스템에 적합
- 대부분의 저수준 스케줄러에서 사용하는 방식
- 비선점형 스케줄링
- 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식
- 선점형보다 작업량이 적고 문맥 교환에 의한 낭비도 적음
- 기다리는 프로세스가 많아 시스템 처리율이 떨어짐
- 과거의 일괄 작업 시스템에서 사용하던 방식
프로세스 우선순위
- 커널 프로세스와 일반 프로세스
- 커널 프로세스의 우선순위가 일반 프로세스보다 높음
- 우선 순위가 높다 = 더 빨리 자주 실행된다
- 일반 프로세스에서도 중요도에 따라 우선순위가 다름
- 일반 프로세스의 우선순위는 사용자가 조절 가능
- 우선순위를 조절할 때는 해당 프로세스뿐 아니라 다른 프로세스의 실행 속도에도 영향을 미친다는 것 주의!
- CPU 집중 프로세스와 입출력 집중 프로세스
- CPU 집중 프로세스 : 수학 연산과 같이 CPU를 많이 사용하는 프로세스, CPU 버스트가 많은 프로세스
(* CPU 버스트 : CPU를 할당받아 실행하는 작업) - 입출력 집중 프로세스 : 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스, 입출력 버스트가 많은 프로세스 (* 입출력 버스트 : 입출력 작업)
- CPU 집중 프로세스와 입출력 집중 프로세스가 같이 있을 때는 입출력 집중 프로세스를 먼저 실행 상태로 옮기는 것이 효율적 → 사이클 훔치기 (cycle stealing)
- 전면 프로세스와 후면 프로세스
- 전면 프로세스 (상호작용, 대화형 프로세스) : GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스, 현재 입출력을 사용하는 프로세스
- 후면 프로세스 (일괄 작업 프로세스) : 사용자와 상호작용이 없는 프로세스
- 전면 프로세스의 우선순위가 후면 프로세스보다 높음
다중 큐
- 준비 큐
- 우선순위에 따라 여러 개의 큐를 만들어서 보다 편리하게 높은 우선순위의 프로세스에 CPU를 할당
- 한 번에 하나의 프로세스를 꺼내어 CPU 할당
- 대기 큐
- 같은 입출력을 요구한 프로세스끼리 모아 시스템 효율 높임
- 여러 개의 프로세스 제어 블록을 동시에 꺼내어 준비 상태로 옮김
- 시스템에는 많은 입출력장치가 있기 때문에 입출력이 동시에 끝날 경우 여러 개의 인터럽트 한꺼번에 처리됨
- 인터럽트 벡터 : 동시에 끝나는 인터럽트를 처리하기 위해 사용하는 자료구조
- 프로세스 우선순위 배정 방식
- 고정 우선순위 방식
- 운영체제가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식
- 우선순위가 변하지 않아 구현 쉬움
- 시스템 변화에 대응하기 어려워 작업 효율 떨어짐
- 변동 우선순위 방식
- 프로세스 생성 시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
- 구현 어려움
- 시스템 효율성 높일 수 있음
- 반전 우선순위 : 프로세스의 낮은 우선순위를 높은 우선순위로 바꾸는 것
728x90
'CS > Operating System' 카테고리의 다른 글
[OS] 프로세스 간 통신 (0) | 2021.12.05 |
---|---|
[OS]CPU 스케줄링 알고리즘 (0) | 2021.12.02 |
[OS] 스레드 (0) | 2021.11.02 |
[OS] 프로세스 (0) | 2021.11.02 |
[OS] 운영체제 개요 (0) | 2021.11.02 |
댓글