[운영체제] Chapter 5. CPU Scheduling (1), (2)
2022. 12. 22. 19:08ㆍCS/운영체제
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
CPU and I/O Bursts in Program Execution, CPU-burst Time의 분포, 프로세스의 특성 분류, CPU Scheduler & Dispatcher, Scheduling Algorithms, Scheduling Criteria, FCFS(First-Come First-Served), SJF(Shortest-Job-First), Example of Non-Preemptive SJF, Example of Preemptive SJF, 다음 CPU Burst Time의 예측, Expotemtial Averaging, Priority Scheduling, Round Robin(RR), Multilevel Queue, Multilevle Feedback Queue, Multi-Processor Scheduling, Real-time Scheduling, Thread Scheduling, Algorithm Evaluation
1. CPU 버스트(burst)와 I/O 버스트
- 사용자 프로그램이 수행되는 과정은 CPU 작업과 I/O 작업의 반복으로 구성된다.
- CPU 버스트: 사용자 프로그램이 직접 CPU를 가지고 수행하는 비교적 빠른 명령을 수행하는 일련의 단계
- load, stoare, add, read 명령: CPU 내에서 일어나는 명령이나 메모리를 접근하는 명령
- 사용자 프로그램이 직접 실행할 수 있는 일반명령
- I/O 버스트: I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계
- 입출력을 수반하는 명령은 CPU나 메모리 접근 명령에 비해 오랜 시간이 소요된다.
- 모든 입출력 명령은 특권명령으로 운영체제를 통해 서비스를 대행
1-1. 프로세스의 특성 분류
- 각 프로그램마다 CPU 버스트와 I/O 버스트가 차지하는 비율이 균일하지는 않다.
- I/O 바운드 프로세스: I/O 요청이 빈번해 CPU 버스트가 짧게 나타나는 프로세스
- CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
- 주로 사용자로부터 interaction을 계속 받아가며 프로그램을 수행시키는 대화형 프로그램
- 짧고 빈번한 CPU 버스트로 구성
- CPU 바운드 프로세스: I/O 작업을 거의 수행하지 않아 CPU 버스트가 길게 나타나는 프로세스
- 프로세스 수행의 상당 시간을 입출력 작업 없이 CPU 작업에 소모하는 계산 위주의 프로그램
- 소수의 긴 CPU 버스트로 구성
- I/O 바운드 프로세스: I/O 요청이 빈번해 CPU 버스트가 짧게 나타나는 프로세스
- 여러 종류의 프로세스들이 섞여 있기 때문에 CPU 스케줄링이 필요하다.
- interactive job(= CPU 버스트가 짧은 프로세스, I/O 바운드 프로세스)에게 우선적으로 CPU를 사용할 수 있도록 하는 스케줄링이 필요로 하다.
- CPU를 조금만 사용하면 바로 I/O 작업을 하러 갈 것인데 CPU를 사용하지 못하면 I/O 작업을 하러 갈 수도 없고
- 사람과 interaction을 많이 하는 작업이기 때문에 적절한 response가 시간 내에 필요하다.
- CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용할 수 있다.
- interactive job(= CPU 버스트가 짧은 프로세스, I/O 바운드 프로세스)에게 우선적으로 CPU를 사용할 수 있도록 하는 스케줄링이 필요로 하다.
2. CPU 스케줄러와 디스패치(Dispatcher)
CPU 스케줄러는 운영체제 안에 있는 CPU 스케줄링을 하는 코드(SW), 운영체제 코드의 일부
- CPU 스케줄러: 준비(Ready) 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지 결정하는 운영체제의 코드
- CPU 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우
- Running → Blocked (예. I/O를 요청하는 시스템 콜처럼 자진해서 CPU를 내놓는 상황)
- Running → Ready (예. 할당시간만료로 timer interrupt처럼 CPU를 빼앗기는 상황)
- Blocked → Ready (예. I/O 완료 후 인터럽트하고 바로 CPU를 얻을 수 있는 권한을 주는 상황)
- Terminate
- 비선점형 스케줄링 nonpreemptive: CPU를 획득한 프로세스가 CPU를 스스로 반납하기 전까지는 CPU를 빼앗지 않는 방법
- Running → Blocked, Terminate
- 선점형 스케줄링 preemptive: 강제로 CPU를 빼앗을 수 있는 방법, 현대적인 CPU 스케줄링
- 할당 시간을 부여한 후 타이머 인터럽트를 발생시키는 방법이 대표적
- Running → Ready, Blocked → Ready (우선순위가 높은 경우)
- CPU 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우
- 디스패치(Dispatcher): 새롭게 선택된 프로세스가 CPU를 할당받고 작업을 수행할 수 있도록 환경설정을 하는 운영체제의 코드, 이 과정을 문맥 교환이라 한다.
- 디스패치 지연시간(dispatch latency): 디스패처가 하나의 프로세스를 정지시키고 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간, 디스패치 지연시간의 대부분은 문맥교환 오버헤드에 해당된다.
3. 성능 척도 (Scheduling Criteria)
Performance Index (= Performance Measure, 성능 척도)
- 시스템 관점 지표(CPU 하나로 최대한 많은 일을 하는 것)
- CPU 이용률 (CPU utilization): 전체 시간에서 CPU가 놀지 않고 일한 시간의 비율, CPU as busy as possible
- 처리량 (Throughput): 주어진 시간 동안 준비 큐에서 기다리고 있는 프로세스 중 몇 개를 끝마쳤는지
- 사용자 관점 지표(얼마나 빨리 할 수 있는지)
- Turnaround time (소요 시간, 반환 시간): CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU 버스트가 끝날 때까지 걸린 시간
- 준비 큐에서 기다린 시간 + 실제로 CPU를 사용한 시간의 합
- 하나의 프로세스라 하더라도 소요시간은 CPU 버스트의 수만큼 각각 별도로 측정
- 대기 시간 (Waiting time): CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합
- 한 번의 버스트 중에도 준비 큐에서 기다린 시간이 여러 번 발생할 수 있다
- 응답 시간 (Response time): 프로세스가 준비 큐에 들어온 후 첫 번째 CPU를 획득하기까지 걸리는 시간
- 타이머 인터럽트가 빈번히 발생할수록 각 프로세스가 CPU를 연속적으로 사용할 수 있는 시간이 짧아짐
→ 처음 CPU를 얻기까지 걸리는 시간은 줄어들어
→ 응답 시간 향상
- 타이머 인터럽트가 빈번히 발생할수록 각 프로세스가 CPU를 연속적으로 사용할 수 있는 시간이 짧아짐
- Turnaround time (소요 시간, 반환 시간): CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU 버스트가 끝날 때까지 걸린 시간
4. 스케줄링 알고리즘
4-1. FCFS(First-Come First-Served), 선입선출 스케줄링
- 프로세스가 준비 큐에 도착한 시간을 순서대로 CPU를 할당하는 방식
- CPU를 먼저 요청한 프로세스에게 CPU를 먼저 할당하고, 그 프로세스가 자발적으로 CPU를 반납할 때까지 빼앗지 않는 비선점형 스케줄링 방식이다.
- 먼저 도착한 프로세스의 성격에 따라 평균 대기시간이 크게 달라진다.
- CPU 버스트가 긴 프로세스를 먼저 수행하게 되면 대기시간은 물론 I/O 장치들의 이용률까지도 동반 하락
- 콘보이 현상(Convoy effect): CPU 버스트가 짧은 프로세스가 CPU 버스트가 긴 프로세스보다 나중에 도착해 오랜 시간을 기다려야 하는 현상
4-2. SJF(Shortest-Job-First), 최단작업 우선 스케줄링
- CPU 버스트가 가장 짧은 프로세스에게 제일 먼저 CPU를 할당하는 방식
- 비선점형(nonpreemptive) 방식: 현재 CPU를 점유하고 있는 프로세스가 CPU 버스트를 모두 수행하고 스스로 CPU를 내어놓을 때까지 스케줄링을 하지 않음
- 선점형(preemptive) 방식: 현재 수행 중인 프로세스의 남은 버스트 시간보다 더 짧은 CPU 버스트 시간을 가지는 새로운 프로세스가 도착하면 현재 수행 중인 프로세스에게서 CPU를 선점해 CPU 버스트 시간이 더 짧은 프로세스에게 할당
- 선점형 구현 방식을 SRTF(Shortest Remaining Time First)라고도 부른다.
- 주어진 프로세스들에 대해 최소 평균 대기 시간을 보장하는 최적 알고리즘(optimal algorithm)이다.
- SJF의 문제
- starvation 기아 현상: CPU 버스트가 짧은 프로세스에게만 CPU를 할당할 경우 CPU 버스트가 긴 프로세스는 준비 큐에 줄 서서 무한정 기다려야 하는 문제가 발생, CPU 버스트가 짧은 프로세스가 계속 도착할 경우 버스트가 긴 프로세스는 영원히 CPU를 할당받지 못할 수도 있다.
- CPU 사용 시간을 미리 알 수 없음 → 과거의 CPU 버스트 시간을 이용한 예측치가 가장 짧은 프로세스에게 CPU를 할당(expotential averaging)
- 다음번 CPU burst time은 과거의 CPU brust time을 이용해서 추정만이 가능하다.
- (n+1) 번째 CPU brust 예측 값 = 실제 (n) 번째 CPU brust 값 * (1 - α) + n번 째 CPU brust 예측 값 * α
- 0 <= α <= 1 ~ α, (1-α)를 곱하면 곱할수록 값이 줄어듦 = 직전 값을 더 많이 반영한다.
4-3. Priority Scheduling, 우선순위 스케줄링
- 준비 큐에서 기다리는 프로세스들 중 우선순위가 가장 높은 프로세스에게 제일 먼저 CPU를 할당하는 방식
- 각 프로세스마다 우선순위를 나타내는 숫자가 주어지고, 주로 우선순위값이 작을수록 높은 우선순위를 가지는 것으로 가정
- SJF는 일종의 우선순위 스케줄링이다. priority = predicted next CPU brust time
- 비선점형(nonpreemptive) 방식: 일단 CPU를 얻었으면 비록 우선순위가 더 높은 프로세스가 도착하더라도 CPU를 자진 반납하기 전까지 선점하지 않음
- 선점형(preemptive) 방식: 현재 CPU에서 수행 중인 프로세스보다 우선순위가 높은 프로세스가 도착하여 CPU를 선점해서 새롭게 도착한 프로세스에게 할당
- Problem - Starvation 기아 현상: 우선순위가 높은 프로세스가 계속 도착하는 상황에서 우선순위가 낮은 프로세스는 CPU를 얻지 몫한 채 계속 기다려야 할 수 있다.
- Solution - Aging 노화 기법: 기다리는 시간이 길어지면 우선순위를 조금씩 높여, 언젠가는 가장 높은 우선순위가 되어 CPU를 할당받을 수 있게 해주는 방법
4-4. RR(Round Robin), 라운드 로빈 스케줄링
- 각 프로세스가 CPU를 연속적으로 사용할 수 있는 시간이 특정 시간으로 제한되며, 이 시간이 경과하면 해당 프로세스로부터 CPU를 회수해 준비 큐에 줄 서 있는 다른 프로세스에게 CPU를 할당하는 방식
- 각 프로세스는 동일한 크기의 할당 시간(time quantum)을 가짐
- 일반적으로 할당시간을 10 ~ 100ms로 설정
- 할당 시간이 너무 길면 FCFS와 같은 결과를 가진다.
- 할당 시간이 너무 짧으면 문맥 교환 오버헤드가 커진다.
- 일반적으로 할당시간을 10 ~ 100ms로 설정
- n개의 프로세스가 준비 큐에 있고, 할당 시간이 q time unit인 경우
→ 어떤 프로세스도 (n-1)q time unit 이상 기다리지 않는다 ~ 빠른 응답시간을 보장 - 공정한 스케줄링 방식
- CPU를 쓰고자 하는 양이 적으면 소요시간이 짧고, 양이 많으면 소요시간도 비례해 길어진다.
- I/O 바운드 job은 한 번의 할당시간에 처리하고 나가서 빠른 응답시간을 받고, CPU 바운드 job도 무작정 양보만 할 것이 아니고 할당 시간만큼 쓰고 뒤에 가서 줄 서 있게 하는 방법: IO 바운드 job과 CPU 바운드 job을 걸러내는 의미를 가지고 있음
- 대기시간 역시 자신이 사용하는 CPU 버스트 시간에 비례해 증가하므로 합리적이다.
- 기본적으로 CPU 버스트 시간을 알 수 없는 상황에 CPU 버스트가 길고 짧은 프로세스가 섞여 있는 상황에 적합하다.
- 만약, CPU 버스트가 비슷한 작업들(homogeneous job)끼리 모여있다면? 별로 효과가 없다, average tuarnaround time이 길어진다.
- CPU를 쓰고자 하는 양이 적으면 소요시간이 짧고, 양이 많으면 소요시간도 비례해 길어진다.
- 일반적으로 SJF보다 average turnaround time이 길지만, 최초로 CPU를 얻는 response time은 더 짧다.
- 현대적인 컴퓨터 시스템에서 사용하는 CPU 스케줄링은 RR에 기반
4-5. Multilevel Queue, 멀티레벨 큐
- 준비 큐를 여러 개로 분할해 관리하는 스케줄링 방식
- 멀티레벨 큐는 일반적으로 성격이 다른 프로세스들을 별도로 관리하고, 프로세스의 성격에 맞는 스케줄링을 적용하기 위해 준비 큐를 별도로 두게 된다.
- foreground queue (전위 큐) - interactive
- RR - 빠른 응답을 필요로 하는 대화형 작업
- background queue (후위 큐) - batch - no human interaction: 계산 위주의 작업
- FCFS - 계산 위주의 작업에서는 응답시간이 큰 의미를 가지지 않아 문맥 교환 오버헤드를 줄이는 것에 집중
- foreground queue (전위 큐) - interactive
- 큐에 대한 스케줄링: 여러 개의 준비 큐에 대해서 어느 큐에 먼저 CPU를 할당할 것인지 결정
- 고정 우선순위 방식(Fixed priority scheduling)
- 큐에 고정적인 우선순위를 부여해 우선순위가 높은 큐를 먼저 서비스하고 우선순위가 낮은 큐는 우선순위가 높은 큐가 비어 있을 때에만 서비스하는 방식
- 기아 현상을 유발할 수 있음
- 타임 슬라이스 방식(Time slice)
- 각 큐에 CPU time을 적절한 비율로 할당하는 방식으로 큐에 대한 기아 현상을 해소할 수 있다.
- 예) 전체 CPU 시간 중 전위 큐에는 80%, 후위 큐에는 20%를 할당해 스케줄링
- 고정 우선순위 방식(Fixed priority scheduling)
- 우선순위: system(시스템과 관련) > interactive(사람과) > interactive editing > batch(일괄적 작업) > student processes
- 멀티레벨 큐는 우선순위가 높은 프로세스가 더 빨리 CPU를 얻는 차별적인 스케줄링 기법이다.
우선순위가 낮은 큐는 우선순위가 높은 큐보다 빨리 서비스를 받을 수 없는 것을 극복한 방법 → 멀티레벨 피드백 큐
4-6. Multilevel Feedback Queue, 멀티레벨 피드백 큐
- CPU를 기다리는 프로세스를 여러 큐에 줄 세운다는 측면에서 멀티레벨 큐와 동일하나, 프로세스가 하나의 큐에서 다른 큐로 이동 가능한 스케줄링 방식
- 상위에 있는 큐일수록 우선순위가 높으며, 상위 2개의 큐는 각각 할당시간이 8, 16인 라운드 로빈 스케줄링을 사용한다. 세 번째 큐는 FCFS 스케줄링 기법을 사용한다.
- 프로세스가 준비 큐에 도착하면 우선순위가 가장 높은 큐에 줄을 선다.
- CPU 사용시간이 짧은 대화형 프로세스들은 우선순위가 가장 높은 큐에서 빨리 서비스받고 작업을 완료할 수 있다.
- 8만큼의 시간 동안 CPU를 사용하고도 작업을 완료할 수 없는 CPU 버스트 시간이 긴 프로세스들은 할당시간이 16인 하위 큐로 내려가서 줄을 선다.
- 하위 큐에서 본인 차례가 되어 할당시간 16을 추가로 사용하고도 작업이 완료되지 않으면, 이 프로세스는 CPU를 오래 사용하는 계산위주의 프로세스로 간주되어 최하위 큐로 이동하고 FCFS 스케줄링을 적용받게 된다.
- Multilevel-feedback-queue scheduler를 정의하는 파라미터들
- Queue의 수
- 각 큐의 scheduling algorithm
- process를 상위 큐로 보내는 기준
- process를 하위 큐로 내쫓는 기준
- 프로세스가 CPU의 서비스를 받으려 할 때 들어갈 큐를 결정하는 기준
- 큐에 대한 스케줄링 방식: 최상위 큐가 우선적으로 CPU를 배당받고, 상위 큐가 비었을 때만 하위 큐에 있는 프로세스들이 CPU를 할당받을 수 있게 된다.
- 라운드 로빈 스케줄링을 한층 더 발전시켜
- 작업시간이 짧은 프로세스일수록 우선순위가 많이 주어져 더욱 빠른 서비스가 가능하고,
- 작업시간이 긴 프로세스에 대해서는 문맥교환 없이 CPU작업에만 열중할 수 있는 FCFS 방식을 채택
- CPU 사용시간이 긴지 짧은지 예측할 필요가 없다
- 멀티 레벨 피드백 큐에는 에이징(aging)과 같은 방식으로 구현하는 것이 가능하기 때문에 기아현상을 해소할 수 있다. 여러 큐를 옮겨갈 수 있다.
4-7. Multiple-Processor Scheduling, 다중처리기 스케줄링
- CPU가 여러 개인 시스템을 다중처리기 시스템(multi-processor system)이라고 부른다.
- Homogeneous processor인 경우
- 큐에 한 줄로 세워서 각 프로세스가 알아서 꺼내갈 수 있다
- 각 CPU별로 줄 세우기를 할 수도 있다.
- 반드시 특정 프로세서에서 수행되어야 하는 프로세스가 있는 경우에는 복잡
- Load sharing
- 여러 줄로 줄 세우기를 하는 경우 일부 CPU에 작업이 편중되는 현상이 발생할 수 있다.
- 일부프로세서에 job이 몰리지 않도록 부하를 적절히 분산되도록 하는 부하균형(load balancing) 메커니즘 필요
- 별개의 큐를 두는 방법 vs 공동의 큐를 사용하는 방법
- 여러 줄로 줄 세우기를 하는 경우 일부 CPU에 작업이 편중되는 현상이 발생할 수 있다.
- Systemmetric Multiprocessing(SMP, 대칭형 다중처리): 각 CPU가 각자 알아서 스케줄링을 결정하는 방식
- Asymmetric multiprocessing(비대칭형 다중처리): 하나의 CPU가 다른 모든 CPU의 스케줄링 및 데이터 접근을 책임지고 나머지 CPU는 거기에 따라 움직이는 방식
4-8. Real-Time Scheduling, 실시간 스케줄링
- 실시간 시스템에서는 각 작업마다 주어진 데드라인이 있어 정해진 데드라인 안에 반드시 작업을 처리해야 한다.
- Hard-real-time system(경성 실시간 시스템): 정해진 시간 안에 반드시 끝내도록 스케줄링해야 하는 시스템
- 보통은 미리 스케줄링하여 데드라인이 보장되도록 적재적소에 배치한다.
- Soft-real-time system(연성 실시간 시스템): 데드라인이 존재하는 프로세스에게 일반 프로세스 보다 높은 priority를 할당하는 시스템
- 데드라인이 존재하지만 데드라인을 지키지 못했다고 해서 위험한 상황이 발생하지는 않는다.
- 동영상 스트리밍 서비스(초당 60 프레임을 보내야 한다 같이 주기적으로 일을 해야 하는 경우)
4-9. Thread Scheduling, 스레드 스케줄링
- 스레드(thread): 프로세스 하나 안에 CPU 수행 단위가 여러 개 있는 것
- Local Scheduling
- User level thread: 사용자 프로세스가 직접 스레드를 관리하고 OS는 그 스레드의 존재를 모르는 경우
- 사용자 수준의 thread library에 의해 어떤 thread를 스케줄할지 결정
- OS는 그 프로세서에게 CPU를 줄지 말지를 결정하고, 그 프로세스가 CPU를 할당받으면 어떤 스레드에게 CPU를 줄지는 프로세스 내부에서 결정
- Global Scheduling
- kernel level thread: OS가 스레드의 존재를 이미 알고 있는 상황
- 커널의 단기 스케줄러가 어떤 스레드를 스케줄 할지 결정
5. 스케줄링 알고리즘의 평가
- Queueing models(큐잉모델): 주로 이론가들이 수행하는 방식으로, 확률 분포로 주어지는 arrival rate와 service rate 등을 통해 각종 성능척도 값을 계산
- arrival rate: 프로세스가 도착하는 도착률
- service rate: 단위 시간당 몇 개를 처리할 수 있는지 CPU의 처리 능력인 처리율
- Implementation & Measurement(구현 및 실측): 주로 구현가들이 수행하는 방식으로, 실제 시스템에 알고리즘을 구현하여 실제 작업(workload)에 대해서 성능을 측정 비교
- Simulation(모의실험): 실제 시스템에 구현해 수행시켜 보는 것이 아니라 알고리즘을 모의 프로그램으로 작성 후 trace를 입력으로 하여 결과를 비교
- trace: 실제 씨틈에서 추출한 입력값, 몇 초에 어떤 프로세스가 도착하고, 각각 CPU 버스트 시간을 얼마로 하는지에 대한 정보를 시간 순서대로 적어놓은 파일
[복습]
- 프로세스의 특성 분류
- I/O 바운드 프로세스: I/O 요청이 빈번해 CPU 버스트가 짧게 나타나는 프로세스
- CPU 바운드 프로세스: I/O 작업을 거의 수행하지 않아 CPU 버스트가 길게 나타나는 프로세스
- CPU 버스트: 사용자 프로그램이 직접 CPU를 가지고 수행하는 비교적 빠른 명령을 수행하는 일련의 단계
- I/O 버스트: I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계
- CPU 버스트가 짧은 프로세스, I/O 바운드 프로세스에게 우선적으로 CPU를 사용할 수 있도록 하는 스케줄링이 필요하다
- CPU 스케줄러: 준비 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지를 결정하는 운영체제의 코드
- 비선점형 스케줄링 nonpreemptive: CPU를 획득한 프로세스가 CPU를 스스로 반납하기 전까지는 CPU를 빼앗지 않는 방법
- 선점형 스케줄링 preemptive: 강제로 CPU를 빼앗을 수 있는 방법
- 디스패치: 새롭게 선택된 프로세스가 CPU를 할당받고 작업을 수행할 수 있도록 환경 설정을 하는 운영체제의 코드, 문맥교환의 과정
- 성능척도
- CPU 이용률(cpu utilization): 전체 시간에서 CPU가 놀지 않고 일한 시간의 비율
- 처리량(throughput): 주어진 시간 동안 준비 큐에서 기다리고 있는 프로세스 중 몇 개를 끝냈는지
- Turnaround time: CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU 버스트가 끝날 때까지 걸린 시간
- 대기시간(waiting time): CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합
- 응답시간(response time): 프로세스가 준비 큐에 들어온 후 첫 번째 CPU를 획득하기까지 걸리는 시간
- 스케줄링 알고리즘
- FCFS: 프로세스가 준비 큐에 도착한 시간을 순서대로 CPU를 할당하는 방식, 비선점형
- SJF: CPU 버스트가 가장 짧은 프로세스에게 제일 먼저 CPU를 할당하는 방식, 비선점형, 선점형(SRTF), 기아현상
- Priority Scheduling: 준비 큐에서 기다리는 프로세스들 중 우선순위가 가장 높은 프로세스에게 제일 먼저 CPU를 할당하는 방식, 비선점형, 선점형, 기아현상, aging 기법
- RR: 각 프로세스가 CPU를 연속적으로 사용할 수 있는 시간이 특정 시간으로 제한되며, 이 시간이 경과되면 해당 프로세스로부터 CPU를 회수해 준비 큐에 줄 서 있는 다른 프로세스에게 CPU를 할당하는 방식 ~ 빠른 응답시간을 보장
- Multilevel Queue: 준비 큐를 어려 개로 분할해 관리하는 스케줄링 방식, foreground queue(RR), background queue(FCFS), 고정 우선순위 방식(기아 현상 유발), 타임 슬라이스 방식
- Multilevel Feedback Queue: CPU를 기다리는 프로세스를 여러 큐에 줄 세운다는 측면에서 멀티레벨 큐와 동일하나, 프로세스가 하나의 큐에서 다른 큐로 이동 가능한 스케줄링 방식, Q0와 Q1(RR - 빠른 서비스), Q2(FCFS - 문맥교환 오버헤드 줄임)
- Multiple-Processor Scheduling: Systemmetric Multiprocessing, Asymmetric multiprocessing
- Real-Time Scheduling: hard-real-time system, soft-real-time system
- Thread Scheduling: local scheduling, global scheduling
- 스케줄링 알고리즘의 평가: Queueing models, implementation & Measurement, Simulation
이화여자대학교 반효경 교수님의 [2014년 1학기 운영체제], [2017년 1학기 운영체제] 강의 정리입니다.
반효경 교수님의 [운영체제와 정보기술의 원리] 교재를 참고하였습니다. 감사합니다.
https://core.ewha.ac.kr/publicview/C0101020140325134428879622?vmode=f
https://core.ewha.ac.kr/publicview/C0101020140328151311578473?vmode=f
https://core.ewha.ac.kr/publicview/C0101020140401134252676046?vmode=f
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] Chapter 6. Process Synchronization (2) (1) | 2022.12.24 |
---|---|
[운영체제] Chapter 6. Process Synchronization (1) (0) | 2022.12.23 |
[운영체제] Chapter 4. Process Management (2) (2) | 2022.12.20 |
[운영체제] Chapter4. Process Management (1) (0) | 2022.12.15 |
[운영체제] Chapter 3. Process(2) (0) | 2022.12.14 |