시스템 프로그래밍

9. 프로세스의 스케줄링

CalebHong 2022. 5. 24. 14:48

일반 OS와 리얼타임(Real Time) OS의 차이점

 - 두 OS를 결정짓는 요소는 스케줄러

 - 리얼타임은 다른 말로 실시간을 뜻함

  └ 프로그램 실행 시 즉시 실행되도록 스케줄링 함

  └ 응답성이 좋지만 프로그램 속도가 빠른 것은 별개

 

 - OS는 클럭을 기준으로 타임 슬라이스(Time Slice)를 정함

  └ 일반적으로 1ms를 1 TS

 - 일반 OS는 TS가 크고, 리얼타임 OS는 상대적으로 작음

 

선점형 OS와 비선점형 OS

 - 우선순위가 높은 것을 먼저 실행해야 하는 것이 OS의 의무

 - 선점형 OS의 스케줄러는 우선 순위가 낮은 것을 즉시 뒤로 밀어내고 우선 순위가 높은 것이 먼저 실행 됨

  └ 상대적으로 스케줄러가 하는 일이 많음

  └ 스케줄러가 더 많이 프로세스의 실행에 직접적으로 관여함

 - 비선점형 OS의 스케줄러는 우선 순위가 낮더라도 프로세스가 명시적으로 선언해줘야(함수 호출) 우선 순위가 높은 프로세스가 실행 됨

  └ 상대적으로 스케줄러가 하는 일이 적음(제한적)

 

스케줄링 알고리즘

* 평등과 특권의 공존

 - 평등 원칙이 반영되는 경우: 동일 우선순위 → 라운드로빈 기반 알고리즘

 - 특권을 허용해주는 경우: 높은 우선순위 → 우선순위 기반 알고리즘

 - Priority 7의 프로세스들이 실행되는 동안에는 Priority가 낮은 프로세스들은 실행되지 않음

 - Priority7의 프로세스들이 모두 Blocked으로 빠져야지만 다음 우선순위의 프로세스가 실행 됨

 

스케줄링 진행시점

 1) 매 타임 슬라이스(Time Slice)마다

  └ 타임 슬라이스 사이에서도 컨텍스트 스위칭은 발생할 수 있는가? 

 2) 프로세스가 생성 및 소멸될 때마다

  └ 소멸 될때는 어떤 이유로 스케줄러가 동작하는가? 다른 프로세스를 실행하기 위해

 3) 현재 실행 중인 프로세스가 Blocked 상태에 놓일 때마다