Programming37 드라이버 개발 핵심 - 18화 인터럽트, ISR, DPC Windows 커널 & 드라이버 시리즈 — 18화인터럽트, ISR, DPC — 하드웨어 신호를 두 단계로 처리하는 이유 📅 2026 ⏱ 읽기 약 14분 🏷 인터럽트 / ISR / DPC / IoConnectInterrupt 키보드를 누르면 어떻게 드라이버까지 신호가 전달될까요? 하드웨어는 CPU에 "인터럽트"를 보내고, CPU는 하던 일을 잠깐 멈추고 드라이버의 ISR을 호출해요. 그런데 ISR은 최대한 빨리 끝내야 하기 때문에, 무거운 처리는 DPC로 미뤄둡니다. 이 두 단계 처리 구조를 이번 화에서 파헤쳐 볼게요.인터럽트란?하드웨어 장치는 CPU에 비동기적으로 신호를 보낼 수 있어요. 이게 인터럽트입니다. CPU는 인터럽트를 받으면 현재 실행 중이던 코드를 잠깐 멈추고, 미리 등록된 인터럽.. 2026. 6. 8. 드라이버 개발 핵심 - 17화 MDL Windows 커널 & 드라이버 시리즈 — 17화MDL — 유저 메모리를 안전하게 커널에서 접근하는 방법 📅 2026 ⏱ 읽기 약 13분 🏷 MDL / MmProbeAndLockPages / DMA / Direct I/O 12화에서 Direct I/O 방식을 선택하면 MDL을 통해 버퍼에 접근한다고 했어요. MDL(Memory Descriptor List)은 처음 보면 복잡해 보이지만, "유저 버퍼의 물리 페이지 목록"이라고 이해하면 훨씬 친숙해져요. 대용량 I/O와 DMA를 다루려면 MDL을 반드시 알아야 합니다.왜 MDL이 필요한가유저 모드 버퍼는 가상 주소 공간에 있어요. 이 가상 주소가 가리키는 물리 페이지들은 메모리 어디에나 흩어져 있을 수 있고, 더 나쁜 건 언제든 스왑 아웃될 수 .. 2026. 6. 5. 드라이버 개발 핵심 - 16화 커널 메모리 풀 관리 Windows 커널 & 드라이버 시리즈 — 16화커널 메모리 풀 관리 — NonPaged vs Paged, 안전한 할당과 해제 📅 2026 ⏱ 읽기 약 12분 🏷 NonPagedPool / PagedPool / ExAllocatePool / 메모리 태그 드라이버에서 동적으로 메모리를 할당할 때 malloc()을 쓰면 안 돼요. 커널 환경에서는 ExAllocatePool 계열 함수를 써야 하는데, 어느 풀을 쓸지 잘못 선택하면 BSOD로 직결됩니다. 이번 화에서 올바른 선택 기준을 잡아드릴게요.두 가지 커널 메모리 풀 구분 NonPaged Pool Paged Pool 스왑 여부 절대 디스크로 스왑되지 않음 디스크로 스왑될 수 있음 접근 가능.. 2026. 6. 4. 이전 1 2 3 4 5 ··· 13 다음