1. 프로세스의 스케줄링(Scheduling)

: 멀티 프로세스 기반 운영체제에서는 CPU를 프로세스에게 골고루 할당해주는 일이 필요한데, 이는 운영체제의 일부분인 스케줄러가 담당한다.

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

: RTOS와 일반 OS의 차이는 응답성(응답속도)에 있다. RTOS는 응답성이 Windows와 같은 일반 OS보다 좋다. 

: OS는 범용적인 목적을 위해 제작되었고, RTOS는 사용되는 목적이 구체적이고 제한적이기 떄문에 보다 단순하게 디자인됐으며 일반 OS에 비해서 훨씬 가볍다.

* Soft RTOS vs Hard RTOS

: 위에서 설명 한 것이 Soft RTOS이다.

: 전통적으로는 RTOS를 Hard RTOS의 개념으로 본다. 이는 일반 OS에 비해서 단순히 응답성이 좋은 것정도로 설명되지 않는다. Hard RTOS에서 중요시 하는 것은 개선된 응답성이 아니라 Dead Line이다.

: 안전, 핵 발전 등 데드라인이 중요한 시스템에서 이를 크리티컬하게 충족시킬 수 있는 능력을 지니는 RTOS를 가리켜 Hard RTOS라고 한다.

: 따라서 이를 디자인하는 것은 쉬운일이 아니며 일반 OS와 다른 알고리즘으로 스케줄러가 디자인된다.

* 선점형(Preemptive) OS 와 비선점형(Non-Preemptive) OS

: OS를 구분할때 OS와 RTOS로 나누는 것 처럼, 프로세스 실행을 다른 프로세스로 넘기는 방식에 따라서 선점형 OS와 비선점형 OS로 구분한다.

- Non-Preemptive OS

: 현재 실행 중인 프로세스보다 높은 우선순위의 프로세스가 등장한다고 해서 실행의 대상을 바로 변경하지 않는다. 현재 실행중인 프로세스가 끝나거나 Blocked 상태에 놓일때까지 기다린다.

: Interactive한 프로그램 구현시 프로그래머 의존도가 높아지는 문제점을 지닌다. 

- Preemptive OS

: 현재 실행 중인 프로세스보다 높은 우선순위의 프로세스가 등장하면 스케줄러에 의한 실행 순서 조정이 적극적으로 가해진다.

: 둘 이상의 프로세스를 동작시키는 멀티 프로세스 기반 OS에 적합하다

: 오늘날은 거이 Preemptive OS를 사용한다.

* Preemptive OS의 대표적인 두가지 알고리즘

- Priority 스케줄링 알고리즘

: 각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 먼저 실행시키는 방식이다. 

- Round-Robin 스케줄링 알고리즘

: 동일한 우선순위를 가지고 있을 때 정해진 시간 간격만큼만 실행하고 다른 프로세스에게 CPU를 할당하는 방식이다.

: 최소 단위 시간간격을 가리켜 Quantum 혹은 Time Slice라고 하는데 이를 기준으로 CPU할당을 넘기게 된다.

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

: Preemptive OS를 디자인한다고 가정한다면, 어느 시점에 스케줄러가 동작하도록 디자인하면 좋을까?

: 세가지 경우의 수이다.

1. Round-Robin 방식의 스케쥴링 알고리즘 관점 

: 정해진 시간이 지날 때마다 ==> 매 타임 슬라이스마다 스케줄러가 동작해야함

2. Priority 방식의 스케줄링 알고리즘 관점

: 우선순위가 높은 프로레스가 무조건 실행되어야함. 즉, 새로운 프로세스가 등장할 때마다, 혹은 현재 프로세스가 종료되었을 때 스케쥴러가 동작해야한다.

3. Blocking 관점

: Blocking 되었을 때 다른 프로세스가 실행되어져야 하므로 스케줄러가 동작해야한다.

* Priority Inversion

: 프로세스의 우선순위가 뒤바뀌는 현상이다.

: 우선순위가 A>B>C 라고 가정할때 밑과 같은 문제가 있다.

: 위의 문제는 A와 C 프로세스가 협업을 하는 도중 A가 C를 기다리기 위해 Blocking 되었을 떄 B가 C를 치고 나와 먼저 실행되는 현상이다.

: 해결방법은 운영체제마다 다르지만 A가 C에게 자신의 우선순위를 위임하고 Blocked 상태로 빠지는 방법이 있다.

2. Windows 프로세스 우선순위

: Windows는 총 6단계의 우선순위 계층을 제공한다.

: 우선순위가 어떤 경우에 사용된다는 평범한 기준은 없지만, 직접 바꾸며 실행해보면서 시스템에 어느정도 영향을 미치는지 보고 경험적으로 결정한다.

3. 명령프롬프트 프로젝트 기능 추가

* Redirection(리다이렉션) 의 이해

: 방향 재지정을 의미한다. 콘솔에서 입력하던것을 파일로부터 입력을 받는 것처럼  입력과 출력을 재지정하는 것이다.


뇌를 자극하는 윈도우즈 시스템 프로그래밍
국내도서
저자 : 윤성우
출판 : 한빛미디어 2007.03.30
상세보기


+ Recent posts