IT공부/IT서적

[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 9장. 스케줄링 알고리즘과 우선순위

shine94 2025. 1. 28. 16:45

* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다

   https://product.kyobobook.co.kr/detail/S000001223395

 

뇌를 자극하는 윈도우즈 시스템 프로그래밍 | 윤성우 - 교보문고

뇌를 자극하는 윈도우즈 시스템 프로그래밍 |

product.kyobobook.co.kr

 

 

 

 

* 스케줄러(Scheduler)

   실행중인 모든 프로세스들에게 골고루 CPU를 할당

 

* 일반 OS

   범용적인 사용

 

* 리얼타임 OS(Real Time OS, RTOS)

   사용하는 영역이 제한

 

* 일반 OS와 RTOS는 응답성(응답 속도)에 차이가 있고

   멀티 테스킹 해야하는 일반 OS보단 사용하는 영역이 제한된 RTOS보다 당연히 응답성이 느릴 수 밖에 없다

 

* 하는 일이 특화되어 응답성이 일반 OS보다 빠르기만 하면 Soft RTOS, 더불어 데드라인(Dead Line)이 존재한다면 Hard RTOS

 

* 인터렉티브(Interactive)

   사용자의 입력에 따라 프로그램이 동적으로 작동하는 방식

 

* 비선점형 OS

   현재 실행중인 프로세스가 CPU를 스스로 반납하기 전까지는, 다른 프로세스가 CPU를 사용할 수 없다

 

* 선점형 OS

   높은 우선순위의 프로세스가 등장하면,

   스케줄러가 개입하여 현재 실행중인 프로세스를 중단시키고 우선순위가 높은 프로세스를 실행시킨다

   (1) 우선순위(Priority) 스케줄링 알고리즘

        - 기아(Starvation)

   (2) 라운드 로빈(Round-Robin) 스케줄링 알고리즘

        - 실행의 최소 단위 시간을 가리켜 퀀텀(Quantum) 혹은 타임슬라이스(Time Slice)

 

* 스케줄링 알고리즘에 의해서 스케줄링이 진행되는 시점

   (1) 매 타임 슬라이스(Time Slice)마다 스케줄러 동작

   (2) 프로세스가 생성 및 소멸될 때마다 스케줄러 동작

   (3) 현재 실행중인 프로세스가 블로킹 상태에 놓일 때마다 스케줄러 동작

 

* Priority Inversion

   우선순위가 뒤바뀌는 현상

   (예) 우선 순위 A > B > C, A의 작업은 C의 작업이 필요하다는 전제

          A가 작업을 하다가 C의 결과값이 필요한 순간이 되었음, 잠시 A는 C의 결과가 도착할 때까지 정지함

          A가 C 작업을 기다리는 동안,  C가 작업을 바로 시작하는것이 아니라 B가 작업을 먼저 하게 됨

 

* Windows 프로세스 우선순위

 

* ABOVE_NORMAL_PRIORITY_CLASS, BELOW_NORMAL_PRIORITY_CLASS 우선순위 지원 여부

 

* 정리하자면,
   Windows 2000 이상의 모든 Windows 버전에서 지원된다
   현대 Windows 운영체제(예: Windows 10, Windows 11)에서는 완벽히 지원되며,

   프로세스 우선순위를 세밀하게 조정하기 위해 자주 사용된다

 

* Windows NT(New Technology)

   비즈니스 환경과 서버 환경을 위한 강력한 멀티태스킹, 멀티유저 OS

   ㄴ 특징
       선점형 멀티태스킹과 다중 사용자 지원
       하드웨어 추상화 계층(HAL)을 통해 다양한 하드웨어와 호환
       안정성과 보안을 목표로 설계됨 (커널 모드와 사용자 모드 분리)
   ㄴ 대표적인 버전:
       Windows NT 3.1 (1993년, 최초 버전)
       Windows NT 4.0 (1996년, GUI 개선)
       Windows 2000, Windows XP, Windows 7 등은 NT 기반
   현재까지도 Windows의 모든 최신 버전은 NT 커널을 기반으로 개발

 

* Windows Me(Millennium Edition)

   2000년에 출시한 가정용 운영체제(OS)로, Windows 9x 계열(Windows 95/98)의 마지막 버전이다

   ㄴ 특징:
       멀티미디어와 인터넷 기능에 초점(홈 사용자 대상)
        Windows Movie Maker와 같은 멀티미디어 도구 최초 탑재
       시스템 복원(System Restore) 기능 최초 도입
       안정성 문제와 잦은 오류로 인해 평판이 좋지 않았음
       Windows Me 이후로 Microsoft는 가정용과 비즈니스용 OS를 Windows NT 커널 기반으로 통합(Windows XP 출시)

 

https://learn.microsoft.com/ko-kr/windows/win32/api/processthreadsapi/nf-processthreadsapi-setpriorityclass

 

SetPriorityClass 함수(processthreadsapi.h) - Win32 apps

지정된 프로세스의 우선 순위 클래스를 설정합니다. 이 값은 프로세스의 각 스레드의 우선 순위 값과 함께 각 스레드의 기본 우선 순위 수준을 결정합니다.

learn.microsoft.com

 

* Sleep 함수

   이 함수는 프로세스의 실행을 멈추게 하는 것이 아니라 쓰레드의 실행을 멈추게 하는 함수이다

   즉, 인자의 시간만큼 실행중인 프로세스를 Blocked 상태에 두어 실행을 멈추는 함수이다

 

* 리다이렉션(Redirection)

   방향 재지정

   (예) 콘솔로 출력이 이뤄져야 하는 상황에서 방향 재지정을 하면 파일에 출력이 이뤄지게끔 할 수 있다