이미 소장하고 있다면 판매해 보세요.
|
8장. 시스템 메커니즘
__프로세서 실행 모델 ____세그먼테이션 ____작업 상태 세그먼트 __하드웨어 사이드 채널 취약점 ____비순차적 실행 ____CPU 분기 예측기 ____CPU 캐시 ____사이드 채널 공격 __윈도우의 사이드 채널 공격 완화 ____커널 가상 주소 섀도우 ____하드웨어 간접 분기 제어(IBRS, IBPB, STIBP, SSBD) ____리트폴린과 임포트 최적화 ____STIBP 페어링 __트랩 디스패칭 ____인터럽트 디스패칭 ____라인 기반 인터럽트와 메시지 기반 인터럽트 ____타이머 처리 ____시스템 작업자 스레드 ____예외 디스패칭 ____시스템 서비스 핸들링 __WoW64(윈도우 안의 윈도우) ____WoW64 코어 ____파일 시스템 리다이렉션 ____레지스트리 리다이렉션 ____AMD64 플랫폼에서 x86 시뮬레이션 ____ARM ____메모리 모델 ____ARM64 플랫폼에서 ARM32 시뮬레이션 ____ARM64 플랫폼에서 X86 시뮬레이션 __객체 관리자 ____이그제큐티브 객체 ____객체 구조체 __동기화 ____High-IRQL 동기화 ____Low-IRQL 동기화 __고급 로컬 프로시저 호출 ____연결 모델 ____메시지 모델 ____비동기 작업 ____뷰, 영역, 섹션 ____속성 ____블롭, 핸들, 리소스 ____핸들 전달 ____보안 ____성능 ____전원 관리 ____ALPC 다이렉트 이벤트 속성 ____디버깅과 추적 __윈도우 알림 기능 ____WNF 기능 ____WNF 유저 ____WNF 상태 이름과 저장소 ____WNF 이벤트 기반 수집 __유저 모드 디버깅 ____커널 지원 ____네이티브 지원 ____윈도우 서브시스템 지원 __패키지 애플리케이션 ____UWP 애플리케이션 ____센테니얼 애플리케이션 ____호스트 활동 관리자 ____상태 저장소 ____종속성 미니 저장소 ____백그라운드 작업 및 브로커 인프라 ____패키지 애플리케이션 설치와 시작 ____패키지 활성화 ____패키지 등록 __결론 9장. 가상화 기술 __윈도우 하이퍼바이저 ____파티션, 프로세스, 스레드 ____하이퍼바이저 시작 ____하이퍼바이저 메모리 관리자 ____하이퍼V 스케줄러 ____하이퍼콜과 하이퍼바이저 TLFS ____인터셉트 ____가상 인터럽트 컨트롤러(SynIC) ____윈도우 하이퍼바이저 플랫폼 API와 EXO 파티션 ____중첩된 가상화 ____ARM64 윈도우 하이퍼바이저 __가상화 스택 ____가상 머신 관리자 서비스와 작업자 프로세스 ____VID 드라이버와 가상화 스택 메모리 관리자 ____가상 머신(VM)의 탄생 ____VMBus ____가상 하드웨어 지원 ____VA-backed VM __가상화 기반 보안(VBS) ____가상 신뢰 수준(VTL)과 가상 보안 모드(VSM) ____VSM에서 제공하는 서비스와 요구 사항 __보안 커널 ____가상 인터럽트 ____보안 인터셉트 ____VSM 시스템 콜 ____보안 스레드와 스케줄링 ____하이퍼바이저 적용 코드 무결성 ____UEFI 런타임 가상화 ____VSM 시작 ____보안 커널 메모리 관리자 ____핫 패치 __격리된 유저 모드 ____트러스트렛 생성 ____보안 디바이스 ____VBS 기반 엔클레이브 ____시스템 가드 런타임 증명 __결론 10장. 관리, 진단, 추적 __레지스트리 ____레지스트리 보기와 변경 ____레지스트리 사용 ____레지스트리 데이터 유형 ____레지스트리의 논리적 구조 ____애플리케이션 하이브 ____트랜잭션 레지스트리(TxR) ____레지스트리 행위 모니터링 ____프로세스 모니터의 내부 구조 ____레지스트리 내부 ____하이브 개편 ____레지스트리 네임스페이스와 동작 ____안전한 저장소 ____레지스트리 필터링 ____레지스트리 가상화 ____레지스트리 최적화 __윈도우 서비스 ____서비스 애플리케이션 ____서비스 계정 ____SCM ____서비스 제어 프로그램 ____자동 시작 서비스 시작 ____지연된 자동 시작 서비스 ____트리거 시작 서비스 ____시작 에러 ____부팅 및 마지막 정상 승인 확인 ____서비스 실패 ____서비스 종료 ____공유 서비스 프로세스 ____서비스 태그 ____유저 서비스 ____패키지 서비스 ____보호된 서비스 __작업 스케줄링과 UBPM ____작업 스케줄러 ____UBPM ____작업 스케줄러 COM 인터페이스 __윈도우 관리 도구 ____WMI 아키텍처 ____WMI 공급자 ____CIM과 MOF 언어 ____클래스 연관화 ____WMI 구현 ____WMI 보안 __윈도우 이벤트 추적(ETW) ____ETW 초기화 ____ETW 세션 ____ETW 공급자 ____공급자 이벤트 ____ETW 로그 스레드 ____이벤트 소비 ____시스템 로그 ____ETW 보안 __동적 트레이스(DTrace) ____내부 아키텍처 ____DTrace 타입 라이브러리 __윈도우 에러 보고(WER) ____유저 애플리케이션 크래시 ____커널 모드(시스템) 크래시 ____프로세스 행 감지 __전역 플래그 __커널 심 ____심 엔진 초기화 ____심 데이터베이스 ____드라이버 심 ____디바이스 심 __결론 11장. 캐싱과 파일 시스템 __용어 __캐시 관리자의 주요 특징 ____단일, 중앙 집중형 시스템 캐시 ____메모리 관리자 ____캐시 일관성 ____가상 블록 캐싱 ____스트림 기반 캐싱 ____복구 가능 파일 시스템 지원 ____NTFS MFT 작업 집합 기능 향상 ____메모리 파티션 지원 __캐시의 가상 메모리 관리 __캐시 크기 ____캐시 가상 크기 ____캐시 작업 집합 크기 ____물리적인 캐시 크기 __캐시 데이터 구조 ____시스템 전역 캐시 데이터 구조 ____파일 단위 캐시 데이터 구조체 __파일 시스템 인터페이스 ____캐시로 복사/캐시로부터의 복사 ____매핑 및 고정 인터페이스를 통한 캐싱 ____직접 메모리 액세스 인터페이스를 이용한 캐싱 __패스트 I/O __미리 읽기와 나중 쓰기 ____지능형 미리 읽기 ____미리 읽기 기능 향상 ____재기록 캐싱과 지연 라이터 ____파일에 대한 지연 라이터 비활성화 ____캐시로 하여금 디스크에 즉시 쓰기 강제하기 ____맵 파일 플러시하기 ____쓰기 조절 ____시스템 스레드 ____비하인드 강제 쓰기와 낮은 우선순위 지연 라이터 ____동적 메모리 ____캐시 관리자 디스크 I/O 계정 __파일 시스템 ____윈도우 파일 시스템 형식 ____CDFS ____UDF ____FAT12, FAT16, FAT32 ____exFAT ____NTFS ____ReFS ____파일 시스템 드라이버 아키텍처 ____로컬 FSD ____원격 FSD ____파일 시스템 동작 ____명시적 파일 I/O ____메모리 관리자의 변경 페이지 라이터와 맵드 페이지 라이터 ____캐시 관리자의 지연 라이터 ____캐시 관리자의 미리 읽기 스레드 ____메모리 관리자의 페이지 폴트 핸들러 ____파일 시스템 필터 드라이버와 미니필터 ____네임드 파이프 및 메일슬롯 필터링 ____리파스 포인트의 동작 제어 ____프로세스 모니터 __NT 파일 시스템(NTFS) ____하이엔드 파일 시스템 요구 사항 ____복구 기능 ____보안 ____데이터 중복과 내결함성 ____NTFS 고급 기능 ____다중 데이터 스트림 ____유니코드 기반의 이름 ____범용적인 인덱싱 기능 ____동적으로 수행되는 손상 클러스터 재할당 ____하드 링크 ____심볼릭(소프트) 링크와 정션 ____압축과 스파스 파일 ____로깅 변경 ____유저별 볼륨 쿼터 ____링크 추적 ____암호화 ____POSIX 스타일의 삭제 의미 ____조각 모음 ____동적 파티셔닝 ____계층적 볼륨에 대한 NTFS 지원 __NTFS 파일 시스템 드라이버 __디스크상의 NTFS 구조 ____볼륨 ____클러스터 ____마스터 파일 테이블 ____파일 레코드 번호 ____파일 레코드 ____파일 이름 ____터널링 ____상주와 비상주 속성 ____데이터 압축과 스파스 파일 ____스파스 데이터의 압축 ____비스파스 데이터 압축 ____스파스 파일 ____변경 저널 파일 ____인덱싱 ____객체 ID ____쿼터 추적 ____통합 보안 ____리파스 포인트 ____스토리지 예약 및 NTFS 예약 ____트랜잭션 지원 ____격리 ____트랜잭션 API ____디스크에서의 지원 ____로깅 지원 __NTFS 복구 지원 ____설계 ____메타데이터 로깅 ____로그 파일 서비스 ____로그 레코드 유형 ____복구 ____분석 패스 ____재실행 패스 ____취소 패스 ____NTFS 불량 클러스터 복구 ____자가 복구 ____온라인 디스크 검사와 신속한 복구 __암호화 파일 시스템 ____파일 최초 암호화 ____복호화 프로세스 ____암호화된 파일 백업 ____암호화된 파일 복사 ____비트락커 암호화 부하 분산 ____온라인 암호화 지원 __직접 액세스(DAX) 디스크 ____DAX 드라이버 모델 ____DAX 볼륨 ____DAX 볼륨 캐시와 넌캐시 I/O ____실행 가능 이미지 매핑 ____블록 볼륨 ____파일 시스템 필터 드라이버 및 DAX ____DAX 모드 I/O 플러시 ____큰 페이지 및 대용량 페이지 지원 ____가상 PM 디스크 및 저장 공간 지원 __복원 파일 시스템(ReFS) ____민스토어 아키텍처 ____B+ 트리의 물리적 레이아웃 ____할당자 ____페이지 테이블 ____민스토어 I/O ____ReFS 아키텍처 ____ReFS 온디스크 구조 ____객체 ID ____보안 및 변경 저널 __ReFS의 고급 기능 ____파일 차단 복제(스냅샷 지원)와 스파스 VDL ____ReFS 즉시 쓰기 ____ReFS 복구 지원 ____누수 감지 ____기와식 자기 기록(SMR) 볼륨 ____계층적 볼륨 및 SMR에 대한 ReFS 지원 ____컨테이너 압축 ____압축 및 고스팅 __스토리지 공간 ____스페이스 내부 아키텍처 ____스페이스가 제공하는 서비스 __결론 12장. 시작과 종료 __부팅 과정 ____UEFI 부트 ____BIOS 부팅 프로세스 ____보안 부팅 ____윈도우 부팅 관리자 ____부팅 메뉴 ____부팅 애플리케이션 시작 ____측정된 부팅 ____신뢰된 실행 ____윈도우 운영체제 로더 ____iSCSI 부팅 ____하이퍼바이저 로더 ____VSM 시작 정책 ____보안 실행 ____커널과 이그제큐티브 서브시스템 초기화 ____커널 초기화 단계 1 ____Smss, Csrss, Wininit ____레디부트 ____자동 시작 이미지 ____종료 ____하이버네이션 및 빠른 시작 ____윈도우 복원 환경(WinRE) ____안전 모드 ____안전 모드에서 드라이버 로드 ____안전 모드 지원 유저 프로그램 ____부팅 상태 파일 __결론 |
Andrea Allievi
Alex Inoescu
알렉스 이오네스쿠의 다른 상품
Mark E. Russinovich
마크 러시노비치의 다른 상품
David Solomon
데이비드 솔로몬의 다른 상품
|
이 책에서 다루는 내용
- ALPC, 객체 관리자, 동기화, WNF, WoW64 및 프로세서 실행 모델을 포함해 장치 드라이버 및 애플리케이션을 제공하기 위한 시스템 메커니즘 이해 - 트랩 프로세싱, 세그먼테이션 및 사이드 채널(side channel) 보안 취약점을 포함한 기본 하드웨어 아키텍처 분석 - OS 취약점으로부터 윈도우 가상화 및 가상화 기반 보안(VBS)이 보호하는 방법 이해 - 레지스트리, 윈도우 서비스, WMI, 작업 스케줄링을 포함한 주요 관리 및 구성 메커니즘 이해 - 윈도우 이벤트 추적(ETW) 및 DTrace와 같은 분석 서비스 이해 - 캐시 관리자와 파일 시스템 드라이버가 어떻게 상호작용해 파일, 디렉터리 및 디스크를 안정적으로 지원 이해(NVDIMM(영구 메모리) DAX장치 포함) - NTFS, ReFS 및 기타 윈도우 파일 시스템 이해 - 윈도우 시작/종료 작업 및 부팅 흐름에 관련된 OS 구성 요소 분석 - UEFI 기반 보안 부팅, 측정된 부팅 및 보안 부팅 분석 이 책의 대상 독자 독자가 고급 사용자 수준의 윈도우 환경에 익숙하고 CPU 레지스터, 메모리, 프로세스, 스레드와 같은 운영체제 및 하드웨어 개념을 기본적으로 이해하고 있다고 가정한다. 함수, 포인터 및 유사한 C 프로그래밍 언어 구조에 대한 기본적인 이해가 있어야 내용을 이해하기에 유리하다. 이 책의 구성 7판은 6판과 마찬가지로 2권으로 나뉘며, 이 책은 Vol.2다. · 8장, '시스템 메커니즘'에서는 ALPC, 객체 관리자, 동기화 루틴 등 운영체제가 디바이스 드라이버와 애플리케이션에 주요 서비스를 제공하는 데 사용하는 중요한 내부 메커니즘에 대한 정보를 제공한다. 또한 트랩 처리, 세분화 및 사이드 채널 취약성을 비롯해 윈도우가 실행되는 하드웨어 아키텍처와 이를 해결하는 데 필요한 해결 방법에 대한 세부 정보를 알아본다. · 9장, '가상화 기술'에서는 윈도우 OS가 최신 프로세서가 제공하는 가상화 기술을 사용해 사용자가 동일한 시스템에서 여러 가상 머신을 생성하고 사용할 수 있게 하는 방법을 설명한다. 또한 가상화는 새로운 수준의 보안을 제공하고자 윈도우에서 폭넓게 사용한다. 따라서 9장에서는 보안 커널 및 격리된 사용자 모드를 자세히 알아본다. · 10장, '관리, 진단, 추적'에서는 관리, 구성, 진단을 위해 운영체제에서 구현된 기본 메커니즘을 자세히 설명한다. 특히 윈도우 레지스트리, 윈도우 서비스, WMI 및 작업 스케줄링과 함께 윈도우용 이벤트 추적ETW 및 DTrace와 같은 진단 서비스를 살펴본다. · 11장, '캐싱과 파일 시스템'에서는 가장 중요한 ‘스토리지’ 구성 요소인 캐시 관리자와 파일 시스템 드라이버가 어떻게 상호작용해 파일, 디렉터리 및 디스크 장치에서 효율적이고 안전한 방식으로 작동하는지 보여준다. 또한 윈도우에서 지원하는 파일 시스템, 특히 NTFS와 ReFS를 자세히 알아본다. · 12장, '시작과 종료'에서는 시스템을 시작하고 종료할 때 발생하는 작업 흐름과 부팅 흐름에 관여하는 운영체제 구성 요소를 살펴본다. 또한 보안 부팅, 측정 부팅 및 보안 실행과 같은 UEFI의 새로운 기술도 알아본다. 지은이의 말 윈도우 10(2021년 5월 업데이트, 일명 21H1까지) 및 윈도우 서버(서버 2016부터 서버 2022까지) 운영체제의 핵심 구성 요소가 내부적으로 어떻게 작동하는지 이해하려는 고급 컴퓨터 전문가(개발자, 보안연구원, 시스템관리자)를 대상으로 하며, 윈도우 11X 및 엑스박스 운영체제와 공유되는 많은 구성 요소가 포함된 책이다. 이러한 지식을 통해 개발자는 윈도우 플랫폼에 특화된 애플리케이션을 빌드할 때 디자인 선택의 근거를 더 잘 이해하고, 더 강력하고 확장 가능하며 안전한 소프트웨어를 만들기 위한 더 나은 판단을 내릴 수 있다. 또한 개발자는 시스템 핵심에 깊이 자리 잡은 복잡한 문제를 디버깅하는 기술을 향상시키는 동시에 유용하게 사용할 수 있는 도구를 배울 수 있다. 시스템 관리자는 운영체제가 ‘내부에서’ 어떻게 작동하는지 이해하면 시스템의 예상 성능 작동 방식을 쉽게 이해하고, 이러한 정보를 활용할 수 있다. 따라서 문제가 발생했을 때 시스템 문제를 훨씬 쉽게 해결할 수 있으며, 사소한 문제에서 심각한 문제를 분류하는 데 도움이 된다. 마지막으로 보안 연구원은 소프트웨어 애플리케이션과 운영체제가 어떻게 오작동하고 악용돼 바람직하지 않은 동작을 유발할 수 있는지 파악하는 동시에 이러한 시나리오에 대해 최신 윈도우 시스템에서 제공하는 보안 기능과 방어 기능을 이해할 수 있다. 포렌식 전문가는 어떤 데이터 구조와 메커니즘을 사용해 변조 행위를 찾을 수 있는지, 윈도우 자체에서 이러한 동작을 탐지하는 방법을 배울 수 있다. 누구든 이 책을 읽고 나면 윈도우가 어떻게 작동하고 왜 그렇게 작동하는지 더 잘 이해할 수 있을 것이다. 옮긴이의 말 윈도우 시스템 프로그래머를 위한 고전적인 참고서인 『Windows Internals 7/e Vol.2』를 한국어로 번역하게 돼 정말 기쁘다. 이 책은 윈도우 운영체제의 내부 작동 방식에 대한 포괄적이고 심층적인 정보를 제공한다. 이 책을 번역하는 것은 쉽지 않은 작업이었다. 전문 용어와 개념이 많았고, 정확하고 이해하기 쉽게 번역하는 것이 중요했다. 독자의 필요를 염두에 두면서 텍스트를 충실하게 번역하고자 최선을 다했다. 번역 과정에서 용어가 항상 진화하기 때문에 정확한 최신 용어를 사용하는 것이 중요했다. 개념이 복잡하고 설명하기 어려웠기 때문에 더 작은 조각으로 나누고 그림과 예제를 사용해 설명했다. 이 책은 다음과 같은 내용을 포함한다. · 윈도우 운영체제의 내부 구조와 동작 방식 · 윈도우 시스템 프로그래밍을 위한 기초 지식 · 윈도우 성능 최적화 및 디버깅에 대한 팁 또한 이번에 새로 업데이트된 내용을 포함하고 있다. 2장에서부터 시작 및 종료 프로세스, 레지스트리 하위 시스템, UWP 등 시스템의 광범위한 부분이 업데이트됐다. 단순히 새로워진 내용뿐 아니라 하이퍼V, 캐싱 및 파일 시스템, 진단 및 추적에 대해 자세히 설명하는 3개의 새로운 장도 추가됐다. 이러한 추가 사항을 통해 윈도우 시스템 프로그래머는 윈도우 운영체제의 내부 작동 방식에 대한 좀 더 포괄적인 최신 정보를 얻을 수 있다. 이 책을 통해 윈도우 시스템 프로그래밍에 대한 지식을 쌓고 윈도우 운영체제를 더 잘 이해할 수 있기를 바란다. |
|
큰 성공을 거둔 윈도우 3.1 운영체제의 내부를 사용하고 살펴본 필자는 1993년 마이크로소프트가 윈도우 NT 3.1을 출시했을 때 세상을 바꿀 윈도우 3.1의 잠재력을 즉시 알아챘다. 윈도우 NT의 아키텍트이자 엔지니어링 리더였던 데이비드 커틀러(David Cutler)는 안전하고 안정적이며 확장성이 뛰어나면서도 사용자 인터페이스와 소프트웨어 실행 기능이 이전 버전과 동일한 윈도우 버전을 만들었다. 헬렌 커스터(Helen Custer)의 책 『Inside Windows NT』(Microsoft Press, 1992)는 디자인과 아키텍처에 대한 훌륭한 지침서였지만 실제 작동에 대해 더 깊이 있게 다룬 책이 필요하고 수요가 있다고 생각했다. 데이비드 커틀러의 이전 개발에 대한 최종 가이드인 『VAX/VMS Internals and Data Structures』(Digital Press, 1984)는 텍스트로 얻을 수 있는 소스코드에 가까운 책이었고, 필자는 그 책의 윈도우 NT 버전을 집필하기로 생각했다. 하지만 박사 학위를 마치고 작은 소프트웨어 회사에서 경력을 시작하느라 바빴기 때문에 진척은 더디기만 했다. 윈도우 NT에 대해 배우고자 문서를 읽고 코드를 리버스 엔지니어링하고, Regmon 및 Filemon과 같은 시스템 모니터링 도구를 코딩하고, 이를 사용해 윈도우 NT의 작동 방식을 내부적으로 살펴봄으로써 구조를 이해하는 데 도움이 되는 도구를 개발했다. 그렇게 배운 지식을 윈도우 NT 관리자를 위한 잡지인 〈Windows NT Magazine〉에서 매달 ‘NT 내부’ 칼럼을 통해 공유했다. 이 책은 IDG 출판사와 집필 계약을 맺은 책인 『Windows Internals』에 실을 내용의 기초가 됐다.
이 책의 집필은 풀타임 업무와 창업한 윈터널스 소프트웨어(Winternals Software)의 시스인터널스(Sysinternals)(당시NT인터널스) 프리웨어 및 상용 소프트웨어를 작성하느라 더디게 진행됐다. 그러던 중 1996년 데이브 솔로몬(Dave Solomon)이 『Inside Windows NT, 2/e』(Microsoft Press, 1997)을 출간했을 때 충격을 받았다. 이 책이 인상적이면서도 실망스러웠다. 헬렌의 책을 완전히 재집필한 이 책은 계획했던 대로 윈도우 NT의 내부를 더 깊고 폭넓게 다루고 있었으며, 윈도우 NT 리소스 키트와 디바이스 드라이버 개발 키트(DDK, Driver Development Kit)의 기본 제공 도구 및 진단 유틸리티를 사용해 주요 개념과 동작을 시연하는 새로운 실습을 포함하고 있었다. 그는 기준을 매우 높게 끌어올렸기 때문에 그가 달성한 품질과 수준에 맞는 책을 쓴다는 것은 나의 계획보다 훨씬 더 큰 의미가 있다는 것을 알았다. 나는 윈도우 콘퍼런스 강연을 통해 데이브를 알고 있었기 때문에, “피할 수 없다면 즐겨라”라는 속담처럼 책이 출간된 지 몇 주 만에 데이브에게 다음 판의 공동 집필을 제안하는 이메일을 보냈다. 이 책은 당시 윈도우 NT 5라고 불렸고 나중에 윈도우 2000으로 이름이 바뀌게 될 내용을 담고 있었다. 데이브가 포함하지 않은 주제에 대한 나의 NT 내부 칼럼을 기반으로 한 새로운 장을 추가하고, 나의 시스인터널스 도구를 사용한 새로운 실습에 대한 글도 쓰기로 했다. 거래를 성사시키고자 책과 함께 배포하는 일반적인 소프트웨어 배포 방식인 CD에 전체 시스인터널스 도구 모음을 포함시킬 것을 제안했다. 데이브는 흔쾌히 동의했다. 하지만 먼저 마이크로소프트의 승인을 얻어야 했다. 나는 윈도우 NT 워크스테이션과 윈도우 NT 서버가 레지스트리 설정에 따라 동작이 다른 동일한 코드라는 사실을 공개적으로 폭로해 마이크로소프트의 홍보에 어려움을 겪은 적이 있었다. 데이브는 윈도우 NT 소스 전체에 대한 액세스 권한이 있었지만 나는 그렇지 않았고 문서화되지 않은 API에 의존하는 시스인터널스나 윈터널스 소프트웨어에 지적 재산권 문제를 일으키지 않고자 계속 그렇게 하고 싶었다. 데이브가 마이크로소프트에 요청했을 때 나는 주요 윈도우 엔지니어들과의 관계를 회복하고 있었고 마이크로소프트도 암묵적으로 승인했기 때문에 운이 좋은 시기였다. 데이브와 함께 『Inside Windows 2000』을 집필하는 일은 정말 즐거웠다. 우연의 일치인지 모르겠지만 데이브는 나와 20분 정도 떨어진 곳에 살았다(나는 코네티컷(Connecticut)주 댄버리(Danbury)에 살았고 데이브는 코네티컷주 셔먼(Sherman)에 살았다). 우리는 서로의 집을 방문해 마라톤 글쓰기 세션을 진행하면서 함께 윈도우 내부를 탐색하고, 괴상한 농담과 말장난에 웃고, 기술적 질문을 던져 답을 찾고자 경쟁하곤 했는데, 데이브는 소스코드를 샅샅이 뒤지고 나는 디스어셈블러, 디버거, 시스인터널스 도구를 사용했다. 그렇게 해서 나는 역사상 가장 상업적으로 성공한 운영체제 중 하나의 내부 작동을 설명하는 결정적인 책의 공동 저자가 됐다. 윈도우 XP와 윈도우 비스타를 다룬 5판에는 알렉스 이오네스쿠를 참여시켰다. 알렉스는 세계 최고의 리버스 엔지니어이자 운영체제 전문가로, 가독성과 세부 사항에 대한 당사의 높은 기준에 부합하거나 그 이상으로 책의 폭과 깊이를 더해줬다. 새로운 기능과 하위 시스템으로 성장하는 윈도우 자체와 함께 책의 범위가 넓어지면서 6판은 5판의 단행본 출판 한계를 초과해 2권으로 나눴다. 6판 집필이 시작될 무렵 나는 이미 애저(Azure)로 자리를 옮긴 후였고 7판을 준비할 무렵에는 더 이상 책에 기여할 시간이 없었다. 데이브 솔로몬은 은퇴했고 윈도우가 몇 년마다 주요 릴리스와 버전 번호로 출시되던 윈도우는 윈도우 10이라는 이름으로 불리며 지속적인 기능 업그레이드를 통해 출시되기 시작했다. 이에 따라 책을 업데이트하는 작업은 더욱 어려워졌다. 파벨 요시포비치(Pavel Yosifovitch)가 알렉스의 Vol.1 집필을 도와줬지만, 그 역시 다른 프로젝트로 바빠 Vol.2에는 참여하지 못했다. 알렉스 역시 자신의 스타트업 크라우드스트라이크(CrowdStrike)로 바빴기 때문에 Vol.2에 참여할 수 있을지 확신할 수 없었다. 다행히 안드레아가 도와줬다. 알렉스와 함께 2장에서 시작 및 종료 프로세스, 레지스트리 하위 시스템, UWP 등 시스템의 광범위한 부분을 업데이트했다. 단순히 새로워진 내용뿐 아니라 하이퍼V, 캐싱 및 파일 시스템, 진단 및 추적에 대해 자세히 설명하는 3개의 새로운 장도 추가했다. 역사상 가장 중요한 소프트웨어 중 하나인 윈도우의 내부 작동에 대해 기술적으로 가장 심도 있고 정확하게 설명하는 윈도우 내부 책 시리즈의 명성은 안전하며, 내 이름이 여전히 목록에 남아 있다는 사실에 자부심을 느낀다. 내 경력에서 기억에 남는 순간은 데이비드 커틀러에게 『Inside Windows 2000』의 서문을 써 달라고 부탁했을 때였다. 데이비드 솔로몬과 나는 윈도우 엔지니어들을 만나고자 몇 차례 마이크로소프트를 방문한 적이 있었고, 그중 몇 차례 데이비드를 만난 적이 있었다. 하지만 그가 동의할지 몰랐기 때문에 동의를 받았을 때 매우 기뻤다. 데이비드에게 부탁했을 때와 비슷한 입장이 돼 반대편에 서 있는 지금이 조금은 믿기지 않는데, 기회가 주어져 영광이다. 내가 쓴 추천의 글을 통해 이 책이 『Inside Windows 2000』 구매자들에게 데이비드 커틀러의 책이 그랬던 것처럼 신뢰할 수 있고 명확하고 종합적이라는 믿음을 드릴 수 있기를 기대한다. - 마크 러시노비치 (Mark E. Russinovich,마이크로소프트 애저 최고 기술 책임자 겸 기술 펠로우) |