KOCW.이화여자대학교.반효경.운영체제
위 강의를 바탕으로 학습 및 정리했습니다
1
CPU and I/O Bursts in Program Execution
- 프로세스의 일생
- 기계어 실행 하거나 I/O 하거나
- 여기서 중요한 포인트
- CPU를 오랫동안 쓰다가 I/O를 하는지
- 중간 중간 I/O가 많이 끼어들어서 CPU연속적으로 쓰는 시간이 적은 지
CPU-Burst Time 분포
- CPU-Burst Time : CPU를 한번에 얼마나 쓰느냐
- CPU bound Job : CPU 길게 쓰는 프로그램
- I/O bound Job : CPU 짧게 쓰는 프로그램
- CPU bound Job와 I/O bound Job 중에 누구에게 먼저 CPU를 주는 것이 효율적인가?
-> I/O bound Job
- I/O하러 곧가니까 그리고 사람하고 인터렉션 하는 프로그램이 많기 때문에 결과를 빨리 보여 줘야함
- CPU bound Job 한테 주면 대기 시간이 김
CPU schedular & Dispacher
- 하드웨어가 아닌 운영체제 소프트웨어 코드의 일부
- CPU Scheduler
- CPU누구한테 줄지 결정
- scsheduling은 nonpreemptive인지 preemptive인지에 따라 2가지로 나뉨
- nonpreemptive : 먼저온 순서대로
- preemptive : timer잇어서 시간되면 뺏는
- Dispatcher
- CPU Scheduler가 CPU주기로 결정한 프로세스한테 실제로 CPU를 넘기는 역할
- A에서 B로 문맥교환하는거 담당
- 빼앗기는 프로세스의 context를 save
- 얻으려는 프로세스의 context를 load
CPU scheduling 성능 척도
- 수많은 스케줄링 알고리즘 중 뭐가 좋으냐를 판단할 성능 척도
- 크게 3가지
- 이용률
- CPU를 놀리지 않고 많이 일하게 할 수록 좋은거
- 처리량
- 단위 시간 당 프로세스를 몇개 완료 시켰는지
- 시스템 입장 (얼마나 많은 일을 했느냐)
- 시간관련
- 반환시간
- 대기시간
- CPU 쓰러와서 기다린 시간의 총 합 (프로그램 종료될때까지 대기시간 다 합한거)
- 응답시간
- CPU 쓰러들어올때부터 최초로 쓸때까지의 시간
2
Scheduling Algorithm
- FCFS
- nonpreemptive
- Burst time 다 쓸때까지
FCFS
- Convoy effect(호위 효과)
- 앞에 Burst time 긴 프로세스 때문에 뒤의 프로세스들이 기다리는 시간이 길어지는 안좋은 현상 -> 효율 높이려고 짧게 쓰는 애들 부터 CPU주자 == SJF
SJF(Shortest-Job-First)
-
optimal
- 다른 어떤 알고리즘 보다도 SJF만큼 평균 waiting time이 짧을 수 없음
-
2가지 버전 있음
-
nonpreemptive
-
preemptive
- 더 짧은 프로세스가 도착하면 바로 더 짧은 프로세스한테 CPU줌
-
치명적인 약점 2가지가 있음
- Starvation을 발생시킴
- 너무 효율성만 챙기다보니 Long-job은 CPU를 못 씀
- CPU burst time을 미리 알수 없으니까 어느 프로세스가 짧은지 알 수 없음
- 막상 짧은 줄 알고 줬더니 I/O작업 하느라 길어지면??
- 그래서 이전의 CPU Burst time을 보고 현재의 Burst time을 예측함
CPU Burst time 예측
- 1-a(1보다 작은값임)의 의미는 이전의 Burst time 기록들은 갈 수록 반영을 덜 하겠다는 의미 == 직전 것이 더 신빙성이 있으므로
Priority Scheduling
- SJF도 priority의 일종
- Priority의 문제점은 Starvation이 발생할 수도 있다는 것
-> Aging : 오래기다리면 우선순위 높여서 Starvation 문제 완화
Round Robin
- 현재 스케줄링에서 가장 많이 사용하는, 근간이 되는 알고리즘
- timer에 시간을 세팅해서 시간되면 다음으로 넘김
- preemptive
- 할당 시간을 어느정도로 해야하나
- 길면 FCFS같아짐
- 너무 짧으면 context switch하느라 오버헤드 발생
- 할당시간 20인 예
Multilevel Queue
- 여러 줄 서는거
- background에는 Starvation의 가능성이 존재
Priority
Multilevel Feedback Queue
3
Multiple-Processor Scheduling
-
CPU가 여러 개인 경우 스케줄링은 더욱 복잡해짐
-
homogeneous processor인 경우
- 큐에 한줄로 세워서 각 프로세서가 알아서 꺼내가게 할 수 있다
- 반드시 특정 프로세서에서 수행되어야 하는 프로세스가 있는 경우에는 문제가 복잡해짐
-
Load sharing
- 일부 프로세서에 job이 몰리지 않도록 부하를 적절히 공유하는 메커니즘 필요
- 별개의 큐를 두는 방법 vs 공동 큐를 사용하는 방법
-
SMP, Symmetric Multiprocessing
-
Asymmetric multiprocessing
- 하나의 프로세서가 시스템 데이터의 접근과 공유를 책임지고 나머지 프로세서는 거기에 따름
- 효과적임
Real-Time Scheduling
Thread Scheduling
Algorithm Evaluation