OS - Cpu Scheduling - 2 / 3, 3 / 3

YOOJUN·2023년 2월 7일

CS

목록 보기
8/18
post-thumbnail

Cpu Scheduling

  • 어떤 프로세스에게 CPU제어권을 줄 것인가

  • 평가 방법 : 성능 척도

  • 현대에는 강제로 CPU를 빼앗는 스케줄링 방법(선점형)이 주로 사용된다.

1. FCFS (First Come, First Served)

  1. 선입 선출방식 (비효율적)
  2. 어떤 프로세스인지, 우선순위인지를 구별하지 않고 먼저 오는 순서대로 처리한다.
  3. CPU권한이 부여되면 자발적으로 반납하지 않는 이상 계속 사용
  4. CPU를 길게 쓰는 I/O가 CPU를 점유하게 되면, 이후 다른 CPU Bound잡들이 대기하게 되므로 비효율적이다.
  5. 긴 Job으로 인해 짧은 Job들이 큐에서 대기하는 현상을 Convoy Effect라고 칭한다.

2. SJF (Shortest Job First)

  1. 스케줄링 기법 중 평균 대기 시간이 가장 짧다는 장점.
  2. 긴 Job이 영원히 기다릴 수 있는 (starvation)현상의 위험.
  3. preemptive : 짧은 job이 CPU를 점유하는 도중 더 짧은 job이 오면 CPU를 뺏긴다.
  4. nonpreemptive : 작업을 다 끝낸 이후에 가장 짧은 job이 CPU를 얻는다.

3. Priority

  1. 우선순위가 제일 높은 Process 먼저 CPU를 획득
  2. starvation 현상 발생 가능
  3. Aging 기법으로 starvation 현상을 방지하는데, 우선 순위가 낮은 Process가 오래 기다리게 되면, 기다린 만큼 우선 순위가 올라가서 CPU를 점유할 수 있게 한다.

4. Round Robin

  1. CPU를 정해진 시간만큼만 줘서 job의 종료 여부와 관계없이 CPU를 빼앗는다.
  2. process들이 CPU를 최초로 얻을 수 있는 응답시간이 빨라진다.
  3. CPU를 길게 쓰는 process는 CPU를 기다리는 시간이 길어지게 되고, 점유 시간이 길수록 FCFS와 같아지고, 짧을수록 문맥 교환이 잦아지기 때문에 시스템 전체 성능이 떨어진다.

5. Multilevel Queue

  1. 우선 순위가 각기 다른 레디큐를 여러개 둔다.
  2. 1순위 큐에 있는 process가 먼저 CPU를 사용하고, 이후 순위에 따라 CPU를 사용.
  • 두 개의 큐가 있다면 interactiva한 process인 forground가 CPU를 많이 사용하게 된다.
  • 이 때 우선순위가 낮은 background의 process들에게 startvatuin현상이 빚어지는 것을 방지하기 위해서 time slice를 둔다.

6. Multiple-Processor Scheduling

7. Real-time Scheduling

  1. Hard Real-Time system : 반드시 정해진 시간 내에 작업을 종료하도록 스케줄링 해야한다. ex) 자동차의 에어백
  2. Soft Real-Time system : 일반 프로세스에 비하여 높은 중요성을 갖고 task를 실행한다. ex)정해진 처리 시간을 넘기면 성능이 감소하는 경우
  • Event Latency : 이벤트가 발생하고 나서부터 응답할 때 까지의 시간

8. Thread Scheduling

  1. User Level Thread : process 내부에서만 thread의 존재를 알고, 커널은 존재를 모른다. 사용자 프로세스가 직접 thread를 관리한다.
  2. Kernel Level Thread : 커널이 프로세스 내부의 thread의 존재를 안다.
  3. Local Scheduling : 사용자 프로세스가 CPU에서 동작중일 때 프로세스가 직접 어떤 thread에게 CPU를 줄지 스케줄링
  4. Global Scheduling : 커널이 thread의 존재를 알고 직접 관리하고 CPU 스케줄링한다.
profile
거북이 개발자

0개의 댓글