카테고리 없음

Windows NT 커널이 어떻게 하드웨어 관리, 메모리 관리, 입출력 장치 제어 등의 기능을 수행하는지에 관한 핵심 메커니즘 250429

mezzanineX 2025. 4. 29. 07:51

q1: Windows NT 커널이 실제로 어떻게 하드웨어 관리,  메모리 관리, 입출력 장치 제어 등의 기능을 수행하는지에 관한 핵심 메커니즘

a1:

Windows NT 커널이 실제로 어떻게 하드웨어 관리,  메모리 관리, 입출력 장치 제어 등의 기능을 수행하는지에 관한 핵심 메커니즘



1. 하드웨어 관리

1-1. CPU 스케줄링
스레드 우선순위 기반 선점(preemptive) 스케줄러
각 스레드에 0–31 사이의 우선순위(priority) 할당
실시간(real-time) 클래스(16‐31)와 가변 클래스(dynamic, 1‐15)로 구분
디스패처(Dispatcher)
Ready Queue: 우선순위별로 여러 개의 대기 큐를 유지
양자(quantum): 스레드가 CPU를 독점할 수 있는 시간 단위(default 15–30ms)
타이머 인터럽트 시점에 현재 실행 스레드의 남은 양자를 감소시키고, 0이 되면 Ready 큐로 돌려보낸 뒤 다음 우선순위 스레드 실행
컨텍스트 스위치
레지스터 상태, 스택 포인터, 페이징 정보 등 CPU 상태를 저장/복원
비동기 이벤트(디바이스 인터럽트)나 스케줄러 타임 슬라이스 만료 시 일어남

1-2. 메모리 관리
가상 메모리(Virtual Memory) 시스템
각 프로세스에 64-bit 주소 공간(Windows x64 기준)을 독립 제공
페이지(4 KiB 기본) 단위로 물리 메모리 ↔ 디스크(Paging File) 전환
페이지 테이블 & TLB
프로세스별 페이지 디렉터리/PTE(Page Table Entry) 관리
CPU 내장 TLB(Translation Lookaside Buffer)로 자주 참조되는 매핑 캐싱
작업 집합(Working Set)
• 프로세스가 “당장 물리 메모리에 갖고 있어야 할 페이지” 집합
커널이 페이지 폴트(page fault) 빈도, 시스템 전체 메모리 압력 등을 보고 동적으로 확장·축소
비관리 메모리
• 파일 캐시, 시스템 캐시(바이트 맵버리)로 디스크 I/O 최소화

1-3. 입출력 장치 제어
I/O 매니저(I/O Manager)
IRP(I/O Request Packet): 모든 디바이스 I/O 요청을 IRP 형태로 추상화
장치 드라이버 스택:
1. 최상위 드라이버(File System Driver 또는 Class Driver)
2. 필터 드라이버(optional)
3. 펑션 드라이버(Function Driver)
4. 버스 드라이버(Bus Driver)
IRP를 위 계층 구조대로 전달(pass‐down)하면서, 각 드라이버가 처리 후 Completion Routine으로 역전달
윈도우 드라이버 모델(WDM) / KMDF
공통 드라이버 프레임워크 제공 → 하드웨어별 차이는 최소화
Plug & Play, 전원 관리, 에러 처리 등을 표준화된 콜백으로 구현



2. 시스템 자원 분배

2-1. 다중 사용자·다중 작업 관리
세션(Session) 분리
터미널 서비스(원격 데스크톱) 환경에서 사용자별로 세션 오브젝트 생성
프로세스·윈도우 오브젝트·레지스트리 뷰 등을 세션별로 격리
잡(Job Object)
프로세스 그룹 단위로 CPU 시간, 메모리 사용량, I/O 대역폭 등 리소스 한계 설정
관리자 → 작업 관리자 등에서 ‘작업 집합’만 봐도 여러 프로세스를 하나로 묶어 관리

2-2. 권한·격리 (보안)
보안 토큰(Security Token)
로그인 시 생성되는 “사용자 신분증”으로, SID(보안 식별자), 그룹, 권한(Privilege) 포함
액세스 제어(ACL / DACL)
파일·레지스트리·프로세스·스레드 등 모든 커널 오브젝트(Object)에 보안 디스크립터 부착
요청 시 커널이 보안 토큰과 비교하여 허가 여부 결정
• 커널/유저 모드 분리
유저 모드 프로세스가 직접 하드웨어 접근 불가 → 시스템 콜로만 커널 서비스 호출
크래시나 악성 코드가 커널로 침투하는 것을 방어



3. 추상화 제공

3-1. 시스템 콜(System Call) 인터페이스
Win32 API → ntdll.dll → kernel
1. 애플리케이션이 CreateFile() 같은 Win32 API 호출
2. ntdll.dll에서 NtCreateFile로 변환 후 Intel syscall(x64) 명령어 실행
3. CPU가 유저 모드 → 커널 모드 전환, **서비스 디스패처(SSD)**가 해당 함수 핸들러로 분기
4. 커널 함수가 처리 완료 후 결과를 유저 모드에 반환
• 추상화 계층
파일 시스템, 네트워크 소켓, 프로세스 제어 등 공통 인터페이스(Win32 API) 제공
실제 구현은 커널 오브젝트(Object Manager), I/O 매니저, 네트워크 스택(TCP/IP 클램프) 등이 담당

3-2. 커널 오브젝트 Manager
모든 자원(이벤트, 뮤텍스, 세마포어, 파일 등)을 Handle 기반으로 관리
프로세스별 Handle Table → 공통 Object Table에 인덱스
응용프로그램은 Handle만 알면, 내부 구조 몰라도 안전하게 사용



이처럼 Windows NT 커널
1. 스케줄러/메모리 매니저/I/O 매니저로 하드웨어를 직접 제어하고,
2. 세션·잡·보안 토큰·ACL로 다중 사용자·다중 작업을 격리·관리하며,
3. Win32 API→시스템 콜→커널 서비스와 Handle 기반 오브젝트 추상화 계층을 통해 응용프로그램에 일관된 인터페이스를 제공합니다.

반응형