Machineboy空

CPU 스케줄링 ① 개요 본문

Computer/CS

CPU 스케줄링 ① 개요

안녕도라 2024. 1. 15. 10:34

컴퓨터 전체 성능과도 직결되는 아주 중요한 문제


프로세스 우선순위 (Priority)

 

가장 공정한 CPU 스케줄링은?

CPU를 사용하고 싶어하는 프로세스들이 차례로 돌아가는 것?

 

빨리 처리해야하는 프로세스가 있음

= 프로세스마다 우선순위가 다르기 때문

 

  • 입출력 작업이 많은 프로세스 (= 입출력 집중 프로세스, I/O bound process)의 우선순위는
  • CPU작업이 많은 프로세스 (= CPU 집중 프로세스, CPU bound process)의 우선순위보다 높다

 

입출력 집중 프로세스가 실행 상태보다 대기 상태에 더 많이 머무르게 될 것.

그래서 CPU를 한동안 안쓸 것임. 그래서 빨리 처리할 수 있는 입출력 집중프로젝트를 먼저 처리.

 

 


스케줄링 큐

 

운영체제 입장에서 다음 프로세스를 정하기 위해서 모든 프로세스의 PCB를 뒤적이는 것은 비효율적.

입출력 프로세스나, 메모리 등에서도 CPU를 요구하는 작업이 몰릴 수 있다.

 

자원을 사용하고자 하는 프로세스들의 대기줄.

  • 준비 큐: CPU를 이용하기 위해 기다리는 줄
  • 대기 큐: 입출력장치를 이용하기 위해 기다리는 줄

먼저 큐에 삽입되었다고 해서 먼저 처리되는 것은 아니다. 우선순위가 높은 프로세스가 먼저 실행.

 

동시에 실행되는 프로세스가 여러 개 있다고 가정했을 때

CPU자원은 한정되어 있으므로 프로세스들을 CPU를 번갈아가며 사용해야한다.

  • 준비상태에 접어들어 CPU 할당을 기다린다.
  • 자신의 차례가 되면 디스패치(준비상태에서 실행상태로 접어듬)이 되어 실행한다.
  • 자신의 실행이 끝나면, 타이머 인터럽트가 발생해 다시 준비상태, 준비큐에 삽입된다.
  • 다음으로 우선순위가 높은 프로세스가 디스패치된다.
  • ...
  • 그러다가 입출력 프로세스 해야하면 입출력 프로세스 순서도 준비큐로 들어옴.

 

대기큐는 각각 입출력장치별로 큐를 따로 만들어 둠

 

운영체제는 우선순위에 따라 프로세스 상태를 결정하고 자원을 관리한다!


선점형 / 비선점형 스케줄링 (Preemtive, Non-Preemtive)

 

가령 어떤 프로세스가 CPU를 할당받아서 프로세스를 진행하고 있다고 할 때

  • 선점형 프로세싱 (preemtive scheduling)
    • 현재 CPU를 사용 중인 프로세스로부터 CPU자원을 빼앗아 다른 프로세스에 할당
    • 프로세스마다 정해진 시간을 쓰고 타임아웃 인터럽트가 발생하면 다음 프로세스로 넘어가는 것
      • 장점: 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분할 수 있다.
      • 단점: 그만큼 문맥 교환 과정에서 오버헤드가 발생할 수 있다. (문맥교환을 자주해야하니까)
  • 비선점형 프로세싱 (non-preemtive scheduling)
    • 현재 CPU를 사용 중인 프로세스의 작업이 끝날 때까지 프로세스를 기다리기
      • 장점: 선점형 스케줄링에 비해 문맥교환에서 발생하는 오버헤드가 적다.
      • 단점: 모든 프로세스가 골고루 자원을 이용하기 어렵다.

선점형 vs 비선점형

 

*오버헤드(overhead)

어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등

ex.껌을 사러 마트까지 가는 것은 오버헤드가 너무 커!

배보다 배꼽이 크다 느낌