LISTORY
[윈도우즈 시스템 프로그래밍] 2부 정리(2) 본문
이번 내용은 프로세스와 스케줄러의 이해 부분이다.
프로세스와 스케줄러의 이해
프로세스란 무엇인가?
일반적으로는 메인메모리로 이동하여 실행중인 프로그램을 뜻한다.
프로그램은 CPU에서 실제 작업이 이루어지는데, 이 때 동작은 연산 장치인 ALU에서 실행된다.
연산을 하는 중, 현재 실행 중인 프로그램의 정보들은 레지스터 SET에 저장된다.
만일 CPU가 동시에 여러 개의 프로세스를 돌리고 있다면 현재 실행중인 프로세스의 정보들만 레지스터 SET에 저장할 수 있는데
이는 프로세스마다 번갈아 가며 진행된다.
즉, 기존에 진행 중인 프로세스의 정보를 저장할 공간이 필요하므로, 이 정보들은 다른 곳에 잠시 저장해둔다.
이러한 특성을 가지고 있는 레지스터 SET과 메모리 공간 역시 프로세스의 범주에 포함시킨다.
프로세스의 범위
- 메모리 구조 + 레지스터 SET
- 프로세스 별 독립적인 대상은 프로세스의 범주에 포함시킬 수 있다.
Context Switching
- 하나의 프로세스가 진행 중에 다른 프로세스를 진행할 때, 안에 있는 레지스터 정보를 딴 곳에 저장하며 새로운 정보를 저장하는 과정
- CPU에서 이 과정은 굉장히 자주 일어난다.
- 이는 시스템에 부담이므로 적게 하는 것이 좋다.
⊙ 프로세스 스케줄러
프로세스를 스케줄링한다.
CPU는 하나인데, 동시에 여러 개의 프로세스를 돌릴 때가 많다.
그래서 정책을 결정하여 그 정책대로 스케줄러가 공평하게 프로세스를 pcu에 가져다 준다.
하지만 스케줄러 역시 하나의 프로세스이므로 스케줄러도 지나치게 많이 돌리지 않는 편이 좋다.
⊙ 프로세스의 상태
프로세스는 Running, Ready, Blocked 이렇게 세가지 상태를 지닌다.
Running : CPU에 의해 실행되고 있는 상태. Running 중인 프로세스는 하나이다.
Ready : 프로세스가 준비되어 Running을 기다리고 있는 상태
Blocked : CPU의 연산을 크게 필요로 하지 않는 상태. 보통 I/O 연산을 필요로 할 때이다.
Blocked 상태가 끝나면 다시 Ready 상태로 간다.
정리
- CPU는 한번에 하나의 프로세스만 돌릴 수 있다.
- 여러 개의 프로세스가 동시에 돌아가는 것 처럼 보이게 하려면 번갈아가면서 실행해야 한다.
- 프로세스는 Ready와 Running 상태를 반복한다.
- Running 상태에서 I/O 작업을 필요로 하게 되면 그 프로세스는 Blocked 상태가 되어 I/O 작업이 끝날 때까지 기다린다.
'IT > 윈도우 프로그래밍' 카테고리의 다른 글
[윈도우즈 시스템 프로그래밍] 2부 정리 (4) (0) | 2018.09.02 |
---|---|
[윈도우즈 시스템 프로그래밍] 2부 정리 (3) (0) | 2018.09.01 |
[윈도우즈 시스템 프로그래밍] 2부 복습 (1) (0) | 2018.08.30 |
[윈도우즈 시스템 프로그래밍] 1부 정리(3) (0) | 2018.08.19 |
[윈도우즈 시스템 프로그래밍] 1부 정리(2) (0) | 2018.08.19 |