[운영체제] CPU 스케줄링

HaYeong Jang·2021년 7월 26일
0

[CS] 운영체제

목록 보기
3/4

스케줄링이란?

CPU를 잘 사용하기 위해 프로세스를 잘 배정하는 것

스케줄링의 목적

처리율과 CPU 이용률 ↑
오버헤드, 응답시간, 반환시간, 대기시간, 기아 현상 ↓


프로세스 상태

  • New: 프로세스 생성 중
    프로세스를 생성하고 있는 단계로 커널 공간에 PCB가 만들어진 상태이다.
  • Ready: 프로세스가 CPU를 기다리는 상태
    프로세스가 메모리에 적재된 상태로, 실행하는데 필요한 자원을 모두 얻은 상태이다.
  • Running: 프로세스가 CPU를 할당받아 명령어를 수행 중인 상태
    일반적으로 CPU가 하나이기 때문에 여러 프로세스가 동시에 실행되어도 실제로 실행 중인 프로세스는 매 시점 하나뿐이다.
  • Waiting: 프로세스가 어떤 사건(event)이 일어나기를 기다리는 상태
    프로세스가 실행하다가 할당받은 CPU를 반납하고 특별한 사건을 기다린다. (ex. I/O 작업)
  • Terminated: 프로세스의 실행 종료
    프로세스의 실행이 완료되고 할당된 CPU를 반납한다.

프로세스의 상태 전이

  • 승인 (Admitted) : 프로세스 생성이 가능하여 승인받는 것
  • 스케줄러 디스패치 (Scheduler Dispatch) : 준비 상태에 있는 프로세스 중 하나를 선택하여 실행시키는 것
  • 인터럽트 (Interrupt) : 예외, 입출력, 이벤트 등이 발생하여 현재 실행 중인 프로세스를 Ready 상태로 바꾸고, 해당 작업을 먼저 처리하는 것
  • 입출력 또는 이벤트 대기 (I/O or Event wait) : 실행 중인 프로세스가 입출력이나 이벤트를 처리해야 하는 경우, 입출력/이벤트가 모두 끝날 때까지 Waiting 상태로 만드는 것
  • 입출력 또는 이벤트 완료 (I/O or Event Completion) : 입출력/이벤트가 끝난 프로세스를 준비 상태로 전환하여 스케줄러에 의해 선택될 수 있도록 만드는 것

선점 / 비선점 스케줄링

  • 선점 스케줄링: 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식 (I/O or Event wait)
  • 비선점 스케줄링: 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식 (Interrupt, Scheduler Dispatch)

CPU 스케줄링의 종류

  • 선점 스케줄링

    • RR (Round Robin)
      • 비선점인 FCFS 알고리즘을 선점 형태로 변형한 기법
      • 할당된 시간 동안만 실행한 후, 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 큐의 가장 뒤로 배치됨
      • 할당 시간이 크면 FCFS와 같게 되고, 작으면 문맥 교환(Context Switching) 잦아져서 오버헤드 증가
    • SRT (Shortest Remaining Time)
      • 비선점인 SJF 알고리즘을 선점 형태로 변경한 기법
      • 남은 실행 시간이 가장 짧은 프로세스가 먼저 수행
    • 다단계 큐 (Multi Level Queue)
      • 프로세스들을 여러 종류의 그룹으로 나누어 여러 개의 큐를 이용하는 기법
    • 다단계 피드백 큐 (Multi Level Feedback Queue)
      • 다단계 큐의 단점을 보완한 것으로, 큐마다 time out을 설정하여 시간 초과 시 우선순위가 낮은 다음 단계 큐로 이동하는 기법
  • 비선점 스케줄링

    • FCFS (First Come First Served)
      • 큐에 도착한 순서대로 CPU 할당
      • 실행 시간이 짧은 게 뒤로 가면 평균 대기 시간이 길어짐
    • SJF (Shortest Job First)
      • 도착하는 시점에 따라 수행 시간이 가장 짧은 프로세스가 먼저 수행
      • FCFS 보다 평균 대기 시간 감소, 짧은 작업에 유리
      • But, 기아 현상 발생 가능
    • HRN (Hightest Response-ratio Next)
      • 우선순위를 계산하여 기아 현상을 보완한 방법 (SJF의 단점 보완)
      • 우선순위 = (대기시간 + 실행 시간) / (실행 시간)

우선순위 스케줄링은 선점, 비선점 둘 다 가능하다. 우선순위가 낮은 프로세스가 무한정 기다리는 기아 현상이 발생 가능하지만, 에이징 방법으로 기아 현상 문제를 해결할 수 있다.

에이징(Aging): 기다린 시간에 비례하여 일정 시간이 지나면 우선순위를 한 단계씩 높여 가까운 시간 안에 자원을 할당받도록 하는 기법


💡 현재 컴퓨터 시스템이 사용하는 방법은 '우선순위 + 라운드 로빈' 방식이다.


참고 링크

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/CPU%20Scheduling.md

https://kosaf04pyh.tistory.com/190

https://esoongan.tistory.com/81

https://jhnyang.tistory.com/132

https://colomy.tistory.com/120

profile
기억하기 위해 기록하는 개발로그👣

0개의 댓글