Fundamental Notes/Operating Systems

CPU Scheduling

콩콩댕 2009. 1. 7. 20:11
반응형

1.Basic Concepts

    - 다중프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행 중인 프로세스를 가지게 하는데 있다.

    - CPU가 유휴 상태가 될 때마다, OS는 준비 완료 큐에 있는 프로세스들 중에서 하나를 실행해야한다. *반드시 FIFO 방식의 큐가 아니어되 된다.

    - CPU scheduling decisions may take place when a process.

       :Switches from running to waiting state.(입/출력 요청, 자식프로세스중 하나가 종료되기 위해 wait를 호출) ->Non preemptive.

       :Switches from running to ready state.(인터럽트 발생) ->preemptive.

       :Switches from waiting to ready(입/출력 종료) ->preemptive.

       :Terminates ->Non preemptive.

2.Dispatcher

    - CPU의 제어를 단기 스케줄러가 선택한 프로세스에게 주는 모듈, 다음을 호함.

       :switching context.

       :switching to user mode.

       :프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동하는 일.

     - dispatch latency : 하나의 프로세스를 정지하고 다른 프로세스의 수행을 시작하는 데까지 소요되는 사간.

3.Scheduling Criteria(스케쥴링 기준)

     - CPU 이용률(utilization): 가능한 한 CPU를 최대로 바쁘게 유지하기를 원함.(40~90%까지 범위를 갖는다.)

     - 처리량(throughput): 단위 시간당 완료된 프로세스의 개수.

     - 총처리 시간(turnaround time): 프로세스의 제출 시간과 완료 시간의 차이(메모리에 들어가기 위해 기다린시간, ready queue에서 대기한시간, CPU에서 실행한 시간, 입/출력 시간의 합)

     - 대기 시간(waiting time): ready queue에서 대기하면서 보낸 시간의 합.

     - 응답 시간(response time): 요구를 제출한 후 첫번째 응답이 나올 때까지의 시간(응답이 시작되는 데 까지 걸리는 시간이지, 그 응답을 출력하는 데 걸리는 시간이 아니다.)

4.Optimization Criteria

     - Max CPU utilization

     - Max throughput

     - Min turnaround time.

     - Min waiting time.

     - Min response time.

5.First - Come, First - Served(FCFS)

     - 도착 순서대로 nonpreemptive 하게 처리 -> ready queue에 들어있는 순서대로 처리 -> I/O때문에 CPU 를 반납할 때만.

     - Time sharing 곤란.

6.Shortest - Job-First(SJF)

     - 증명된 성능최적.




 

7.Priority Scheduling(우선순위 스케쥴링)

     - CPU는 가장 높은 우선순위를 가진 프로세스에게 할당된다.

     - Problem : Starvation - 낮은 우선순위를 가진 프로세스는 CPU를 계속 얻지 못할 수 있다.

     - Solution : Aging -  오래 기다리면 우선순위를 높여준다.

8.Round-Robin

     - 각 프로세스에게 시간할당량(quantum)을 준다. 일반적으로 10-100milliseconds이다.

     - 라운드 로빈 스케줄링을 구현하기 위해, 준비 완료 큐를 프로세스들의 FIFO 큐로 유지한다.

     - 할당량 이후에는 인터럽트가 걸려 프로세스를 Dispatch 한다.

     - quantum Large -> FCFS와 다를게 없다.

     - quantum small -> context switching time이 많아져 비효율적이다.

     - 성능 : SJF > FCFS > RR  - 성능이 떨어지더라도 앞의 두개의 단점을 해결할 수 있다.

9.Multilevel Queue

     - 프로세스는 foreground(interacive)와 background(batch)로 구분될수 있다.

     - 준비완료 큐를 다수의 별도 큐로 나눈다, 큐 사이에는 스케줄링이 반드시 있어야 한다.

     - foreground는 RR방식 background는 FCFS방식을 사용한다.

     - 우선순위 높은것 먼저 실행하면 starvation이 발생할 수 있다.->80% to foreground in RR, 20% to background in FCFS.

     - 시간안에 process를 끝내지 못하면 다시 같은 큐로 들어간다.



10.Multilevel Feedback Queue Scheduling

    



     - 프로세스가 큐들 사이로 이동한다. 어떤 프로세스가 CPU 시간을 너무 많이 사용하면, 낮은 우선순위의 큐로 이동한다. 이 방법에서는 입/출력 중심의 프로세스와 대화형 프로세스들을 높은 우선순위에 넣는다. 마찬가지로 낮은 우선순위으 큐에서 너무 오래 대기 하는 프로세스는 높은 우선순위의 큐로 이동할 수 있다.(starvation 방지)

11.Multiple-Processor Scheduling

     - 여러개의 CPU를 사용 하면 스케줄링 문제는 복잡해진다.

     - 각 프로세서가 독자적으로 스케줄링을 하면 프로세스가 여러 프로세서에게 뽑히기도 하고 큐에서 사라져 버리기도한다.

     - 비대칭 다중처리는 대칭적 다중처리보다 간단하지만 병목 현상이 될수 있다.

12.Real - Time Scheduling

     - hard real time system - 스케줄러는 프로세스가 dead line을 지킬 수 있으면 받아들인다.

     - Soft real time computing - 우선순위 스케줄링 기법을 반드시 제공해야한다. 실시간 프로세스들이 가장 높은 우선순위를 갖는다. 비 실시간 프로세스들의 우선순위가 시간에 따라 낮아진다 할지라도, 실시간 프로세스들은 낮아저서는 안된다. 디스패치 지연이 반드시 작아야 한다.


'Fundamental Notes > Operating Systems' 카테고리의 다른 글

Deadlock  (0) 2009.01.07
Process Synchronization  (0) 2009.01.07
Thread  (0) 2009.01.07
Process  (0) 2009.01.07
Operating System Structure  (0) 2009.01.07