Windows 운영체제는 프로세스, 쓰레드 혹은 파일과 같은 리소스들을 원활히 관리하기 위해 필요한 정보를 저장해야 한다. 이때 데이터를 저장하는 메모리 블록을 가리켜 커널 오브젝트라 한다.
프로그래머는 직접 커널 오브젝트를 조작할 수 없다.
그러나 MS에서 제공해 주는 시스템 함수를 이용하면 간접적 조작은 가능하다.
Windows는 커널 오브젝트를 생성할 때마다 핸들이라는 정수값을 하나씩 부여한다. 이 정수값만 알 수 있다면, 커널 오브젝트를 지시하는 것은 쉬운 일이 된다.
쓰레드의 종료 시점을 알기 위해서는 커널 오브젝트의 상태를 알아야 한다.
커널 오브젝트에는 두 가지 상태(state)가 있다.
- 종료된 상태 : signaled 상태 - TRUE
- 종료되지 않은 상태 : non-signaled 상태 - FALSE
운영체제는 프로세스나 쓰레드가 종료되면 해당 커널 오브젝트를 signaled 상태로 변경한다.
-> 프로세스와 쓰레드의 커널 오브젝트 상태가 초기에는 non-signaled 상태
커널 오브젝트의 상태를 알 수 있는 방법
- WaitForSingleObject(), WaitForMultipleObjects()
'프로그래밍' 카테고리의 다른 글
소켓 데이터 입력 함수 - recv() (0) | 2012.06.06 |
---|---|
커널모드 동기화 기법 - 뮤텍스(Mutex), 세마포어(Semaphore), 이벤트(Event) (0) | 2012.06.06 |
파일에 대한 오해 - 바이너리 모드 오픈, 텍스트 모드 오픈 (0) | 2012.06.02 |
feof 함수 (0) | 2012.06.02 |
fgets와 gets의 차이점? (0) | 2012.06.02 |