FastCampus UpStage AI/운영체제

운영체제 - CPU 스케쥴링

하오츠(해석:맛있다) 2024. 10. 21. 20:53

 

CPU 스케줄링 

: 한정된 CPU 로 여러 프로세스를 실행한다.

 

우선순위에 따른 프로세스 유형

: I/O bound process(입출력 : IO burst), CPU bound process(CPU : CPU burst)

: i/o bound process > cpu bound process  i/o가우선순위가 높다

 

 

스케쥴링 큐 

준비큐(ReadyQueue) : cpu 이용을 기다리는 큐

대기큐(Run Queue) :  대기 상태 프로세스들이 기다리는 큐

 

선점형 스케쥴링

: 현재 실행중인 프로세스의 자원을 뺴앗아 실행

-> 문맥교환 과정에 오버헤드 발생

 

- SJF 스케쥴링

  : 짧은 프로세스 먼저 실행

 

- 라운드 로빈 

  : 선입 선처리 스케줄링 + 타임 슬라이스만큼 실행 

 

- 최소 잔여 시간 우선 스케줄링(SRT)

  : SJF + 라운드 로빈 

 

- 우선순위

   : 프로세스마다 우선순위 부여, 우선순위가 높은 순으로 스케줄링

   - 단점 : 아사(starvation : 우선순위가 낮은 프로세스 실행이 연기되는 현상)

 

  * aging 

   : 아사 현상을 예방하는 방식으로 대기시간이 길어지면 우선순위를 높이는 방법

 

- 다단계 큐

  : 우선순위별로 준비큐를 여러개 사용하는 스케쥴링

  : cpu 바운드, i/o 바운드, 백그라운드, 포그라운드 별로 큐로 묶어놈

  - 단점 : 큐 간의 우선순위가 옮겨지지 않는다 -> 아사현상 발생

 

- 다단계 피드백 큐 

   : 다단계 큐 아사현상을 방지하기 위해 프로세스가 큐 간의 이동이 가능(*aging사용)

 

비선점형 스케쥴링

: 현재 실행중인 프로세스의 종료를 기다린 후 실행

 

- FIFO 스케쥴링

 : 선입선출 스케쥴링

 

 

리눅스 스케줄링 정책

: 프로세스에 따라 각기 다른 우선순위를 사용할 수 있음

 

실시간 정책 스케줄링(우선순위가 높음)

- SCHED_FIFO

- SCHED_RR

 

일반 정책 스케줄링(우선순위가 낮음)

- CFS(Completely Fair Scheduler)

  : 비실시간 프로세스를 대상으로 스케줄링 방식

   

    * vruntime(virtual runtime : 가상 실행 시간)

     : 리눅스 운영체제는 가상 실행 시간이 작은 프로세스를 다음 실행 프로세스로 삼는다

     : RB tree

 

    * 타임 슬라이스

     : nice 값에 비례해 가중치 할당 

     : nice 명령어 

 

       새 프로세스를 실행할 때, 해당 프로세스의 우선순위 부여 

       nice - n [우선순위] [실행할 프로그램]

 

      실행중인 프로세스 우선순위를 변경할때, 

      renice [우선순위] [실행중인 프로세스 아이디]