본문 바로가기

kernel object

핸들 테이블과 오브젝트 핸들의 상속 핸들 테이블과 오브젝트 핸들의 상속 지금까지 핸들 값을 받아오고 종료하는 것에 대해서 공부했습니다. Mailslot을 만들 때 CreateMailslot()을 통해서 메일 슬롯을 만들었는데 이 메일 슬롯 또한 커널 오브젝트가 존재합니다.앞서 지금까지 설명한 내용을 바탕으로 핸들이라는 것이 해당 커널 오브젝트를 지정하고자 정수 값으로 나타낸 것이라고 했습니다. 그렇다면 생성된 Mailslot의 주소가 0x1000이라고 하고 핸들 값을 123이라고 하면 해당 핸들을 가지고 CloseHandle()을 통해서 소멸시킬 수 있었습니다.그러면 단순히 Handle 값만 알고 어떻게 0x1000에 있는 커널 오브젝트를 찾아가 소멸시킬 수 있었을까요? 이러한 이유는 핸들 테이블이라는 것이 존재하기 때문입니다. 핸들 테이.. 더보기
커널 오브젝트 (Kernel Object) 커널 오브젝트 (Kernel Object) 개념 프로세스의 상태정보(Ready, Running, Blocked)와 우선순위 정보를 예로 들어보자.이러한 정보들을 운영체제 내에서 저장되는데 이러한 정보가 상태나 우선순위가 바뀜에 따라서 갱신되어야 합니다.스케줄러가 위와 같은 정보를 가지고 관리를 할 수 있습니다. 따라서 윈도우 개발자들은 정보를 저장하기 위해서 프로세스 관리 구조체를 만들게 되었고 이를 커널 오브젝트라고 합니다. 이외의 커널 오브젝트 쓰레드, IPC 등을 생성할 때에도 커널 오브젝트가 생성됩니다. 하지만 모든 것이 동일한 구조체로 생성되는 것은 아닙니다. 종류에 따라 서로 다른 구조체가 생성됩니다. 프로세스 우선순위 변경 프로세스의 우선순위를 변경하는 것은 SetPriorityClass().. 더보기