CS

[운영체제] CPU 스케줄링이란? (선점, 비선점)

juhwan 2023. 10. 6. 15:28

CPU 스케줄링은 컴퓨터 시스템에서 여러 개의 프로세스가 동시에 실행될 때, 어떤 프로세스가 CPU를 사용할 것인지 결정하는 작업이다.

 

스케줄러

스케줄러는 CPU가 놀지 않고 항상 일을 할 수 있도록 프로세스를 선택하는 역할을 한다

프로세스가 Running 상태에서 작업을 마치거나 등등의 이유로 Running 공간을 벗어나면 CPU는 놀고 있게 된다.
스케줄러는 CPU가 놀지 못하도록 다음 running할 프로세스를 선택하여준다

(ready 큐라는 공간은 CPU 사용을 기다리는 프로세스들이 모여있다.) 스케줄러는 이 공간에서 다음 프로세스를 선택한다

 

디스펙쳐

디스펙쳐쳐는 스케줄러가 선택한 다음 프로세스를 context switching 하는 역할이며,
선택된 프로세스가 어디서부터 작업을 시작해야 할지 적절한 위치로 이동시키는 작업도 해준다

 

 

스케줄러의 선점 방식

 

비선점형 스케줄링은 현재 실행 중인 프로세스를 중단할 수 없는 스케줄링 방식이다.

외부 영향 없이 프로세스 자발적으로 상태를 바꾼다.

  1. 진행상태인 프로세스의 작업이 끝나거나
  2. IO작업을 하러 가야 한다던가
  3. 자발적으로 CPU사용을 양보할 수 있다.

이 3가지 경우에만 OS에서 개입하여 스케줄링을 하는 방식을 비선점형 스케줄링이라고 한다.

 

비선점 스케줄링의 특징

  1. CPU 할당을 자발적으로 놓지 않는 한 뺏을 수 없다
  2. 문맥 전환 발생이 낮아지므로 문맥 전환 비용이 낮아진다.
  3. 하나의 프로세스가 CPU사용을 한다면 다른 프로세스들이 대기를 해야하므로 다중 작업이 필요한 응용프로그램의 동작에 영향이 크다.

선점형 스케줄링은 현재 실행 중인 프로세스를 중단하고 다른 프로세스를 실행할 수 있는 스케줄링 방식

진행상태인 프로세스가 CPU를 충분히 사용하지 못한 경우에도 강제로 준비상태로 바꿀 수 있다.

선점 스케줄링의 특징

  1. 우선순위가 높은 새로운 프로세스가 도착하면, 현재 실행 중인 프로세스의 작업을 중단하고 CPU할당을 받을 수 있다.
  2. 문맥 전환이 빈번하다 CPU를 양도하는 과정에서 문맥 전환이 발생하며, 오버헤드와 시간 소요를 초래할 수 있다.
  3. 우선 순위가 높은 작업이 즉시 처리됨으로 실시간 시스템이나 대화형 환경에서 응답성을 보장하는데 유리하다
  4. 선점 스케줄링은 모든 프로세스에게 공정한 CPU접근 기회를 준다
  5. 운영 체제 개입이 가능하여 언제든지 작업을 중단시킬 수 있다.
    오버헤드: 문맥전환, 인터럽트로 인한 시스템 성능 저하, 리소스 소비, 지연 등

CPU 스케줄링 알고리즘 종류

  1. 선입선출(FCFS)
    • 프로세스가 들어온 순서대로 CPU를 할당함 FIFO알고리즘은 간단하지만, 시스템 성능이 저하될 수 있다.
  2. 우선순위
    • 우선순위가 높은 프로세스는 낮은 우선순위의 프로세스보다 먼저 CPU를 할당받는다.
    • 시스템 성능을 향상할 수 있지만, 우선순위를 정하는 것이 쉽지 않다.
    • 우선순위 순서대로 실행 도중 해당 프로세스보다 우선순위가 높은 프로세스가 등장하면 그 프로세스부터 처리한다
  3. 라운드 로빈
    • 각 프로세스가 적절한 양의 CPU를 할당받도록 보장한다.
    • 시스템 성능이 저하될 수 있다.
  4. 최소 예상 완료 시간(SJF)
    • 가장 짧은 시간을 가진 프로세스에 CPU를 할당함
    • 성능을 향상시킬 수 있지만, 예상 완료 시간을 정확히 예측하기 어렵다.
  5. 가장 짧은 시간 우선순위 SJF 단점을 보완한 방식

CPU burst란 프로세스가 CPU를 사용하는 시간을 의미한다.

 

 

 

프로세스의 생명주기(Process Lifecycle)

  1. 생성 (new)
    • 새로운 프로세스가 생성된다.
    • 운영 체제에 의해 필요한 자원이 할당되고 초기화 작업수행
  2. 준비 (ready)
    • 생성된 프로세스가 실행을 기다리는 상태
    • CPU 시간을 할당받기 위해 실행대기 큐에 저장되어 기다립니다.
  3. 실행 (running)
    • CPU를 할당받아 작업을 수행합니다.
  4. 대기 (waiting)
    • 실행 중인 프로세스가 IO작업 등 외부 이벤트를 기다리면서 대기
  5. 완료 (terminated)
    • 프로세스가 작업을 마치고 종료

준비상태인 프로세스에서 실행상태로 이동시켜 주는 작업을 스케줄러 디스펙쳐가 해준다

'CS' 카테고리의 다른 글

[운영체제] 페이지 교체 알고리즘  (0) 2023.10.10
[운영체제] 주 메모리 관리  (0) 2023.10.10
[WEB] DNS (Domain Name System)란?  (0) 2023.10.05
[데이터베이스] 정규화란?  (0) 2023.10.04
[네트워크] 웹 동작 방식  (0) 2023.10.02