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(리다이렉션) 의 이해
: 방향 재지정을 의미한다. 콘솔에서 입력하던것을 파일로부터 입력을 받는 것처럼 입력과 출력을 재지정하는 것이다.
|
'독후감 > 컴퓨터구조+운영체제+시스템프로그래밍' 카테고리의 다른 글
11. 쓰레드의 이해 (0) | 2017.03.10 |
---|---|
10. 컴퓨터 구조에 대한 세번째 이야기 - Part3 멀티 스레드와 동기화 (0) | 2017.03.08 |
8. 프로세스간 통신(IPC)2 (0) | 2017.03.08 |
7. 프로세스간 통신(IPC) (0) | 2017.03.07 |
6. 커널 오브젝트와 오브젝트 핸들 (0) | 2017.03.06 |