프로세스
- 메인 메모리로 이동하여 실행중인 프로그램 (일반적인 정의)
프로세스 범위
- 메모리 구조 + 레지스터 Set
- 프로세스 별 독립적인 대상(레지스터 Set)은 프로세스의 범주에 포함시킬 수 있다.
Context Switching
- A라는 프로세스가 연산을 하고 B라는 프로세스로 전환되는 것
- 1초에 수십번씩 진행된다. 그래서 사용자에게는 여러 프로세스가 동시에 실행되는 것 처럼 보여진다.
- Context Switching이 일어날 때, 레지스터 Set을 비워줘야지 다음 프로세스의 데이터를 저장할 수 있다.
그런데 1초에 수십번씩 진행되는 Context Switching 특성상 이러한 방법은 굉장히 비효율적이다.
- 그래서 각 프로세스 별로 레지스터 Set을 독립적으로 할당해주는 기법이 있다.
프로세스 스케줄러
- 윈도우에서 SoftWare적으로 구현되어있는 장치(Block)
- 둘 이상의 프로세스가 적절히 실행되도록 컨트롤 한다.
- CPU입장에서는 스케줄러도 하나의 프로세스이다.
프로세스의 상태
- Ready : 스케줄러가 선택해주길 기다리는 상태(프로세스는 실행을 위한 모든 준비가 다 됨.)
- Running : 현재 cpu에 의해 실행중인 상태
(CPU의 코어가 1개이면 Running 상태에 있는 프로세스의 개수는 1개이다.)
(일반적인 실행은 CPU에 의존적인 연산이고, I/O연산은 CPU에 의존적이지 않은 연산이다.)
- Blocked : CPU에 의존적이지 않는 연산을 하고 있는 상태
ex)
1. A,B 프로세스가 Ready 상태이다.
2. A 프로세스가 스케줄러에 의해 Running 상태가 됬다.
3. 연산을 하다가 I/O 연산을 수행한다.
4. A 프로세스는 I/O 연산이 끝날 때 까지 Blocked 상태가 되고, B 프로세스가 Running 상태가 된다.
5. A 프로세스가 I/O 연산이 끝나고 CPU에 의한 연산이 남아있다면, 다시 Ready 상태가 된다.
★주의★
꼭 I/O 연산을 한다고 Running 상태가 해제 되는것이 아니라, 우선순위에 의해서 다른 프로세스들도 실행을 시켜야 하기 때문에 Running 에서 Ready 상태가 되기도 한다.
Context Switching 추가 설명
- Running 상태의 프로세스(A)의 데이터가 레지스터 Set에 저장되어있다.
- Ready 상태의 프로세스(B)가 Running 상태가 되기 위해선 레지스터에 Set에 B에 관한 데이터가 저장되야 한다.
- A의 데이터가 있는 레지스터 Set은 메모리에 저장되고, 메모리에 저장 되어있던 B의 데이터는 레지스터 Set에 복원된다.
- 이러한 과정이 끝난 후 B는 Running 상태가 된다.
- 프로세스의 범위에 '메모리 구조 + 레지스터 Set'이 포함되는 이유가 위의 과정 때문이다.
'뇌를 자극하는 윈도우즈 시스템 프로그래밍 > 개념' 카테고리의 다른 글
커널 오브젝트와 오브젝트 핸들 (0) | 2019.04.03 |
---|---|
프로그래밍을 통한 프로세스의 생성 (0) | 2019.03.19 |
Direct 모드와 Indirect 모드 (0) | 2019.03.18 |
프로그램 구현 관점에서의 WIN32 vs WIN64 // 오류의 확인 GetLastError 함수 (0) | 2019.03.18 |
MBCS와 WBCS의 동시 지원 (0) | 2019.03.18 |