5. CPU Scheduling

정연희·2024년 5월 27일
0

OS

목록 보기
5/5

CPU Scheduling의 필요성

CPU 스케줄링은 운영 체제가 여러 프로세스를 효율적으로 처리하기 위해 필수적이다. 프로그램은 I/O bound job와 CPU bound job이 섞여있다. I/O 바운드 작업은 CPU 사용이 적고 주로 I/O 작업을 기다리며, CPU 바운드 작업은 CPU를 많이 사용한다. 스케줄링을 통해 I/O 작업 대기 시간 동안 CPU 바운드 작업을 실행하면 자원을 효율적으로 활용할 수 있다. 이는 시스템의 응답 시간을 최적화하고, 특정 작업이 CPU를 독점하지 않도록 하여 모든 작업에 공정하게 자원을 분배한다. 결과적으로, 전체 시스템 성능을 향상시키고 사용자 경험을 개선하기 위해 CPU scheduling이 필요하다.


CPU Scheduler & Dispatcher

  • CPU Scheduler

    • Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다
    • 운영체제 안에서 CPU scheduling하는 코드를 CPU Scheduler라고 부른다
  • Dispatcher

    • CPU 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘긴다
    • 이 과정을 context switch(문맥 교환)라고 한다

CPU 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다

1. running -> blocked

(nonpreemptive)
ex. I/O 요청하는 시스템 콜이 호출된 경우

2. running -> ready

(preemptive)
ex. 할당시간만료로 timer interrupt

3. blocked -> ready

(preemptive)
ex. I/O 완료 후 인터럽트

4. terminate

(nonpreemptive)

preemptive = 강제로 빼앗음
nonpreemptive = 강제로 빼앗지 않고 자진 반납

profile
추가 블로그: https://prickle-justice-361.notion.site/720540875b754767a73f52c038056990?v=11366b23c086803f889b000c2562fa51&pvs=4

0개의 댓글

관련 채용 정보