Windows Internals 제5판 [마이크로소프트 윈도우 커널 공식 가이드]
- 원서명Windows® Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (ISBN 9780735625303)
- 지은이마크 러시노비치, 데이비드 솔로몬, 알렉스 이오네스쿠
- 옮긴이안철수 연구소 기반기술팀
- ISBN : 9788960771437
- 50,000원
- 2010년 07월 28일 펴냄
- 하드커버 | 1,472쪽 | 188*255mm
- 시리즈 : 윈도우 시스템 프로그래밍
판매처
개정판책 소개
윈도우의 동작 기전을 이해하는 데 필요한 자세한 내부 구조와 아키텍처 완벽 가이드. 운영체제의 핵심 컴포넌트가 내부적으로 어떻게 동작하는지를 이해하고자 하는 개발자와 시스템 관리자 등 고급 컴퓨터 전문가 모두를 위한 책.
세계적으로 유명한 윈도우 인터널 전문가들이 윈도우 운영체제 핵심 컴포넌트들의 내부 동작 방식을 설명한다. 제5개정판에서는 윈도우 서버 2008과 윈도우 비스타 관련 전체 내용이 업데이트됐고, 실제 윈도우 내부 동작을 확인할 수 있는 실습, 시스템 디자인 아키텍처의 핵심과 디버깅, 성능과 관련된 내용들이 수록돼 있다.
[ 이 책에서 다루는 내용 ]
윈도우 구조와 커널 완벽 해부
● 객체 관리자에서부터 레지스트리까지 핵심 시스템과 관리 메커니즘의 동작 방식 이해
● 커널 디버거 등의 툴을 이용해 내부 시스템 데이터 구조체 들여다보기
● 스케줄러 우선순위와 CPU 교체 정책 알고리즘 분석
● 윈도우의 물리 메모리와 가상 메모리 관리 방식 이해
● 윈도우 네트워킹과 관련된 API, 프로토콜 드라이버, 네트워크 어댑터 드라이버 등 네트워킹 스택 분석
● 파일 시스템 액세스 문제와 시스템 부팅 관련 문제 해결
● 크래시 분석 방법
[ 이 책의 구성 ]
1장과 2장(‘개념과 도구’와 ‘시스템 아키텍처’)은 각종 정의와 용어 설명, 그리고 이 책의 전반에 걸쳐 사용되는 개념의 기반을 제시한다. 3장과 4장(‘시스템 메커니즘’과 ‘관리 메커니즘’)은 시스템의 핵심 메커니즘을 설명한다. 5장에서부터 12장까지는 운영체제의 핵심 컴포넌트(프로세스와 스레드, 잡, 보안, I/O 시스템, 스토리지 관리, 메모리 관리, 캐시 관리자, 파일 시스템, 네트워킹)를 설명한다. 마지막 13장과 14장은 시작과 종료 절차와, 크래시 덤프 분석을 다룬다.
[ 추천의 글 ]
이 책을 읽는 모든 IT 엔지니어 독자들께,
이 책은 마이크로소프트의 테크니컬 펠로우(Technical Fellow, 마이크로소프트의 CVP(부사장급)으로서 현재 23명이 있음)로서 수많은 sysinternals tools를 개발하고 전 세계의 IT 엔지니어들에게 문제 해결에 큰 도움을 주고 있는 마크 러시노비치가 대표 저자로서 집필한 책으로 윈도우 아키텍처의 핵심을 기술하고 있습니다. 윈도우 운영체제에 대해 깊이 있는 통찰을 전해주는 고급 IT 엔지니어를 위한 책으로서, 문장 하나하나가 모두 소스코드에 기반을 둔 내용들이므로 윈도우에 경험이 있고 개발 경력이 있는 분이라면 이해 하기에 전혀 어려움이 없을 것입니다. 따라서, 윈도우를 정복하고자 하는 모든 분께 이 책은 가히 현존하는 최고의 책이라고 할 수 있습니다.
저는 이 책의 원본인 『Windows Internals 5th Edition』의 핵심 테크티컬 리뷰어(core technical reviewer)로서 근 1년간 참여한 바 있습니다. 마이크로소프트 운영체제인 윈도우 서버 2008(Windows Server 2008)과 비스타(Vista)에 대해 개발자나 IT 엔지니어들이 정확하고 깊이 있는 지식을 얻도록 영어 문장 하나 하나에 심혈을 기울여 많은 의견을 이 책의 저자들인 마크 러시노비치(Mark Russinovich)나 데이비드 솔로몬(David Solomon)에게 보냈던 기억이 엊그제 같은데 벌써 한국어판 버전이 나오게 된 데 매우 기쁘게 생각합니다.
저 또한 이 책의 열렬한 독자이면서 기술 감수자(tech reviewer)로서 그리고 지난 10년 이상 마이크로소프트 사에 근무하면서 수많은 디버깅과 덤프 분석을 통해서 깊이 있는 윈도우 지식을 얻을 수 있었습니다. 그 지식을 바탕으로 조금이나마 이 책의 원저자들에게 도움이 되지 않았을까 싶습니다.
보안과 윈도우 운영체제의 전문가들인 훌륭한 역자들이 심혈을 기울여 번역해주신 역자들께 진심으로 감사의 말씀을 전하며, 개발자 여러분과 함께 이 책의 출간을 다시 한 번 축하합니다.
- 김관현, 마이크로소프트 Escalation Engineer
『Windows Internals 제5판』 서문을 작성하게 돼 기쁘고 영광으로 생각합니다. 이전판 이후에 윈도우에는 중요한 변화가 많았습니다. 데이비드, 마크, 알렉스는 변경된 사항을 언급하기 위해 책을 훌륭하게 수정했습니다. 『Windows Internals』를 처음 접하거나 커널 개발에 오랜 경험이 있더라도 이 책에서 운영체제 설계의 일반적인 원리뿐만 아니라 윈도우의 핵심 메커니즘의 이해도를 높이는 데 도움을 주는 자세한 분석과 예제를 보게 될 것입니다.
오늘날 윈도우는 컴퓨팅 세계에서 전례가 없이 넓고 깊게 퍼져있습니다. 오리지널 윈도우 NT 설계의 변종은 X박스 게임 콘솔에서부터 데스크톱과 노트북 컴퓨터, 수십 개의 프로세서와 페타바이트(petabyte) 스토리지를 가진 서버 클러스터에 이르기까지 모든 곳에서 동작합니다. 운영체제 설계에 있어 흥미롭고 혁신적인 많은 영역을 제공하기 위해 하이퍼바이저와 64비트 컴퓨팅, 멀티코어(multicore)와 다중 코어(many-core) 프로세서 디자인, 플래시 기반 스토리지, 무선과 피어투피어 네트워킹 같은 진화를 계속하고 있습니다.
이런 혁신적인 분야 중 하나는 보안입니다. 지난 10년에 걸쳐 컴퓨팅 산업 전체(그리고 부분적으로는 마이크로소프트)는 거대한 신종 위협에 직면해왔고 보안은 많은 고객에게 있어 최우선 과제였습니다. 블래스터(Blaster)와 새서(Sasser) 같은 공격은 전체 인터넷을 위협했고, 윈도우는 태풍의 눈에 해당했습니다. 더 이상 일을 평범하게 할 여유가 없음은 명확했습니다. 윈도우에 들어간 많은 편리성이나 단순화된 기능들이 사악한 목적으로 윈도우를 공격하는 데 부메랑처럼 사용됐습니다. 먼저, 악명을 높이기 위해 십대 해커들이 시스템 내로 침입하거나 단체의 웹 사이트에 낙서를 추가했습니다. 그러나 곧바로 공격은 격렬해졌고 언더그라운드로 들어갔습니다. 해커는 좀 더 교묘해졌고 조사를 피해 갔습니다. 요즘은 좀처럼 뉴스에서 바이러스나 웜에 대해 다루지 않습니다. 그러나 분명한 것은 타겟화된 공격을 통한 봇넷과 인증 도용을 식별하는 것은 오늘날 산업과 정부 첩보활동에 있어 큰 비즈니스입니다.
2002년 1월, 빌 게이츠는 지금은 유명해진 ‘신뢰할 수 있는 컴퓨팅’ 메모를 모든 마이크로소프트 임직원에게 보냈습니다. 그 메모는 향후 어떻게 소프트웨어를 개발하고 비즈니스를 수행할 것인지에 대해 공감할 수 있는 방향을 제시하고 있었습니다. 거의 윈도우 엔지니어링 팀 전체가 윈도우 XP SP2에 집중했습니다. 이 서비스 팩은 거의 대부분이 운영체제의 보안 향상에 중점을 뒀습니다. 보안 개발 라이프사이클(Security Development Lifecycle, SDL)이 개발됐고 모든 마이크로소프트 제품, 특히 보안을 지상 최대 과제로 설계된 첫 번째 운영체제인 윈도우 비스타에 적용됐습니다. SDL은 보안 소프트웨어 개발에 대해 엄격한 가이드라인과 절차를 명확히 하고 있습니다. 소스코드에서부터 시스템 바이너리와 일반적인 취약점에 대한 네트워크 프로토콜에 이르기까지 모든 것을 검사할 수 있는 복잡한 툴이 개발됐습니다. 새로운 보안 취약점이 발견될 때마다 분석되고, 잠재적인 공격 벡터를 다룰 수 있는 해결책이 개발됐습니다. 윈도우 비스타는 출시된 지 2년이 지났고 그것은 지금까지의 윈도우 중 가장 안전한 버전입니다. 실제로 일부 산업 분석가는 오늘날 판매되고 있는 다목적 운영체제 중 가장 안전한 운영체제라고까지 언급했습니다.
윈도우 팀은 과거 수년 동안 지속적으로 혁신해 왔습니다. 윈도우 XP와 윈도우 서버 2003, 윈도우 서버 2003 R2, 윈도우 XP SP2, 윈도우 비스타, 윈도우 서버 2008, 하이퍼-V는 훌륭한 여러 윈도우 제품군과 마찬가지로 모두 주요 업적이자 커다란 성공이었습니다.
솔직히 이보다 더 흥미 있고 도전적인 주제는 생각할 수가 없습니다. 이보다 더 권위 있고 잘 써진 책을 생각할 수도 없습니다. 데이비드, 마크, 알렉스는 윈도우 아키텍처를 철저히 분석하고 체험 학습을 위한 진단 도구를 준비했습니다. 우리 모두가 윈도우에서 작업하는 것을 즐기는 것처럼 윈도우에 대해 읽고 배우는 것을 즐길 수 있기를 희망합니다.
- Ben Fathi
마이크로소프트 윈도우 코어 개발 부사장
세계적으로 유명한 윈도우 인터널 전문가들이 윈도우 운영체제 핵심 컴포넌트들의 내부 동작 방식을 설명한다. 제5개정판에서는 윈도우 서버 2008과 윈도우 비스타 관련 전체 내용이 업데이트됐고, 실제 윈도우 내부 동작을 확인할 수 있는 실습, 시스템 디자인 아키텍처의 핵심과 디버깅, 성능과 관련된 내용들이 수록돼 있다.
[ 이 책에서 다루는 내용 ]
윈도우 구조와 커널 완벽 해부
● 객체 관리자에서부터 레지스트리까지 핵심 시스템과 관리 메커니즘의 동작 방식 이해
● 커널 디버거 등의 툴을 이용해 내부 시스템 데이터 구조체 들여다보기
● 스케줄러 우선순위와 CPU 교체 정책 알고리즘 분석
● 윈도우의 물리 메모리와 가상 메모리 관리 방식 이해
● 윈도우 네트워킹과 관련된 API, 프로토콜 드라이버, 네트워크 어댑터 드라이버 등 네트워킹 스택 분석
● 파일 시스템 액세스 문제와 시스템 부팅 관련 문제 해결
● 크래시 분석 방법
[ 이 책의 구성 ]
1장과 2장(‘개념과 도구’와 ‘시스템 아키텍처’)은 각종 정의와 용어 설명, 그리고 이 책의 전반에 걸쳐 사용되는 개념의 기반을 제시한다. 3장과 4장(‘시스템 메커니즘’과 ‘관리 메커니즘’)은 시스템의 핵심 메커니즘을 설명한다. 5장에서부터 12장까지는 운영체제의 핵심 컴포넌트(프로세스와 스레드, 잡, 보안, I/O 시스템, 스토리지 관리, 메모리 관리, 캐시 관리자, 파일 시스템, 네트워킹)를 설명한다. 마지막 13장과 14장은 시작과 종료 절차와, 크래시 덤프 분석을 다룬다.
[ 추천의 글 ]
이 책을 읽는 모든 IT 엔지니어 독자들께,
이 책은 마이크로소프트의 테크니컬 펠로우(Technical Fellow, 마이크로소프트의 CVP(부사장급)으로서 현재 23명이 있음)로서 수많은 sysinternals tools를 개발하고 전 세계의 IT 엔지니어들에게 문제 해결에 큰 도움을 주고 있는 마크 러시노비치가 대표 저자로서 집필한 책으로 윈도우 아키텍처의 핵심을 기술하고 있습니다. 윈도우 운영체제에 대해 깊이 있는 통찰을 전해주는 고급 IT 엔지니어를 위한 책으로서, 문장 하나하나가 모두 소스코드에 기반을 둔 내용들이므로 윈도우에 경험이 있고 개발 경력이 있는 분이라면 이해 하기에 전혀 어려움이 없을 것입니다. 따라서, 윈도우를 정복하고자 하는 모든 분께 이 책은 가히 현존하는 최고의 책이라고 할 수 있습니다.
저는 이 책의 원본인 『Windows Internals 5th Edition』의 핵심 테크티컬 리뷰어(core technical reviewer)로서 근 1년간 참여한 바 있습니다. 마이크로소프트 운영체제인 윈도우 서버 2008(Windows Server 2008)과 비스타(Vista)에 대해 개발자나 IT 엔지니어들이 정확하고 깊이 있는 지식을 얻도록 영어 문장 하나 하나에 심혈을 기울여 많은 의견을 이 책의 저자들인 마크 러시노비치(Mark Russinovich)나 데이비드 솔로몬(David Solomon)에게 보냈던 기억이 엊그제 같은데 벌써 한국어판 버전이 나오게 된 데 매우 기쁘게 생각합니다.
저 또한 이 책의 열렬한 독자이면서 기술 감수자(tech reviewer)로서 그리고 지난 10년 이상 마이크로소프트 사에 근무하면서 수많은 디버깅과 덤프 분석을 통해서 깊이 있는 윈도우 지식을 얻을 수 있었습니다. 그 지식을 바탕으로 조금이나마 이 책의 원저자들에게 도움이 되지 않았을까 싶습니다.
보안과 윈도우 운영체제의 전문가들인 훌륭한 역자들이 심혈을 기울여 번역해주신 역자들께 진심으로 감사의 말씀을 전하며, 개발자 여러분과 함께 이 책의 출간을 다시 한 번 축하합니다.
- 김관현, 마이크로소프트 Escalation Engineer
『Windows Internals 제5판』 서문을 작성하게 돼 기쁘고 영광으로 생각합니다. 이전판 이후에 윈도우에는 중요한 변화가 많았습니다. 데이비드, 마크, 알렉스는 변경된 사항을 언급하기 위해 책을 훌륭하게 수정했습니다. 『Windows Internals』를 처음 접하거나 커널 개발에 오랜 경험이 있더라도 이 책에서 운영체제 설계의 일반적인 원리뿐만 아니라 윈도우의 핵심 메커니즘의 이해도를 높이는 데 도움을 주는 자세한 분석과 예제를 보게 될 것입니다.
오늘날 윈도우는 컴퓨팅 세계에서 전례가 없이 넓고 깊게 퍼져있습니다. 오리지널 윈도우 NT 설계의 변종은 X박스 게임 콘솔에서부터 데스크톱과 노트북 컴퓨터, 수십 개의 프로세서와 페타바이트(petabyte) 스토리지를 가진 서버 클러스터에 이르기까지 모든 곳에서 동작합니다. 운영체제 설계에 있어 흥미롭고 혁신적인 많은 영역을 제공하기 위해 하이퍼바이저와 64비트 컴퓨팅, 멀티코어(multicore)와 다중 코어(many-core) 프로세서 디자인, 플래시 기반 스토리지, 무선과 피어투피어 네트워킹 같은 진화를 계속하고 있습니다.
이런 혁신적인 분야 중 하나는 보안입니다. 지난 10년에 걸쳐 컴퓨팅 산업 전체(그리고 부분적으로는 마이크로소프트)는 거대한 신종 위협에 직면해왔고 보안은 많은 고객에게 있어 최우선 과제였습니다. 블래스터(Blaster)와 새서(Sasser) 같은 공격은 전체 인터넷을 위협했고, 윈도우는 태풍의 눈에 해당했습니다. 더 이상 일을 평범하게 할 여유가 없음은 명확했습니다. 윈도우에 들어간 많은 편리성이나 단순화된 기능들이 사악한 목적으로 윈도우를 공격하는 데 부메랑처럼 사용됐습니다. 먼저, 악명을 높이기 위해 십대 해커들이 시스템 내로 침입하거나 단체의 웹 사이트에 낙서를 추가했습니다. 그러나 곧바로 공격은 격렬해졌고 언더그라운드로 들어갔습니다. 해커는 좀 더 교묘해졌고 조사를 피해 갔습니다. 요즘은 좀처럼 뉴스에서 바이러스나 웜에 대해 다루지 않습니다. 그러나 분명한 것은 타겟화된 공격을 통한 봇넷과 인증 도용을 식별하는 것은 오늘날 산업과 정부 첩보활동에 있어 큰 비즈니스입니다.
2002년 1월, 빌 게이츠는 지금은 유명해진 ‘신뢰할 수 있는 컴퓨팅’ 메모를 모든 마이크로소프트 임직원에게 보냈습니다. 그 메모는 향후 어떻게 소프트웨어를 개발하고 비즈니스를 수행할 것인지에 대해 공감할 수 있는 방향을 제시하고 있었습니다. 거의 윈도우 엔지니어링 팀 전체가 윈도우 XP SP2에 집중했습니다. 이 서비스 팩은 거의 대부분이 운영체제의 보안 향상에 중점을 뒀습니다. 보안 개발 라이프사이클(Security Development Lifecycle, SDL)이 개발됐고 모든 마이크로소프트 제품, 특히 보안을 지상 최대 과제로 설계된 첫 번째 운영체제인 윈도우 비스타에 적용됐습니다. SDL은 보안 소프트웨어 개발에 대해 엄격한 가이드라인과 절차를 명확히 하고 있습니다. 소스코드에서부터 시스템 바이너리와 일반적인 취약점에 대한 네트워크 프로토콜에 이르기까지 모든 것을 검사할 수 있는 복잡한 툴이 개발됐습니다. 새로운 보안 취약점이 발견될 때마다 분석되고, 잠재적인 공격 벡터를 다룰 수 있는 해결책이 개발됐습니다. 윈도우 비스타는 출시된 지 2년이 지났고 그것은 지금까지의 윈도우 중 가장 안전한 버전입니다. 실제로 일부 산업 분석가는 오늘날 판매되고 있는 다목적 운영체제 중 가장 안전한 운영체제라고까지 언급했습니다.
윈도우 팀은 과거 수년 동안 지속적으로 혁신해 왔습니다. 윈도우 XP와 윈도우 서버 2003, 윈도우 서버 2003 R2, 윈도우 XP SP2, 윈도우 비스타, 윈도우 서버 2008, 하이퍼-V는 훌륭한 여러 윈도우 제품군과 마찬가지로 모두 주요 업적이자 커다란 성공이었습니다.
솔직히 이보다 더 흥미 있고 도전적인 주제는 생각할 수가 없습니다. 이보다 더 권위 있고 잘 써진 책을 생각할 수도 없습니다. 데이비드, 마크, 알렉스는 윈도우 아키텍처를 철저히 분석하고 체험 학습을 위한 진단 도구를 준비했습니다. 우리 모두가 윈도우에서 작업하는 것을 즐기는 것처럼 윈도우에 대해 읽고 배우는 것을 즐길 수 있기를 희망합니다.
- Ben Fathi
마이크로소프트 윈도우 코어 개발 부사장
목차
목차
- 1장 개념과 도구
- 윈도우 운영체제 버전
- 기본 개념과 용어
- 윈도우 API
- 서비스와 함수, 루틴
- 프로세스, 스레드, 잡
- 가상 메모리
- 커널모드와 유저모드
- 터미널 서비스와 멀티 세션
- 객체와 핸들
- 보안
- 레지스트리
- 유니코드
- 윈도우 내부 들여다보기
- 안정성 및 성능 모니터
- 커널 디버깅
- 윈도우 소프트웨어 개발 킷
- 윈도우 드라이버 킷
- Sysinternals 툴
- 정리
- 2장 시스템 아키텍처
- 요구 사항과 디자인 목표
- 운영체제 모델
- 아키텍처 개요
- 이식성
- 대칭형 멀티프로세싱
- 확장성
- 클라이언트와 서버 버전의 차이
- 체크드 빌드
- 핵심 시스템 컴포넌트
- 환경 서브시스템과 서브시스템 DLL
- Ntdll.dll
- 커널
- 하드웨어 추상 계층
- 디바이스 드라이버
- 시스템 프로세스
- 정리
- 3장 시스템 메커니즘
- 트랩 디스패칭
- 인터럽트 디스패칭
- 예외 디스패칭
- 시스템 서비스 디스패칭
- 객체 관리자
- 익스큐티브 객체
- 객체 구조
- 동기화
- High-IRQL 동기화
- Low_IRQL 동기화
- 시스템 작업자 스레드
- 윈도우 전역 플래그
- 고급 로컬 프로시저 호출
- 커널 이벤트 트레이싱
- Wow64
- Wow64 프로세스 주소 공간 배치
- 시스템 호출
- 예외 전달
- 사용자 콜백
- 파일 시스템 리디렉션
- 레지스트리 리디렉션과 리플렉션
- I/O 제어 요청
- 16비트 인스톨러 애플리케이션
- 프린팅
- 제약
- 유저모드 디버깅
- 커널 지원
- 네이티브 지원
- 윈도우 서브시스템 지원
- 이미지 로더
- 이른 시점의 프로세스 초기화
- 로드된 모듈의 데이터베이스
- 임포트 파싱
- 포스트 임포트 프로세스 초기화
- 하이퍼바이저(Hyper-V)
- 파티션
- 루트 파티션
- 자식 파티션
- 하드웨어 에뮬레이션과 지원
- 커널 트랜잭션 관리자
- 핫패치 지원
- 커널 패치 보호
- 코드 무결성
- 정리
- 트랩 디스패칭
- 4장 관리 메커니즘
- 레지스트리
- 레지스트리를 살펴보고 변경하기
- 레지스트리 사용
- 레지스트리 데이터 유형
- 레지스트리의 논리적 구조
- 트랜잭션 레지스트리(TxR)
- 레지스트리 행위 감시
- 레지스트리 내부
- 서비스
- 서비스 애플리케이션
- 서비스 제어 관리자
- 서비스 시작
- 시작 오류
- 마지막으로 성공한 구성으로 부팅하기
- 서비스 실패
- 서비스 셧다운
- 공유 서비스 프로세스
- 서비스 태그
- 서비스 제어 프로그램
- 윈도우 관리 도구
- WMI 아키텍처
- 공급자
- CIM과 MOF 언어
- 클래스 연관화
- WMI 구현
- WMI 보안
- 윈도우 진단 인프라
- WDI 조율
- 진단 정책 서비스
- 진단 기능
- 정리
- 레지스트리
- 5장 프로세스, 스레드, 잡
- 프로세스 내부 구조
- 데이터 구조체
- 커널 변수
- 성능 카운터
- 관련된 함수
- 보호 프로세스
- CreateProcess 흐름
- 단계 1: 매개 변수와 플래그의 유효성 검사와 변환
- 단계 2: 실행할 이미지 열기
- 단계 3: 윈도우 익스큐티브 프로세스 객체 생성
- 단계 4: 초기 스레드와 스택이나 컨텍스트 생성
- 단계 5: 윈도우 서브시스템 특정적인 후반부 초기화
- 단계 6: 초기 스레드의 실행 시작
- 단계 7: 새 프로세스의 컨텍스트에서 프로세스 초기화 수행
- 스레드 내부 구조
- 데이터 구조체
- 커널 변수
- 성능 카운터
- 관련 함수
- 스레드의 탄생
- 스레드 활동성 검사
- 보호 프로세스 스레드의 제약
- 워커 팩토리(스레드 풀)
- 스레드 스케줄링
- 윈도우에서의 스케줄링 개요
- 우선순위 수준
- 윈도우 스케줄링 API
- 관련 도구
- 실시간 우선순위
- 스레드 상태
- 디스패처 데이터베이스
- 퀀텀
- 스케줄링 시나리오
- 컨텍스트 전환
- 유휴 스레드
- 우선순위 상승
- 멀티프로세서 시스템
- 멀티프로세서 스레드 스케줄링 알고리즘
- CPU 속도 제한
- 잡 객체
- 정리
- 프로세스 내부 구조
- 6장 보안
- 보안 등급
- 신뢰성 있는 컴퓨터 시스템 평가 지침(TCSEC)
- 공용 평가 기준(CC)
- 보안 시스템 구성 요소
- 객체 보호
- 접근 검사
- 보안 디스크립터와 접근 제어
- 계정 권한과 특권
- 계정 권한
- 특권
- 슈퍼 특권
- 보안 감사
- 로그온
- Winlogon 초기화
- 사용자 로그온 과정
- 사용자 계정 컨트롤
- 가상화
- 상승
- 소프트웨어 제한 정책
- 정리
- 보안 등급
- 7장 I/O 시스템
- I/O 시스템 컴포넌트
- I/O 관리자
- 전형적인 I/O 처리
- 디바이스 드라이버
- 디바이스 드라이버의 유형
- 드라이버의 구조
- 드라이버 객체와 디바이스 객체
- 장치 열기
- I/O 처리
- I/O의 유형
- 단일 계층 드라이버의 I/O 요청
- 계층 드라이버에 대한 I/O 요청
- I/O 취소
- I/O 완료 포트
- I/O 우선순위화
- 드라이버 베리파이어
- 커널모드 드라이버 프레임워크(KMDF)
- KMDF 드라이버의 구조와 동작
- KMDF 데이터 모델
- KMDF I/O 모델
- 유저모드 드라이버 프레임워크(UMDF)
- 플러그앤플레이(PnP) 관리자
- 플러그앤플레이 지원 레벨
- 플러그앤플레이를 위한 드라이버 지원
- 드라이버 로딩, 초기화, 설치
- 드라이버 설치
- 전원 관리자
- 전원 관리자의 동작
- 드라이버의 전원 동작
- 드라이버와 애플리케이션의 장치 전원 제어
- 정리
- I/O 시스템 컴포넌트
- 8장 스토리지 관리
- 스토리지 용어
- 디스크 드라이버
- Winload
- 디스크 클래스와 포트, 미니포트 드라이버
- 디스크 디바이스 객체
- 파티션 관리자
- 볼륨 관리
- 기본 디스크
- 동적 디스크
- 멀티파티션 볼륨 관리
- 볼륨 이름 공간
- 볼륨 I/O 동작
- 가상 디스크 서비스
- 비트락커 드라이브 암호화
- 비트락커 아키텍처
- 암호화 키
- 신뢰된 플랫폼 모델(TPM)
- 비트락커 부트 과정
- 비트락커 키 복구
- 전체 볼륨 암호화 드라이버
- 비트락커 관리
- 볼륨 쉐도우 복사본 서비스
- 쉐도우 복사본
- VSS 아키텍처
- VSS 동작
- 윈도우에서의 활용
- 정리
- 9장 메모리 관리
- 메모리 관리자 소개
- 메모리 관리자 컴포넌트
- 내부 동기화
- 메모리 사용량 측정
- 메모리 관리자가 제공하는 서비스
- 큰 페이지와 작은 페이지
- 페이지 예약과 커밋
- 메모리 락킹
- 할당 단위
- 공유 메모리와 맵 파일
- 메모리 보호
- 실행 방지 페이지 보호
- Copy-on-Write
- 주소 윈도우 확장
- 커널모드 힙(시스템 메모리 풀)
- 풀 크기
- 풀 사용량 모니터링
- 룩 어사이드 리스트
- 힙 관리자
- 힙의 종류
- 힙 관리자 구조
- 힙 동기화
- 저단편화 힙(LFH)
- 힙 보안 특징
- 힙 디버깅 특징
- 페이지힙
- 가상 주소 공간 배치
- x86 주소 공간 배치
- x86 시스템 주소 공간 배치
- x86 세션 공간
- 시스템 페이지 테이블 엔트리
- 64비트 주소 공간 배치
- 64비트 가상 주소 제약
- 동적인 시스템 가상 주소 공간 관리
- 시스템 가상 주소 공간 할당량
- 사용자 주소 공간 배치
- 주소 변환
- x86 가상 주소 변환
- 변환 룩 어사이드 버퍼(TLB)
- 물리 주소 확장(PAE)
- IA64 가상 주소 변환
- x64 가상 주소 변환
- 페이지 폴트 핸들링
- 유효하지 않은 PTE
- 프로토타입 PTE
- 인 페이징 IO
- 페이지 폴트 충돌
- 클러스터 페이지 폴트
- 페이지 파일
- 스택
- 유저 스택
- 커널 스택
- DPC 스택
- 가상 주소 디스크립터(VAD)
- 프로세스 VAD
- VAD 교체
- NUMA
- 섹션 객체
- 드라이버 베리파이어
- 페이지 프레임 번호 데이터베이스
- 페이지 리스트 다이나믹스
- 페이지 우선순위
- 변경 페이지 라이터
- PFN 데이터 구조
- 물리 메모리 제한
- 윈도우 클라이언트 메모리 제한
- 워킹셋
- 요구 페이징
- 논리적 프리패처
- 배치 정책
- 워킹셋 관리
- 밸런스 셋 관리자와 스와퍼
- 시스템 워킹셋
- 메모리 통지 이벤트
- 선행적인 메모리 관리(슈퍼패치)
- 컴포넌트
- 트레이싱과 로깅
- 시나리오
- 페이지 우선순위와 리밸런싱
- 견고한 성능
- 레디부스트
- 레디드라이브(ReadDrive)
- 정리
- 메모리 관리자 소개
- 10장 캐시 관리자
- 캐시 관리자의 주요 특징
- 단일, 중앙 집중형 시스템 캐시
- 메모리 관리자
- 캐시 일관성
- 가상 블록 캐싱
- 스트림 기반 캐싱
- 복구 가능 파일 시스템 지원
- 캐시의 가상 메모리 관리
- 캐시 크기
- 캐시 가상 크기
- 캐시 워킹셋 크기
- 물리적인 캐시 크기
- 캐시 데이터 구조
- 시스템 전역 캐시 데이터 구조
- 파일 단위 캐시 데이터 구조체
- 파일 시스템 인터페이스
- 캐시로 복사/캐시로부터의 복사
- 매핑 및 고정 인터페이스를 통한 캐싱
- 직접 메모리 액세스 인터페이스를 이용한 캐싱
- 패스트 I/O
- 미리 읽기와 이면 쓰기
- 지능형 미리 읽기
- 재기록 캐싱과 지연 쓰기
- 쓰기 조절
- 시스템 스레드
- 정리
- 캐시 관리자의 주요 특징
- 11장 파일 시스템
- 윈도우 파일 시스템 포맷
- CDFS
- UDF
- FAT12와 FAT16, FAT32
- exFAT
- NTFS
- 시스템 드라이버 아키텍처
- 로컬 FSD
- 원격 FSD
- 파일 시스템 동작
- 파일 시스템 필터 드라이버
- 파일 시스템 문제 해결
- 프로세스 모니터의 기본 모드와 고급 모드
- 프로세스 모니터를 이용한 문제 해결 기법
- 공통 로그 파일 시스템
- 마샬링
- 로그 유형
- 로그 배치
- 로그 순서 번호
- 로그 블록
- 소유자 페이지
- 가상 LSN을 물리적인 LSN으로 변환하기
- 관리 정책
- NTFS 설계 목표와 기능
- 하이엔드 파일 시스템 요구 사항
- NTFS 고급 기능
- NTFS 파일 시스템 드라이버
- 디스크상의 NTFS 구조
- 볼륨
- 클러스터
- 마스터 파일 테이블
- 파일 참조 번호
- 파일 레코드
- 파일명
- 상주 속성과 비상주 속성
- 데이터 압축과 희소 파일
- 변경 저널 파일
- 인덱싱
- 객체 ID
- 쿼터 추적
- 통합 보안
- 리파스 포인트
- 트랜잭션 지원
- NTFS 복구 지원
- 설계
- 메타데이터 로깅
- 복구
- NTFS 손상 클러스터 복구
- 자체 복구
- 암호화 파일 시스템 보안
- 파일을 최초로 암호화하기
- 해독 프로세스
- 암호화된 파일 백업하기
- 정리
- 윈도우 파일 시스템 포맷
- 12장 네트워킹
- 윈도우 네트워킹 아키텍처
- OSI 참조 모델
- 윈도우 네트워크 구성 요소
- 네트워킹 API
- 윈도우 소켓
- 윈속 커널(WSK)
- 원격 프로시저 호출
- 웹 액세스 API
- 네임드 파이프와 메일 슬롯
- NetBIOS
- 기타 네트워킹 API
- 다중 리디렉터 지원
- 다중 공급자 라우터
- 다중 UNC 공급자
- 이름 해석
- 도메인 이름 시스템
- 윈도우 인터넷 이름 서비스
- 피어 이름 해석 프로토콜
- 위치와 토폴로지
- 네트워크 위치 인식
- 링크 계층 토폴로지 검색(LLTD)
- 프로토콜 드라이버
- 윈도우 필터링 플랫폼
- NDIS 드라이버
- NDIS 미니포트의 변형
- 연결 지향형 NDIS
- 원격 NDIS
- QoS
- 바인딩
- 계층화된 네트워크 서비스
- 원격 액세스
- 액티브 디렉터리
- 네트워크 로드 밸런싱
- 분산 파일 시스템과 DFS 복제
- 정리
- 윈도우 네트워킹 아키텍처
- 13장 시작과 종료
- 부트 과정
- BIOS 사전 부트
- BIOS 부트 섹터와 Bootmgr
- EFI 부트 프로세스
- 커널 초기화와 익스큐티브 서브시스템
- Smss와 Csrss, Wininit
- 레디부트(ReadyBoot)
- 자동 시작하는 이미지
- 부팅 문제나 시작 문제 해결
- 마지막으로 성공한 구성
- 안전 모드
- 윈도우 복구 환경(WinRE)
- 일반적인 부트 문제 해결
- 셧다운
- 정리
- 부트 과정
- 14장 크래시 덤프 분석
- 윈도우가 크래시되는 이유
- 블루 스크린
- 크래시 문제 해결하기
- 크래시 덤프 파일
- 크래시 덤프 생성
- 윈도우 오류 보고
- 온라인 크래시 분석
- 기본 크래시 덤프 분석
- Notmyfault
- 기본 크래시 덤프 분석
- 심층 분석
- 크래시 문제 해결 도구 사용
- 버퍼 오버런과 메모리 손상, 특수 풀
- 코드 덮어쓰기와 시스템 코드 쓰기 방지
- 고급 크래시 덤프 분석
- 스택 파괴
- 행이나 응답 없는 시스템
- 크래시 덤프가 없을 때
관련 블로그 글
윈도우 개발자의 필독서『Windows Internals 제5판』
『Windows Internals 제5판』
마이크로소프트 윈도우 커널 공식 가이드
윈도우 시스템 프로그래밍 시리즈 8
마크 러시노비치, 데이비드 솔로몬, 알렉스 이오네스쿠 지음
안철수 연구소 기반기술팀 옮김
1,472쪽 | 50,000원 | 하드커버 양장 | 2010년 7월 28일 출간예정
YES24, 교보문고, 인터파크, 알라딘, 강컴
마이크로소프트 윈도우 커널 공식 가이드
윈도우 시스템 프로그래밍 시리즈 8
마크 러시노비치, 데이비드 솔로몬, 알렉스 이오네스쿠 지음
안철수 연구소 기반기술팀 옮김
1,472쪽 | 50,000원 | 하드커버 양장 | 2010년 7월 28일 출간예정
YES24, 교보문고, 인터파크, 알라딘, 강컴
윈도우의 동작 기전을 이해하는 데 필요한 자세한 내부 구조와 아키텍처 완벽 가이드. 운영체제의 핵심 컴포넌트가 내부적으로 어떻게 동작하는지를 이해하고자 하는 개발자와 시스템 관리자 등 고급 컴퓨터 전문가 모두를 위한 책.
세계적으로 유명한 윈도우 내부 전문가들이 윈도우 운영체제 핵심 컴포넌트들의 내부 동작 방식을 설명한다. 제 5 개정판에서는 윈도우 서버 2008과 윈도우 비스타 관련 전체 내용이 업데이트됐고, 실제 윈도우 내부 동작을 확인할 수 있는 실습 등 시스템 디자인 아키텍처의 핵심과 디버깅, 성능과 관련된 내용들이 수록돼 있다.
[윈도우 구조와 커널 완벽 해부]
● 객체 관리자에서부터 레지스트리까지 핵심 시스템과 관리 메커니즘의 동작 방식 이해
● 커널 디버거 등의 툴을 이용해 내부 시스템 데이터 구조체 들여다보기
● 스케줄러 우선순위와 CPU 교체 정책 알고리즘 분석
● 윈도우의 물리 메모리와 가상 메모리 관리 방식 이해
● 윈도우 네트워킹과 관련된 API, 프로토콜 드라이버, 네트워크 어댑터 드라이버 등 네트워킹 스택 분석
● 파일 시스템 액세스 문제와 시스템 부팅 관련 문제 해결
● 크래시 분석 방법
이 책은 마이크로소프트의 테크니컬 펠로우(Technical Fellow, 마이크로소프트의 CVP(부사장급)으로서 현재 23명이 있음)로서 수많은 sysinternals tools를 개발하고 전 세계의 IT 엔지니어들에게 문제 해결에 큰 도움을 주고 있는 마크 러시노비치가 대표 저자로서 집필한 책으로 윈도우 아키텍처의 핵심을 기술하고 있습니다. 윈도우 운영체제에 대해 깊이 있는 통찰을 전해주는 고급 IT 엔지니어를 위한 책으로서, 문장 하나하나가 모두 소스코드에 기반을 둔 내용들이므로 윈도우에 경험이 있고 개발 경력이 있는 분이라면 이해 하기에 전혀 어려움이 없을 것입니다. 따라서, 윈도우를 정복하고자 하는 모든 분께 이 책은 가히 현존하는 최고의 책이라고 할 수 있습니다.17년에 걸쳐 윈도우 인터널을 집대성한 시리즈
- 김관현, 마이크로소프트 Escalation Engineer 추천의 글 중에서
[책 표지 이미지 출처: 아마존닷컴(amazon.com)]
1992년 1월, 헬렌 커스터(Helen Custer)는 마이크로소프트 윈도우 3.0에 기반을 둔 첫 책 Inside Windows NT라는 책을 펴냅니다. 385쪽에 불과했던 이 책에 서문을 쓴 데이비드 솔로몬(David A. Solomon)은 헬렌과 함께 공저로 1997년, 개정판인 Inside Windws NT(2/e)를 출간합니다. 분량은 600쪽으로 훌쩍 늘어납니다. NT 시스템의 기본을 정립한 이 책은 그래픽엔진용 클라이언트/서버 모델, USER와 GDI 구성요소가 커널모드로 이동되어 성능향상을 꾀한 윈도우 NT 4.0의 다양한 기능을 다룹니다.
그리고 이제 드디어 제5판 짜잔! 윈도우 비스타를 대상으로 2판부터 함께한 데이비드와, 마크 러시노비치에 알렉스 이오네스쿠가 합류해 집필한 이 책 Windows Internals에서는 ’커널 패치 보호', 새로운 드라이버 모델인 KMDF와 UMDF를 소개하고 또한 보안적인 측면에서 사용자 계정 제어(UAC)를 다루며 스토리지 관리에 있어서 비트라커(BitLocker)의 기능, 멀티프로세서에서의 향상된 스레드 스케줄링 기법, 네트워크 주제로 윈도우 필터링 플랫폼(WFP) 등을 새롭게 소개합니다.
앞서 기술한 이런 기술적 항목은 지난 10여 년 동안 PC 시장의 컴퓨팅 환경을 주도해온 기술이며 트렌드다. 이런 기술들을 익히고 하나씩 습득하노라면 이들 기술의 흐름을 선도하고 항상 개척하는 마이크로소프트의 경이적인 노력과 장인 정신을 엿볼 수 있는 대목이기도 하다.책의 진화과정만을 살펴보아도 이 책이 얼마나 위대한 책인지, 왜 모두들 입을 모아 윈도우 개발자와 시스템 관리자의 필독서라고 이야기하는지를 알 수 있습니다. 그렇다면 윈도우 7이 대세인 지금 비스타를 다룬 책이 의미가 있을까요?
IT 분야에서 프로그램에 종사하는 모든 개발자라면(반드시 윈도우 운영체제가 아니어도 좋다) 관련 기술들의 개념을 숙지하는 것만으로도 어느 분야에 종사하든지 당신이 성숙된 개발자로서 나아가는 데 크나큰 밑거름이 될 것이라고 확신한다.
- 대표 역자 김점갑
윈도우 비스타와 윈도우7에 대한 사용자의 체감 지수는 사뭇 다릅니다. 윈도우7은 비스타에서 UAC(User Access Control) 정책이 크게완화됐습니다. 비스타는 7에 비해 보안에 대한 비중을 높였습니다. 따라서 비스타라는 운영체제에서는 사용자가 느린 속도와 사용자 편의성 부분에서 불편함을 많이 느꼈었죠. 7에서는 다중 CPU 전력소비를 절감시켜주는 스케줄러 기능을 강화하고 UAC 정책을 완화함으로써 사용자는 전혀 다른 운영체제라고 느낄 수도 있습니다. 그러나 국부적인 몇 가지를 제외하고 인터널이나 커널, 디바이스 드라이버는 크게 달라지지 않았다는 점이 중요하겠지요. 따라서 이 책에 나오는 대부분의 내용은 7에서도 적용가능한 것들입니다.
윈도우는 출시 이후 십여년 동안 PC 산업을 선도하며 IT업계의 발전을 일궈온 선두주자임에 분명합니다. 최근의 모바일 열풍도 어떻게 보면 PC에서 가능한 프로그램이 스마트폰으로 포팅되었다는 점에 비춰보면 윈도우 프로그래밍에 대한 필요성은 여전하며, 업계에서도 윈도우 프로그래머 구인난에 시달리고 있다고 합니다. 모쪼록 많은 개발자분들께서 이 책과 함께 윈도우 개발, 윈도우 시스템 관리에 대한 통찰과 지식을 얻을 수 있기를 바랍니다.
이 책은 『실전 윈도우 디버깅』과 『WDF』를 번역하신 김점갑 팀장님이 대표역자로서 안철수 연구소 기반기술팀의 김성현 책임, 김광태, 강경완, 박희안, 황용석, 김경현, 고항훈, 김현철 선임, 황두환, 김창걸 님께서 함께 열심히 노력해 만들어내신 합작품입니다. 저희 책 『WinDbg로 쉽게 배우는 Windows Debugging』의 공저자 중 한 분이신 김성현님과 『메모리 덤프 분석과 활용 제1권』을 번역한 황용석님도 함께 속한 안철수 연구소 기반기술팀은 파일 시스템과 네트워크, 가상화, 매체제어, 게임 보안 등의 여러 분야에 관여된 윈도우 보안 시스템 프로그램 및 커널 프로그램을 개발하며 보안 이슈에 관련된 선행적인 기술 연구와 기반 기술 개발을 수행하는 팀입니다. 저희 출판사와 여러 책을 집필, 번역해주시는 데서 비춰볼 수 있듯이 공부도 게을리 하지 않으시는 정말 열정이 넘친 분들이 모인 곳이기도 하구요.
방대한 책을 번역하시느라 고생하신 모든 역자분께 진심으로 감사의 말씀을 전합니다.
최대한 분량을 줄이고자 노력했지만 1,472쪽에 달하는 방대한 번역서로 탄생한 이 책은 하드커버 양장에 고급 기술서로서 소장본의 가치를 느끼실 수 있을 것입니다. 7월 29일 출간예정인 이 책은 YES24, 교보문고, 인터파크, 알라딘, 강컴에서 예약 판매중입니다. 감사합니다. ^^
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
도서 오류 신고
정오표
[ p28 9장 목차 중 아래에서 2행 ]
레디드라이브(ReadDrive) → 레디드라이브(ReadyDrive)
[ p49 그림 수정 ]
[ p52 '파이버와 스레드' 박스 아래로 7행 ]
cross-pross → cross-process
[ p53 '가상 메모리' 절 1행 ]
환상 갖게 → 환상을 갖게
[ p93 1행, 3행 ]
SIPolicy → SlPolicy
[ p583 7행 ]
암묵적인 무결성 수준은 low 수준 → 암묵적인 무결성 수준은 medium 수준
[ p628 두 번째 ■ 목록 ]
파일과 디렉터리의 복원(Restore files and directions) → 파일과 디렉터리의 복원(Restore files and directories)
[ p708, p713 그림 7-16, 그림 7-18 ]
칼럼모드 → 커널모드
[ p1017 절 제목 ]
레디드라이브(ReadDrive) → 레디드라이브(ReadyDrive)
[ p1027 1행 ]
볼륨 생신 내역 → 볼륨 갱신 내역
[ p1054 아래에서 4-5행 ]
FILE_FLAG_RNADOM_ACCESS → FILE_FLAG_RANDOM_ACCESS
[ p1061 마지막 문단 1행 ]
FILE_ATTIRBUTE_TEMPORARY → FILE_ATTRIBUTE_TEMPORARY
[ p1085 '명시적 파일 I/O' 절 첫 번째 문단 마지막 행 ]
\\??\C:\Daryl\Todo.txt → \??\C:\Daryl\Todo.txt
레디드라이브(ReadDrive) → 레디드라이브(ReadyDrive)
[ p49 그림 수정 ]
[ p52 '파이버와 스레드' 박스 아래로 7행 ]
cross-pross → cross-process
[ p53 '가상 메모리' 절 1행 ]
환상 갖게 → 환상을 갖게
[ p93 1행, 3행 ]
SIPolicy → SlPolicy
[ p583 7행 ]
암묵적인 무결성 수준은 low 수준 → 암묵적인 무결성 수준은 medium 수준
[ p628 두 번째 ■ 목록 ]
파일과 디렉터리의 복원(Restore files and directions) → 파일과 디렉터리의 복원(Restore files and directories)
[ p708, p713 그림 7-16, 그림 7-18 ]
칼럼모드 → 커널모드
[ p1017 절 제목 ]
레디드라이브(ReadDrive) → 레디드라이브(ReadyDrive)
[ p1027 1행 ]
볼륨 생신 내역 → 볼륨 갱신 내역
[ p1054 아래에서 4-5행 ]
FILE_FLAG_RNADOM_ACCESS → FILE_FLAG_RANDOM_ACCESS
[ p1061 마지막 문단 1행 ]
FILE_ATTIRBUTE_TEMPORARY → FILE_ATTRIBUTE_TEMPORARY
[ p1085 '명시적 파일 I/O' 절 첫 번째 문단 마지막 행 ]
\\??\C:\Daryl\Todo.txt → \??\C:\Daryl\Todo.txt