프로세스 우선순위
- CPU 차지 속도와 점유 : 우선순위가 높은 프로세스 > 낮은 프로세스
- 우선순위 : Kernel process 우선순위 > User process 우선순위
- Kernel process와 User process들은 우선순위가 서로 다름
- User process의 우선순위는 사용자가 변경 가능
CPU burst 및 I/O burst
- CPU burst : 프로세스 실행 상태에서 CPU를 집중적으로 사용하는 시간
- I/O burst : 대기 상태에서 I/O을 집중적으로 하는 시간
- CPU bound process : CPU burst > I/O burst 인 프로세스
- I/O bound process : I/O burst > CPU burst 인 프로세스
- I/O bound proces 우선순위 > CPU bound process => 시스템 효율 향상
Foreground process
- 키보드로 표준 입력을 받아들여 실행되는 프로세스
- 사용자와의 상호작용이 가능하여 interactive process라고도 함
Background process
- 한 프로세스가 실행되는 동안 뒤에서 실행되는 프로세스
- 예: 파일 찾기는 시간이 오래 걸려, 파일 찾기 작업을 background 모드로 실행하고 foreground 모드로 다른 작업 수행
우선순위 : foreground process > background process
준비 상태의 다중 큐
- PCB의 CPU schediling information : 프로세스의 우선순위 저장소
- 준비상태의 준비 큐는 프로세스의 우선순위에 따라 다중 큐로 구성
고정 우선순위 방식
- OS에 의해 정해진 프로세스의 우선순위는 프로세스가 끝날 때까지 변함X
- 구현하기 쉽지만 시스템 변화 대응 힘듦 -> 시스템 효율성 저하
변동 우선순위 방식
- 프로세스의 우선순위는 실행 중 변함
- 구현하기 어렵지만 시스템 변화 대응 용이 -> 시스템 효율성 향상
대기 상태의 다중 큐
- 대기상태의 대기 큐는 입출력 장치의 종류에 따라 다중 큐로 구성됨(같은 I/O 요구하는 프로세스 끼리 같은 큐)
- I/O가 동시에 끝날 경우 여러 개의 interrupt가 동시에 처리됨
CPU 스케줄링
- 운영체제의 프로세스 관리를 위해 사용
- 준비 상태에 여러 프로세스 중 어느 프로세스에게 먼저 CPU를 할당하여 실행시킬 것인지 결정
CPU 스케줄링의 목적
- 공평성 : 모든 프로세스가 시스템 자원을 공평하게 배분받도록 함
- 효율성 : 시스템 자원이 유휴 시간없이 사용되도록 함
- 안정성 : 우선순위가 높은 프로세스 먼저 실행 -> 자원 보호
- 확장성 : 프로세스가 증가해도 시스템이 안정적으로 작동하도록 함
- 반응 시간 보장 : 시스템이 적절한 시간 내에 프로세스의 요구에 반응하도록 함
- 무한 연기 방지 : 특정 프로세스의 작업 무한히 연기되지 않도록 함
장기 스케줄링
중기 스케줄링
- 시스템의 과부하를 막기위해 이미 활성화된 프로세스 수 조정
단기 스케줄링
스케줄링 알고리즘의 평가 기준
- 평균 대기 시간 : 모든 프로세스의 대기 시간을 합한 뒤 프로세스의 수로 나눈 값
비선점형 스케줄링 : FCFS, SJF, HRN
FCFS 스케줄링
- 비선점형 스케줄링으로 프로세스로부터 CPU를 빼앗을 수 없음
- 준비 큐에 들어온 프로세스 순서대로 실행 -> 우선순위 사용X
- 단점 : 실행 시간이 긴 프로세스가 먼저 실행되면 뒤에 프로세스 지연
SJF 스케줄링
- 준비 큐에 있는 프로세스 중 실행 시간이 짧은 프로세스에 높은 우선순위 부여
- 단점 : 프로세스 실행 시간 정확히 계산 어려움
- 기아상태 발생 : 우선순위가 높은 프로세스가 계속 준비 큐에 들어오면 우선순위가 낮은 프로세스는 계속 지연
HRN 스케줄링
- 에이징 : 대기 시간이 긴 프로세스에게 높은 우선순위 부여
- 준비 큐에 있는 프로세스 중 실행 시간이 짧거나 대기 시간이 긴 프로세스에게 높은 우선순위 부여
- 우선순위 = (대기시간 + 실행시간) / 실행시간
- 단점 : 프로세스의 실행 시간을 정확히 계산하기 어려움
선점형 스케줄링 : RR, SRT, MLQ, MLFQ
RR 스케줄링
- 준비 큐에 들어온 프로세스 순서대로 실행
- 시분할 시스템에서 사용
- Time slice 사용 : 하나의 프로세스가 CPU 독점X -> 빠른 응답 시간을 요구하는 시스템에 적합
- Time slice가 큰 경우 : FCFS 스케줄링이랑 같음
- Time slice가 작은 경우 : 잦은 문맥 교환으로 인 해 오버헤드가
SRT 스케줄링
- RR 스케줄링 + SJF 스케줄링 혼합 방식
- 기본적으로 RR 스케줄링으로 실행되지만 준비 큐에 있는 프로세스 중 실행 시간 짧은 프로세스에게 높은 우선순위 부여
- 단점 : 프로세스의 실행 시간 정확히 계산 어려움
MLQ 스케줄링
- OS에 의해 정해진 프로세스의 우선순위에 따라 여러 준비 큐를 사용
- 각 큐는 RR 스케줄링으로 처리
- 우선순위 높은 큐 : 작은 time slice 사용
- 우선순위 낮은 큐 : 무한대 time slice 사용
- 고정 우선순위 방식 : 우선순위 변하지 않음
MLFQ 스케줄링
- MLQ 프로세스에서 우선순위 방식만 바뀜
- 변동 우선순위 방식 : 프로세스는 time slice동안 실행되고 난 다음 실행이 완료되지 않으면 우선순위가 낮아짐
- 커널 프로세스가 사용자 프로세스가 있는 큐로 이동X
- 현재 운영체제들의 일반적인 스케줄링 방식