* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다
https://product.kyobobook.co.kr/detail/S000001223395
* 커널
컴퓨터를 운영하는데 있어서 중심이 되는 운영체제 핵심 부분을 뜻함
* 커널 오브젝트
Windows 운영체제는 프로세스, 쓰레드 혹은 파일과 같은 리소스(Resource)들을
원활히 관리하기 위해 필요한 정보를 저장해야 한다.
이때 데이터를 저장하는 메모리 블록을 가리켜 커널 오브젝트라 한다
→ 프로세스가 생성될 때마다 프로세스 관리 구조체 변수가 하나씩 생성되고 새롭게 생성된 프로세스 정보들로 초기화
* 메모리 블록(memory block)
OS 또는 프로그램이 기억 공간을 임시적으로 분할하여 사용하는 하나의 단위
* 핸들(Handle)
커널 오브젝트에 할당되는 숫자
각각의 프로세스가 자신만의 핸들 테이블을 하나씩 구성하고 관리한다
* 프로세스의 우선순위(Priority) 변경
BOOL SetPriorityClass(
[in] HANDLE hProcess,
[in] DWORD dwPriorityClass
);
hProcess
: 우선순위를 변경할 프로세스의 핸들(Handle)을 전달한다
dwPriorityClass
: 새롭게 적용할 우선순위 정보를 전달한다
* 현재 실행되고 있는 프로세스의 핸들 얻기
HANDLE GetCurrentProcess();
* 프로세스 핸들은 프로세스의 커널 오브젝트를 가리키기(구분짓기) 위한 것이고,
프로세스 ID는 프로세스 자체를 구분짓기 위한 것이다
* 프로세스가 소멸된다고 해서 커널 오브젝트가 소멸된다고 말할 수 없다
소멸될 수도, 소멸되지 않을 수도 있다 >> 운영체제 결정 사항
* 운영체제는 커널 오브젝트 소멸 시점을 어떻게 결정하는가?
커널 오브젝트를 참조하는 대상이 하나도 없을 때, 소멸시키는 것이 가장 이상적이고,
이것이 Windows가 커널 오브젝트를 소멸시키기를 결정하는 방식이다
* Usage count
커널 오브젝트 참조 카운트
* 핸들을 반환하면서 커널 오브젝트의 Usage count를 하나 감소시키는 기능
BOOL CloseHandle(
[in] HANDLE hObject
);
hObject
: 열린 객체에 대한 유요한 핸들
https://learn.microsoft.com/ko-kr/windows/win32/api/handleapi/nf-handleapi-closehandle
* 커널 전역 데이터 구조, 전역 or 프로세스별 커널 오브젝트
https://shine94.tistory.com/359
'IT공부 > IT서적' 카테고리의 다른 글
[윤성우 열혈 C프로그래밍] 디버깅 빌드, 어셈블리 코드 - Chapter1, Chapter2, Chapter3 (0) | 2025.01.12 |
---|---|
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 7장. 프로세스간 통신(IPC) - 1 (0) | 2025.01.07 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 5장. 프로세스의 생성과 소멸 (0) | 2024.12.24 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 4장. 컴퓨터 구조 - 2 (0) | 2024.12.24 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 3장. 64비트 기반 프로그래밍 (0) | 2024.12.21 |