커널 오브젝트의 상태
- 상태: 리소스의 현재 상황을 알리기 위함
- 만약 자식 프로세스를 생성했다면 자식 프로세스의 커널 오브젝트의 상태 정보는 Non-Signaled로 초기화되며 실행중을 의미함
- 실행이 종료되면 프로세스 커널 오브젝트는 Signaled 상태가 됨
- 커널 오브젝트 상태를 통해서 핸들을 가진 프로세스가 그 상태를 알 수 있음
상태관찰 시나리오
- 자식 프로세스의 커널오브젝 핸들의 값이 7이라면
- 부모 프로세스는 자식 프로세스의 상태를 알기 위한 함수(WaitForSingleObject())에 매개변수로 핸들 값 7을 대입하면 자식 프로세스의 상태를 알 수 있음
- 자식 프로세스가 Signaled 상태(종료된 상태)에는 WaitForSingleObject의 함수가 바로 반환되지만, Non-Signaled 상태(실행 중인 상태)에는 바로 반환되지 않고 Signaled 상태가 되면 반환하기에 부모 프로세스가 Blocking 상태가 됨
- 즉 WaitForsingleObject 함수는 해당 프로세스가 Signaled 상태가 되기를 기다리는 함수
예제 모델
- 부모 프로세스가 1~10의 합 계산을 자식 프로세스 A, B에게 나누어 계산을 요청
- X 표시는 종료코드
- 여기서 문제는 부모 프로세스가 자식 프로세스의 연산을 기다려야 한다는 것
- 따라서 부모 프로세스는 자식 프로세스의 종료 상태를 기다릴 수 있어야 함
ㄴ WaitForSingleObject 함수를 사용함으로 문제 해결이 가능
- 멀티 프로세스를 이용하여 연산을 나누어 성능 향상이 가능
'시스템 프로그래밍' 카테고리의 다른 글
8-2. 핸들 테이블과 오브젝트 핸들의 상속 (0) | 2022.05.20 |
---|---|
8-1. 프로세스 환경변수 (0) | 2022.05.20 |
7-1. 프로세스간 통신(IPC) (0) | 2022.05.17 |
6-2. 커널 오브젝트와 핸들의 종속관계 (0) | 2022.05.14 |
6-1. 커널 오브젝트에 대한 이해 (0) | 2022.05.13 |