◈ 추천의 글 ◈
큰 성공을 거둔 윈도우 3.1 운영체제의 내부를 사용하고 살펴본 필자는 1993년 마이크로소프트가 윈도우 NT 3.1을 출시했을 때 세상을 바꿀 윈도우 3.1의 잠재력을 즉시 알아챘다. 윈도우 NT의 아키텍트이자 엔지니어링 리더였던 데이비드 커틀러는 안전하고 안정적이며 확장성이 뛰어나면서도 사용자 인터페이스와 소프트웨어 실행 기능이 이전 버전과 동일한 윈도우 버전을 만들었다. 헬렌 커스터의 책 『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, Second Edition』(Microsoft Press, 1997)을 출간했을 때 충격을 받았다. 이 책이 인상적이면서도 실망스러웠다. 헬렌의 책을 완전히 재집필한 이 책은 계획했던 대로 윈도우 NT의 내부를 더 깊고 폭넓게 다루고 있었으며, 윈도우 NT 리소스 키트와 디바이스 드라이버 개발 키트(DDK)의 기본 제공 도구 및 진단 유틸리티를 사용해 주요 개념과 동작을 시연하는 새로운 실습을 포함하고 있었다. 그는 기준을 매우 높게 끌어올렸기 때문에 그가 달성한 품질과 수준에 맞는 책을 쓴다는 것은 내가 계획했던 것보다 훨씬 더 큰 의미가 있다는 것을 알았다.
나는 윈도우 콘퍼런스 강연을 통해 데이브(Dave)를 알고 있었기 때문에, ‘피할 수 없다면 즐겨라’라는 속담처럼 책이 출간된 지 몇 주 만에 데이브에게 다음 판의 공동 집필을 제안하는 이메일을 보냈다. 이 책은 당시 윈도우NT 5라고 불렸고 나중에 윈도우2000으로 이름이 바뀌게 될 내용을 담고 있었다. 데이브가 포함하지 않은 주제에 대한 나의 NT 내부 칼럼을 기반으로 한 새로운 장을 추가하고, 나의 시스인터널 도구를 사용한 새로운 실습에 대한 글도 쓰기로 했다. 거래를 성사시키고자 책과 함께 배포하는 일반적인 소프트웨어 배포 방식인 CD에 전체 시스인터널즈 도구 모음을 포함시킬 것을 제안했다.
데이브는 흔쾌히 동의했다. 하지만 먼저 마이크로소프트의 승인을 얻어야 했다. 나는 윈도우 NT 워크스테이션과 윈도우 NT 서버가 레지스트리 설정에 따라 동작이 다른 동일한 코드라는 사실을 공개적으로 폭로해 마이크로소프트의 홍보에 어려움을 겪은 적이 있었다. 데이브는 윈도우 NT 소스 전체에 대한 액세스 권한이 있었지만 나는 그렇지 않았고 문서화되지 않은 API에 의존하는 시스인터널스나 윈터널스 소프트웨어에 지적 재산권 문제를 일으키지 않고자 계속 그렇게 하고 싶었다. 데이브가 마이크로소프트에 요청했을 때 나는 주요 윈도우 엔지니어들과의 관계를 회복하고 있었고 마이크로소프트도 암묵적으로 승인했기 때문에 운이 좋은 시기였다.
데이브와 함께 『Inside Windows 2000』을 집필하는 일은 정말 즐거웠다. 우연의 일치인지 모르겠지만 데이브는 나와 20분 정도 떨어진 곳에 살았다(나는 코네티컷(Connecticut) 주 댄버리(Danbury)에 살았고 데이브는 코네티컷 주 셔먼(Sherman)에 살았다). 우리는 서로의 집을 방문해 마라톤 글쓰기 세션을 진행하면서 함께 윈도우 내부를 탐색하고, 괴상한 농담과 말장난에 웃고, 기술적 질문을 던져 답을 찾고자 경쟁하곤 했는데, 데이브는 소스코드를 샅샅이 뒤지고 나는 디스어셈블러, 디버거, 시스인터널스 도구를 사용했다.
그렇게 해서 나는 역사상 가장 상업적으로 성공한 운영체제 중 하나의 내부 작동을 설명하는 결정적인 책의 공동 저자가 됐다. 윈도우 XP와 윈도우 비스타를 다룬 5판에는 알렉스 이오네스쿠를 참여시켰다. 알렉스는 세계 최고의 리버스 엔지니어이자 운영체제 전문가로, 가독성과 세부 사항에 대한 당사의 높은 기준에 부합하거나 그 이상으로 책의 폭과 깊이를 더해줬다. 새로운 기능과 하위 시스템으로 성장하는 윈도우 자체와 함께 책의 범위가 넓어지면서 6판은 5판의 단행본 출판 한계를 초과해 2권으로 나눴다.
6판 집필이 시작될 무렵 나는 이미 애저로 자리를 옮겼고 7판을 준비할 무렵에는 더 이상 책에 기여할 시간이 없었다. 데이브 솔로몬은 은퇴했고 윈도우가 몇 년마다 주요 릴리스와 버전 번호로 출시되던 것에서 윈도우 10이라는 이름으로 불리며 지속적으로 기능 업그레이드를 통해 출시되면서 책을 업데이트하는 작업은 더욱 어려워졌다. 파벨 요시포비치(Pavel Yosifovitch)가알렉스의 1권을 도와줬지만, 그 역시 다른 프로젝트로 바빠 2권에 참여하지 못했다. 알렉스 역시 자신의 스타트업 크라우드스트라이크(CrowdStrike)로 바빴기 때문에 2권에 참여할 수 있을지 확신할 수 없었다.
다행히 안드레아가 도와줬다. 알렉스와 함께 2장에서 시작 및 종료 프로세스, 레지스트리 하위 시스템, UWP 등 시스템의 광범위한 부분을 업데이트했다. 단순히 새로워진 내용뿐 아니라 하이퍼V, 캐싱 및 파일 시스템, 진단 및 추적에 대해 자세히 설명하는 3개의 새로운 장도 추가했다. 역사상 가장 중요한 소프트웨어 중 하나인 윈도우의 내부 작동에 대해 기술적으로 가장 심도 있고 정확하게 설명하는 윈도우 내부 책 시리즈의 명성은 안전하며, 내 이름이 여전히 목록에 남아 있다는 사실에 자부심을 느낀다.
내 경력에서 기억에 남는 순간은 데이비드 커틀러(David Cutler)에게 『Inside Windows 2000』의 서문을 써 달라고 부탁했을 때였다. 데이비드 솔로몬과 나는 윈도우 엔지니어들을 만나고자 몇 차례 마이크로소프트를 방문한 적이 있었고, 그중 몇 차례 데이비드를 만난 적이 있었다. 하지만 그가 동의할지 몰랐기 때문에 그가 동의했을 때 매우 기뻤다. 데이비드에게 부탁했을 때와 비슷한 입장이 돼 반대편에 서 있는 지금이 조금은 믿기지 않는데, 기회가 주어져 영광이다. 내가 쓴 추천의 글을 통해 이 책이 『Inside Windows 2000』 구매자들에게 데이비드 커틀러의 책이 그랬던 것처럼 신뢰할 수 있고 명확하고 종합적이라는 믿음을 드릴 수 있기를 기대한다.
2021년 3월,
워싱턴 벨뷰에서
─마크 러시노비치(Mark E. Russinovich),
마이크로소프트 애저 최고 기술 책임자 겸 기술 펠로우
◈ 옮긴이의 말 ◈
윈도우 시스템 프로그래머를 위한 고전적인 참고서인 『Windows Internals 7/e Vol.2』을 한국어로 번역하게 돼 정말 기쁘다. 이 책은 윈도우 운영체제의 내부 작동 방식에 대한 포괄적이고 심층적인 정보를 제공한다.
이 책을 번역하는 것은 쉽지 않은 작업이었다. 전문 용어와 개념이 많았고, 정확하고 이해하기 쉬운 번역을 만드는 것이 중요했다. 독자의 필요를 염두에 두면서 텍스트를 충실하게 번역하고자 최선을 다했다.
번역 과정에서 용어가 항상 진화하기 때문에 최신으로 정확한 용어를 사용하는 것이 중요했다.
개념이 복잡하고 설명하기 어려웠기 때문에 더 작은 조각으로 나누고 그림과 예제를 사용해 설명했다.
이 책은 다음과 같은 내용을 포함한다.
● 윈도우 운영체제의 내부 구조와 동작 방식
● 윈도우 시스템 프로그래밍을 위한 기초 지식
● 윈도우 성능 최적화 및 디버깅에 대한 팁
또한 이번에 새로 업데이트된 내용을 포함하고 있다.
2장에서부터 시작 및 종료 프로세스, 레지스트리 하위 시스템, UWP 등 시스템의 광범위한 부분이 업데이트됐다. 단순히 새로워진 내용뿐 아니라 하이퍼V, 캐싱 및 파일 시스템, 진단 및 추적에 대해 자세히 설명하는 3개의 새로운 장도 추가됐다.
이러한 추가 사항을 통해 윈도우 시스템 프로그래머는 윈도우 운영체제의 내부 작동 방식에 대한 좀 더 포괄적이고 최신 정보를 얻을 수 있다.
이 책을 통해 윈도우 시스템 프로그래밍에 대한 지식을 쌓고 윈도우 운영체제를 더 잘 이해할 수 있기를 바란다.