Windows Internals 제6판 Vol. 1 & 2 (세트) [마이크로소프트 윈도우 커널 공식 가이드]
- 지은이마크 러시노비치, 데이비드 솔로몬, 알렉스 이오네스쿠
- 옮긴이안랩 기반기술팀
- ISBN : 9788960775541
- 84,000원
- 2014년 05월 09일 펴냄
- 페이퍼백 | 1,804쪽 | 188*250mm
- 시리즈 : 윈도우 시스템 프로그래밍
판매처
개정판책 소개
세트 구성: 전2권
『Windows Internals 제6판』 소개
마이크로소프트 윈도우 7과 윈도우 서버 2008 R2를 완벽히 반영한 필수 가이드
윈도우 아키텍처와 내부를 들여다보고 핵심 구성 요소가 이면에서 동작하는 방식을 보여준다. 국제적으로 명성이 높은 인터널즈 전문가 팀에 의해 윈도우 7과 윈도우 서버 2008 R2에 대해 완벽하게 업데이트가 이뤄져 2권의 책으로 나오게 됐다.
앞서 출판된 책들과 마찬가지로 비평적으로 내부자 관점에서 윈도우 동작 방식을 다뤘다. 실습을 통해 내부 동작을 경험하게 함으로써 애플리케이션 설계나 디버깅, 시스템 성능과 지원을 향상시키는 데 적용할 수 있는 지식을 얻을 수 있다.
『Windows Internals 제6판 Vol. 1 & 2』의 구성
처음으로 『Windows Internals』를 두 권으로 나눠 엮었다.
Vol. 1은 핵심 개념을 정의하고 사용할 툴을 소개하며, 전반적인 시스템 아키텍처와 구성 요소를 설명하는 2개의 장으로 시작한다. 그 다음 2개의 장에 걸쳐 핵심 서브시스템과 관리 메커니즘을 다룬다. Vol. 1의 마무리는 운영체제의 핵심 구성 요소인 프로세스(스레드, 잡)와 보안, 네트워킹을 다룬다.
이번에 펴낸 Vol. 2는 Vol. 1에서 다루지 못한 또 다른 핵심 서브시스템인 I/O, 스토리지, 메모리 관리, 캐시 관리자, 파일 시스템을 다루며, 프로세스의 시작과 종료를 살펴보고, 크래시 덤프 분석으로 마친다.
Vol. 1에서 다루는 내용
■ 객체 관리자, 동기화, Wow64, 하이퍼-V, 레지스트리 등의 핵심 시스템과 관리 메커니즘의 동작 방식
■ 프로세스와 스레드, 잡(job) 이면의 데이터 구조체와 행위
■ 윈도우 보안 모델이 접근과 감사, 권한 부여 등을 관리하는 방식
■ API와 브랜치캐시(BranchCache), 프로토콜, NDIS 드라이버, 계층적 서비스 등의 윈도우 네트워킹 스택
■ 커널 디버거와 성능 모니터, 기타 툴을 사용한 윈도우 내부 조사
Vol. 2에서 다루는 내용
■ 윈도우에서 하드 디스크 스토리지의 핵심 서브시스템 파악
■ 윈도우가 가상 메모리와 물리 메모리를 관리하는 방법
■ 캐시 관리자와 메모리 관리자의 협력 관계
■ 파일 시스템의 동작 방식과 파일 시스템 접근 시의 문제 해결
■ 시작과 종료 과정의 이면
■ 크래시 덤프 분석
『Windows Internals』의 역사
이 책은 최초 헬렌 커스터(Helen Custer)가 집필한 (마이크로소프트 윈도우 NT 3.1 출시 이전에) 『Inside Windows NT』(마이크로소프트 출판, 1992)의 제6판에 해당한다. 『Inside Windows NT』는 윈도우 NT에 관해 첫 번째 출판된 책으로, 시스템 설계와 아키텍처에 관한 핵심적인 내부 사항을 제공했다. 『Inside Windows NT』의 제2판(마이크로소프트 출판, 1998)은 데이비드 솔로몬(David Solomon)이 집필했다. 제2판에서는 윈도우 NT 4.0을 추가적으로 다뤘으며, 기술적 심도를 매우 향상시켰다.
제3판인 『Inside Windows 2000』(마이크로소프트 출판, 2000)은 데이비드 솔로몬과 마크 러시노비치가 공동 집필했다. 제3판에서는 시작과 종료, 서비스 내부, 레지스트리 내부, 파일 시스템 드라이버, 네트워킹 같은 새로운 주제를 추가했다. 또한 윈도우 드라이버 모델(Windows Driver Model)과 플러그앤플레이, 전원 관리, 윈도우 관리 도구(Windows Management Instrumentation), 암호화, 잡 객체, 터미널 서비스 등에서의 커널 변경 사항 등을 다뤘다. 윈도우 XP와 윈도우 서버 2003 업데이트를 다룬 『Windows Internals 제4판』은 Windows Sysinternals(www.microsoft.com/technet/sysinternals)에서 구할 수 있는 주요 툴을 사용하고 크래시 덤프를 분석하는 등의 윈도우 내부 지식을 이용하는 IT 전문가에게 도움이 되는 사항에 초점을 맞춰 내용을 추가했다. 『Windows Internals 제5판』 (에이콘출판, 2010년)은 윈도우 비스타와 윈도우 서버 2008에서의 변경된 사항을 다뤘다. 이미지 로더와 유저 모드 디버깅 기능, 하이퍼V에 관한 내용이 새롭게 추가됐다.
제6판에서 변경된 내용
최신 6판에서는 윈도우 7과 윈도우 서버 2008 R2에서의 커널 변경 사항을 다뤘다. 변경된 툴을 반영하기 위해 실습 부분도 갱신했다.
목차
목차
- 『Windows Internals 제6판 Vol. 1』
- 1장 개념과 도구
- 윈도우 운영체제 버전
- 기본 개념과 용어
- 윈도우 API
- 서비스, 함수, 루틴
- 프로세스, 스레드, 잡
- 가상 메모리
- 커널 모드와 유저 모드
- 터미널 서비스와 다중 세션
- 객체와 핸들
- 보안
- 레지스트리
- 유니코드
- 윈도우 내부 들여다보기
- 성능 모니터
- 커널 디버깅
- 윈도우 소프트웨어 개발 킷
- 윈도우 드라이버 킷
- Sysinternals 툴
- 정리
- 2장 시스템 아키텍처
- 요구 사항과 설계 목표
- 운영체제 모델
- 아키텍처 개요
- 이식성
- 대칭형 멀티프로세싱
- 확장성
- 클라이언트와 서버 버전의 차이
- 체크드 빌드
- 핵심 시스템 컴포넌트
- 환경 서브시스템과 서브시스템 DLL
- Ntdll.dll
- 익스큐티브
- 커널
- 하드웨어 추상화 계층
- 디바이스 드라이버
- 시스템 프로세스
- 정리
- 3장 시스템 메커니즘
- 트랩 디스패칭
- 인터럽트 디스패칭
- 타이머 프로세싱
- 예외 디스패칭
- 시스템 서비스 디스패칭
- 객체 관리자
- 익스큐티브 객체
- 객체 구조
- 동기화
- High-IRQL 동기화
- Low_IRQL 동기화
- 시스템 작업자 스레드
- 윈도우 전역 플래그
- 고급 로컬 프로시저 호출
- 접속 모델
- 메시지 모델
- 비동기 동작
- 뷰와 영역, 섹션
- 속성
- 블랍, 핸들, 자원
- 보안
- 성능
- 디버깅과 추적
- 커널 이벤트 트레이싱
- Wow64
- Wow64 프로세스 주소 공간 배치
- 시스템 호출
- 예외 전달
- 유저 APC 디스패칭
- 콘솔 지원
- 사용자 콜백
- 파일 시스템 리다이렉션
- 레지스트리 리다이렉션
- I/O 제어 요청
- 16비트 인스톨러 애플리케이션
- 프린팅
- 제약 사항
- 유저 모드 디버깅
- 커널 지원
- 네이티브 지원
- 윈도우 서브시스템 지원
- 이미지 로더
- 이른 시점의 프로세스 초기화
- DLL 이름 변환과 리다이렉션
- 로드된 모듈의 데이터베이스
- 임포트 파싱
- 포스트 임포트 프로세스 초기화
- 스위치백
- API 셋
- 하이퍼바이저(Hyper-V)
- 파티션
- 부모 파티션
- 자식 파티션
- 하드웨어 에뮬레이션과 지원
- 커널 트랜잭션 관리자
- 핫패치 지원
- 커널 패치 보호
- 코드 무결성
- 정리
- 트랩 디스패칭
- 4장 관리 메커니즘
- 레지스트리
- 레지스트리 보기와 변경
- 레지스트리 사용
- 레지스트리 데이터 유형
- 레지스트리의 논리적 구조
- 트랜잭션 레지스트리(TxR)
- 레지스트리 행위 감시
- 프로세스 모니터의 내부 구조
- 레지스트리 내부
- 서비스
- 서비스 애플리케이션
- 서비스 제어 관리자
- 서비스 시작
- 시작 에러
- 마지막으로 성공한 구성으로 부팅
- 서비스 실패
- 서비스 셧다운
- 공유 서비스 프로세스
- 서비스 태그
- 통합 백그라운드 프로세스 관리자
- 초기화
- UBPM API
- 공급자 등록
- 소비자 등록
- 작업 호스트
- 서비스 제어 프로그램
- 윈도우 관리 도구
- WMI 아키텍처
- 공급자
- CIM과 MOF 언어
- 클래스 연관화
- WMI 구현
- WMI 보안
- 윈도우 진단 인프라
- WDI 조율
- 진단 정책 서비스
- 진단 기능
- 정리
- 레지스트리
- 5장 프로세스, 스레드, 잡
- 프로세스 내부 구조
- 데이터 구조체
- 보호 프로세스
- CreateProcess 흐름
- 1단계: 매개 변수와 플래그의 유효성 검사와 변환
- 2단계: 실행할 이미지 열기
- 3단계: 윈도우 익스큐티브 프로세스 객체(PspAllocateProcess) 생성
- 4단계: 초기 스레드와 스택 및 컨텍스트 생성
- 5단계: 윈도우 서브시스템에 특화된 후반부 초기화
- 6단계: 초기 스레드의 실행 시작
- 7단계: 새 프로세스의 컨텍스트에서 프로세스 초기화 수행
- 스레드 내부 구조
- 데이터 구조체
- 스레드의 탄생
- 스레드 활동성 검사
- 보호 프로세스 스레드의 제약
- 작업자 팩토리(스레드 풀)
- 스레드 스케줄링
- 윈도우 스케줄링의 개요
- 우선순위 수준
- 스레드 상태
- 디스패처 데이터베이스
- 퀀텀
- 우선순위 상승
- 컨텍스트 전환
- 스케줄링 시나리오
- 유휴 스레드
- 스레드 선택
- 멀티프로세서 시스템
- 멀티프로세서 시스템에서의 스레드 선정
- 프로세서 선택
- 프로세서 공유 기반 스케줄링
- 분산된 공정한 공유 스케줄링
- CPU 속도 제한
- 동적 프로세서 추가와 교체
- 잡 객체
- 잡 제약
- 잡 셋
- 정리
- 프로세스 내부 구조
- 6장 보안
- 보안 등급
- 신뢰성 있는 컴퓨터 시스템 평가 지침(TCSEC)
- 공용 평가 기준
- 보안 시스템 구성 요소
- 객체 보호
- 접근 검사
- 보안 식별자
- 가상 서비스 계정
- 보안 디스크립터와 접근 제어
- AuthZ API
- 조건부 ACE
- 계정 권한과 특권
- 계정 권한
- 특권
- 슈퍼 특권
- 프로세스와 스레드의 접근 토큰
- 보안 감사
- 객체 접근 감사
- 전역 감사 정책
- 고급 감사 정책 설정
- 로그온
- Winlogon 초기화
- 사용자 로그온 과정
- 보장된 인증
- 사용자 인증을 위한 생체 인식 프레임워크
- 사용자 계정 컨트롤과 가상화
- 파일 시스템과 레지스트리 가상화
- 상승
- 애플리케이션 인증(AppID)
- AppLocker
- 소프트웨어 제한 정책
- 정리
- 보안 등급
- 7장 네트워킹
- 윈도우 네트워킹 아키텍처
- OSI 참조 모델
- 윈도우 네트워크 구성 요소
- 네트워킹 API
- 윈도우 소켓
- 윈속 커널(WSK)
- 프로시저 호출
- 웹 액세스 API
- 네임드 파이프와 메일슬롯
- NetBIOS
- 기타 네트워킹 API
- 다중 리다이렉터 지원
- 다중 공급자 라우터
- 다중 UNC 공급자
- 대리 공급자
- 리다이렉터
- 미니 리다이렉터
- 서버 메시지 블록과 서브 리다이렉터
- 분산 파일 시스템 네임스페이스
- 분산 파일 시스템 복제
- 오프라인 파일
- 캐싱 모드
- 고스트
- 데이터 보안
- 캐시 구조
- 브랜치캐시
- 캐싱 모드
- 애플리케이션 탐색 최적화된 브랜치캐시: SMB 시퀀스
- 애플리케이션 탐색 최적화된 브랜치캐시 : HTTP 시퀀스
- 이름 변환
- 도메인 이름 시스템
- 피어 이름 변환 프로토콜
- 위치와 토폴로지
- 네트워크 위치 인식
- 네트워크 연결 상태 표시기
- 링크 계층 토폴로지 검색
- 프로토콜 드라이버
- 윈도우 필터링 플랫폼
- NDIS 드라이버
- NDIS 미니포트의 변형
- 연결 지향형 NDIS
- 원격 NDIS
- QoS
- 바인딩
- 계층화된 네트워크 서비스
- 원격 액세스
- 액티브 디렉터리
- 네트워크 로드 밸런싱
- 네트워크 액세스 프로텍션
- 다이렉트 액세스
- 정리
- 윈도우 네트워킹 아키텍처
- 『Windows Internals 제6판 Vol. 2』
- 8장 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) 관리자
- 플러그앤플레이 지원 레벨
- 플러그앤플레이를 위한 드라이버 지원
- 드라이버 로딩, 초기화, 설치
- 드라이버 설치
- 전원 관리자
- 전원 관리자의 동작
- 드라이버의 전원 동작
- 드라이버와 애플리케이션의 장치 전원 제어
- 전원 가용성 요청
- 프로세서 전원 관리(PPM)
- 정리
- 9장 스토리지 관리
- 스토리지 용어
- 디스크 디바이스
- 회전식 자기 디스크
- SSD
- 디스크 드라이버
- WinLoad
- 디스크 클래스와 포트, 미니포트 드라이버
- 디스크 디바이스 객체
- 파티션 관리자
- 볼륨 관리
- 기본 디스크
- 동적 디스크
- 멀티파티션 볼륨 관리
- 볼륨 네임스페이스
- 볼륨 I/O 동작
- 가상 디스크 서비스
- 가상 하드 디스크 지원
- VHD 연결
- 중첩된 파일 시스템
- 비트락커 드라이브 암호화
- 암호화 키
- 신뢰된 플랫폼 모듈
- 비트락커 부트 과정
- 비트락커 키 복구
- 전체 볼륨 암호화 드라이버
- 비트락커 관리
- 휴대용 비트락커
- 볼륨 셰도우 복사본 서비스
- 셰도우 복사본
- VSS 아키텍처
- VSS 동작
- 윈도우에서의 활용
- 정리
- 10장 메모리 관리
- 메모리 관리자 소개
- 메모리 관리자 컴포넌트
- 내부 동기화
- 메모리 사용량 측정
- 메모리 관리자가 제공하는 서비스
- 큰 페이지와 작은 페이지
- 페이지 예약과 커밋
- 커밋 제한
- 메모리 락킹
- 할당 단위
- 공유 메모리와 맵 파일
- 메모리 보호
- 실행 방지 페이지 보호
- Copy-on-Write
- 주소 윈도우 확장
- 커널 모드 힙(시스템 메모리 풀)
- 풀 크기
- 풀 사용량 모니터링
- 룩 어사이드 리스트
- 힙 관리자
- 힙의 종류
- 힙 관리자 구조
- 힙 동기화
- 저단편화 힙(LFH)
- 힙 보안 특징
- 힙 디버깅 특징
- 페이지힙
- 폴트 톨러런트 힙
- 가상 주소 공간 배치
- x86 주소 공간 배치
- x86 시스템 주소 공간 배치
- x86 세션 공간
- 시스템 페이지 테이블 엔트리
- 64비트 주소 공간 배치
- 64비트 가상 주소 제약
- 동적인 시스템 가상 주소 관리
- 시스템 가상 주소 공간 할당량
- 사용자 주소 공간 배치
- 주소 변환
- x86 가상 주소 변환
- 변환 룩 어사이드 버퍼
- 물리 주소 확장(PAE)
- x64 가상 주소 변환
- IA64 가상 주소 변환
- 페이지 폴트 핸들링
- 유효하지 않은 PTE
- 프로토타입 PTE
- 인 페이징 IO
- 페이지 폴트 충돌
- 클러스터 페이지 폴트
- 페이지 파일
- 커밋의 양과 시스템 커밋 제한
- 커밋의 양과 페이지 파일 크기
- 스택
- 유저 스택
- 커널 스택
- DPC 스택
- 가상 주소 디스크립터
- 프로세스 VAD
- VAD 회전
- NUMA
- 섹션 객체
- 드라이버 베리파이어
- 페이지 프레임 번호 데이터베이스
- 페이지 리스트 다이내믹스
- 페이지 우선순위
- 변경 페이지 기록자
- PFN 데이터 구조
- 물리 메모리 제한
- 윈도우 클라이언트 메모리 제한
- 워킹셋
- 요구 페이징
- 논리적 프리패처
- 배치 정책
- 워킹셋 관리
- 밸런스 셋 관리자와 스와퍼
- 시스템 워킹셋
- 메모리 통지 이벤트
- 선행적인 메모리 관리(슈퍼패치)
- 컴포넌트
- 트레이싱과 로깅
- 시나리오
- 페이지 우선순위와 리밸런싱
- 견고한 성능
- 레디부스트
- 레디드라이브
- 통합된 캐싱
- 프로세스 리플렉션
- 정리
- 11장 캐시 관리자
- 캐시 관리자의 주요 특징
- 단일, 중앙 집중형 시스템 캐시
- 메모리 관리자
- 캐시 일관성
- 가상 블록 캐싱
- 스트림 기반 캐싱
- 복구 가능 파일 시스템 지원
- 캐시의 가상 메모리 관리
- 캐시 크기
- 캐시 가상 크기
- 캐시 워킹셋 크기
- 물리적인 캐시 크기
- 캐시 데이터 구조
- 시스템 전역 캐시 데이터 구조
- 파일 단위 캐시 데이터 구조체
- 파일 시스템 인터페이스
- 캐시로 복사/캐시로부터의 복사
- 매핑과 고정 인터페이스를 통한 캐싱
- 직접 메모리 액세스 인터페이스를 이용한 캐싱
- 패스트 I/O
- 미리 읽기와 이면 쓰기
- 지능형 미리 읽기
- 재기록 캐싱과 지연 쓰기
- 쓰기 조절
- 시스템 스레드
- 정리
- 12장 파일 시스템
- 윈도우 파일 시스템 포맷
- CDFS
- UDF
- FAT12와 FAT16, FAT32
- exFAT
- NTFS
- 파일 시스템 드라이버 아키텍처
- 로컬 FSD
- 원격 FSD
- 파일 시스템 동작
- 파일 시스템 필터 드라이버
- 파일 시스템 문제 해결
- 프로세스 모니터의 기본 모드와 고급 모드
- 프로세스 모니터를 이용한 문제 해결 기법
- 공통 로그 파일 시스템
- NTFS 설계 목표와 기능
- 하이엔드 파일 시스템 요구 사항
- NTFS 고급 기능
- NTFS 파일 시스템 드라이버
- 디스크상의 NTFS 구조
- 볼륨
- 클러스터
- 마스터 파일 테이블
- 파일 레코드 번호
- 파일 레코드
- 파일명
- 상주 속성과 비상주 속성
- 데이터 압축과 희소 파일
- 변경 저널 파일
- 인덱싱
- 객체 ID
- 쿼터 추적
- 통합 보안
- 리파스 포인트
- 트랜잭션 지원
- NTFS 복구 지원
- 설계
- 메타데이터 로깅
- 복구
- NTFS 손상 클러스터 복구
- 자체 복구
- 암호화 파일 시스템 보안
- 파일 최초 암호화
- 복호화 프로세스
- 암호화된 파일 백업
- 암호화된 파일 복사
- 정리
- 13장 시작과 종료
- 부트 과정
- BIOS 사전 부트
- BIOS 부트 섹터와 Bootmgr
- UEFI 부트 프로세스
- iSCSI 부팅
- 커널 초기화와 익스큐티브 서브시스템
- Smss, Csrss, Wininit
- 레디부트
- 자동 시작하는 이미지
- 부팅 문제나 시작 문제 해결
- 마지막으로 성공한 구성
- 안전 모드
- 윈도우 복구 환경(WinRE)
- 일반적인 부트 문제 해결
- 셧다운
- 정리
- 14장 크래시 덤프 분석
- 윈도우 크래시의 이유
- 블루 스크린
- 윈도우 크래시의 원인
- 크래시 문제 해결
- 크래시 덤프 파일
- 크래시 덤프 생성
- 윈도우 에러 보고
- 온라인 크래시 분석
- 기본 크래시 덤프 분석
- Notmyfault
- 기본 크래시 덤프 분석
- 심층 분석
- 크래시 문제 해결 도구 사용
- 버퍼 오버런과 메모리 손상, 특수 풀
- 코드 덮어쓰기와 시스템 코드 쓰기 방지
- 고급 크래시 덤프 분석
- 스택 파괴
- 행이나 응답 없는 시스템
- 크래시 덤프가 없을 때
- 일반적인 스톱 코드 분석
- 0xD1: DRIVERIRQL NOTLESSOR_EQUAL
- 0x8E: KERNELMODEEXCEPTIONNOTHANDLED
- 0x7F: UNEXPECTEDKERNELMODE_TRAP
- 0xC5: DRIVERCORRUPTEDEXPOOL
- 하드웨어 장애