일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발
- 필활
- 이스케이퍼스 2호점
- 이스케이퍼스
- 홍대 덤앤더머
- C 자료구조
- 홍대 방탈출 추천
- 방탈출 추천
- 방탈출 리뷰
- 2021 방탈출 추천
- Unity
- 강남 방탈출
- 유니티
- 홍대
- PC VR
- 넥스트에디션 2호점
- 추천
- Android
- C#
- 넥스트에디션
- 홍대 방탈출
- 방탈출
- C++ 자료구조
- 방탈출 후기
- 시스템 프로그래밍
- 윈도우 프로그래밍
- 정렬 알고리즘
- 꽃길
- 공포 방탈출
- 후기
- Today
- Total
행복한 연어의 이야기
(윈도우 시스템) 9. 스케줄링 알고리즘과 우선순위 본문
1. 프로세스의 스케줄링
OS 와 RTOS(RealTime)
RTOS가 OS 보다 응답속도(응답성)가 빠르다.
RTOS 는 사용하는 영역이 제한적이라 일반적인 OS 보다 하는일이 적다.
일반적으로 응답성이 좋으면 좋을 수록 멀티프로세스의 성격이 약하다.
선점형 OS와 비선점형 OS
프로세스의 실행을 다른 프로세스에게 넘기는 방식에 따라서 구분한다.
비선점형의 경우 우선순위가 높은 프로세스가 대기중이라고 해서 바로 그 프로세스를 실핼하지 않는다.
선점형의 경우 우선순위가 높은 프로세스가 대기중이면 스케줄러에 의해서 높은 우선순위의 프로세스를 실행한다.
정확히 말하면 프로세스가 아닌 쓰레드 스케줄링 이지만 쓰레드 배우지 않았기에
프로세스라고 서술한다. 그래도 이해하는데는 문제가 없다.
(자세한 내용은 여기(쓰레드의 이해)에서 )
Windows 입장에서 프로세스는 단순히 쓰레드를 담는 상자에 지나지 않는다.
실제 프로그램의 흐름을 형성하는 것은 쓰레드이다.
프로세스는 Running Ready Blocked 상태를 지니지 않는다.
상태를 지니는 것은 쓰레드이며 스케줄러의 실행단위도 프로세스가 아닌 쓰레드이다.
프로세스를 생성하면 기본적으로 main 쓰레드가 생성되며
앞서 프로세스라고 말한 내용 대부분은 이 main 쓰레드라고 생각해야한다.
WIndows의 대표적인 2가지 스케줄링 알고리즘
우선순위 스케줄링 알고리즘
각각의 프로세스마다 우선순위를 정해서 높은 우선순위의 프로세스를 먼저 실행하는 방법이다.
라운드 로빈 스케줄링 알고리즘
같은 우선순위일때 정해진 시간 간격만 실행을 하고 우선순위가 같은 다른 프로세스에게 넘겨주는 알고리즘이다.
여기서 실행의 최소 단위 시간 간격을 퀀텀 혹은 타임슬라이스 라고 한다.
스케줄링 알고리즘에 의해서 스케줄링이 진행되는 시점
1. 매 타임 슬라이스 마다
2. 프로세스가 생성 및 소멸 될때마다
3. 현재 실행 중인 프로세스가 블로킹 상태에 놓일때마다
Priority Inversion
프로세스의 우선순위가 뒤 바뀌는 현상을 말한다.
프로세스 A B C 가 있고 우선순위가 순서대로 높다고 했을때를 가정한다.
프로세스 A 는 우선순위에 의해서 가장 먼저 실행되고
A의 나머지를 진행하려면 C 에서 계산한 값이 필요하다.
A 가 C의 값을 필요해서 Blocked 상태가 됐을때 따로 조치를 취하지 않는다면
C 보다는 B 가 우선순위가 높기에 B 가 실행 될것이다.
A 프로세스가 우선순위가 높은데 C 가 낮아서 B 실행을 기다리는 상황이 나오게 된다.
이 상황을 해결하기 위해서 A 프로세스는 Blocked 상태에 들어가기 전에
자신의 우선순위를 C 프로세스에게 잠시 위임하는데 이 현상을 Priority Inversion 이라고 한다.
알고 넘어가야할 것
1. 응답성 관점에서 RTOS 와 OS 구분
2. 선점형 OS와 비전섬형 OS 특징
3. 스케줄러가 동작하는 세가지 시기
'윤성우 저자'님의 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 책을 보고 정리한 내용입니다.
'IT > 윈도우 시스템 프로그래밍' 카테고리의 다른 글
(윈도우 시스템) 11. 쓰레드의 이해 (0) | 2021.08.11 |
---|---|
(윈도우 시스템) 10. 컴퓨터 구조 세번째 (0) | 2021.08.09 |
(윈도우 시스템) 8. 프로세스간 통신(IPC) 2 (0) | 2021.08.04 |
(윈도우 시스템) 7. 프로세스간 통신(IPC) 1 (0) | 2021.08.02 |
(윈도우 시스템) 6. 커널오브젝트와 오브젝트 핸들 (0) | 2021.07.30 |