컴퓨터 공학/운영체제

[혼공컴운] chapter.11 CPU 스케줄링

hhzinistic 2023. 7. 29. 23:34

2023.07.29 - [컴퓨터 공학/운영체제] - [혼공컴운] chapter.10 프로세스와 스레드

 

[혼공컴운] chapter.10 프로세스와 스레드

2023.07.29 - [컴퓨터 공학/운영체제] - [혼공컴운] chapter.09 운영체제 시작하기 [혼공컴운] chapter.09 운영체제 시작하기 2023.07.23 - [컴퓨터 공학/컴퓨터 구조] - [혼공컴운] chapter.08 입출력장치 [혼공컴

zinistic.tistory.com

 

11-1 CPU 스케줄링 개요

  • 프로세스 우선순위
    - CPU 스케줄링(CPU scheduling): 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것.
    → 운영체제는 프로세스의 중요도에 맞게 CPU를 이용할 수 있게 우선순위(priority)를 부여.
    - 입출력 집중 프로세스(I/O bound process): 비디오 재생 및 디스크 백업 등 입출력 작업이 많은 프로세스
    - CPU 집중 프로세스(CPU bound process): 수학연산, 컴파일, 그래픽 처리 등 CPU 작업이 많은 프로세스

    * CPU 버스트와 입출력 버스트
    - CPU 버스트(CPU burst): CPU를 이용하는 작업
    - 입출력 버스트(I/O burst): 입출력장치를 기다리는 작업


  • 스케줄링 큐(scheduling queue)
    → CPU, 메모리, 특정 입출력장치 등을 사용하고 싶은 프로세스들을 줄을 세워 스케줄링 큐로 구현하고 관리.
    운영체제가 관리하는 대부분의 자원은 큐로 관리됨.
    • 준비 큐(ready queue): CPU를 이용하고 싶은 프로세스들이 서는 줄
    • 대기 큐(waiting queue): 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세서들이 서는 줄

준비 큐와 대기 큐가 포함된 프로세스 상태 다이어그램

 

 

 

  • 선점형과 비선점형 스케줄링
    • 선점형 스케줄링(preemptive scheduling)
      : 프로세스가 사용하고 있는 자원을 운영체제가 프로세스로부터 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식.
      → 어느 한 프로세스의 자원 독점 방지. BUT 문맥 교환 과정에서 오버헤드 多
    • 비선점형 스케줄링(non-preemptive scheduling)
      : 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까지 다른 프로세스가 끼어들 수 없는 스케줄링 방식.
      → 문맥 교환 과정에서 오버헤드 小. BUT 모든 프로세스가 골고루 자원 사용 불가

 

 

 

 


 

 

11-2 CPU 스케줄링 알고리즘

  • 선입 선처리 스케줄링(FCFS(First Come First Served) 스케줄링)
    : 준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식

    * 호위 효과(convoy effect): CPU를 오래 사용하는 프로세스를 다른 프로세스들이 기다리는 현상


  • 최단 작업 우선 스케줄링(SJF(Shortest Job First) 스케줄링)
    : 준비 큐에 삽입된 프로세스들 중 CPU 이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 비선점형 스케줄링 방식


  • 라운드 로빈 스케줄링(round robin scheduling)
    : 선입 선처리 스케줄링타임 슬라이스 개념이 더해져 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CPU를 사용하는 선점형 스케줄링 방식.
    * 타임 슬라이스: 각 프로세스가 CPU를 사용할 수 있는 정해진 시간.


  • 최소 잔여 시간 우선 스케줄링(SRT(Shortest Remaining Time) 스케줄링)
    : 최단 작업 우선 스케줄링 알고리즘과 라운드 로빈 알고리즘을 합친 스케줄링 방식. 프로세스들은 정해진 타임 슬라이스 만큼 CPU를 사용하되, CPU를 사용할 다음 프로세스는 남아있는 작업 시간이 가장 적은 프로세스가 선택됨.


  • 우선순위 스케줄링(priority scheduling)
    : 프로세스들에 우선순위를 부여하고 가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 알고리즘.
    → 우선 순위가 낮은 프로세스는 우선순위가 높은 프로세스들에 의해 실행이 계속 연기되는 기아 현상 발생

    * 에이징(aging): 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식으로 기아 현상을 방지하는 기법.


  • 다단계 큐 스케줄링(multilevel queue scheduling)
    : 우선순위별로 준비 큐를 여러개 사용하는 스케줄링 방식.
    각 준비 큐마다 다양한 알고리즘 방식 사용 가능.


  • 다단계 피드백 큐 스케줄링(multilevel feedback queue scheduling)
    : 다단계 큐 스케줄링에서 프로세스들이 큐 사이를 이동할 수 있는 점이 추가된 스케줄링 방식.
    → 낮은 우선순위 큐에서 오래기다리고 있는 프로세스를 높은 우선순위 큐로 이동하여 기아 현상을 방지할 수 있음.




 

 

*오류 지적은 환영입니다.^^*