MARC 닫기
00912nam ac200289 k 4500
000000744292
20220619200153
ta
060830s2006 ulka 001 kor
▼a 8979143966
▼g 13000:
▼c \22000
▼a 248023
▼c 248023
▼d 111314
▼l EM0000182093
▼a 005.43
▼2 21
▼a 005.43
▼b 정24w2
▼a 정덕영
▼a Windows 구조와 원리:
▼b OS를 관통하는 프로그래밍의 원리/
▼d 정덕영 저.
▼a 개정증보판.
▼a 서울:
▼b 한빛미디어,
▼c 2006.
▼a 548p.:
▼b 삽도;
▼c 24cm.
▼a 권말부록으로 'WinDBG 설치 및 간단한 사용법' 등 수록
▼a 초판은 '고급 개발자들만이 알고 있던 Windows 구조와 원리 그리고 Codes', 2003. 임
▼a 참고문헌: p.541-542, 색인수록
▼a WINDOWS
▼a OS
▼a 프로그래밍원리
▼a 윈도우즈구조
▼a 윈도우즈원리
▼a 윈도우즈 구조와 원리
▼b \22000
▼a FUTURE
▼a 단행본
| 자료유형 : | 단행본 |
|---|---|
| ISBN : | 8979143966 |
| 분류기호 : | 005.43 |
| 개인저자 : | 정덕영 |
| 서명/저자사항 : | Windows 구조와 원리: OS를 관통하는 프로그래밍의 원리/ 정덕영 저. |
| 판사항 : | 개정증보판. |
| 발행사항 : | 서울: 한빛미디어, 2006. |
| 형태사항 : | 548p.: 삽도; 24cm. |
| 일반주기 : | 권말부록으로 'WinDBG 설치 및 간단한 사용법' 등 수록 |
| 일반주기 : | 초판은 '고급 개발자들만이 알고 있던 Windows 구조와 원리 그리고 Codes', 2003. 임 |
| 서지주기 : | 참고문헌: p.541-542, 색인수록 |
| 언어 | 한국어 |
KMO200603053
권 호 :
발행년 : 2006
발행처 : 한빛미디어
서 명 : Windows 구조와 원리
목차
Chapter 1 컴퓨터의 구조와 역사
01 시스템 프로그래밍과 운영체제 = 21
1. 시스템 프로그래밍이란? = 21
2. 운영체제란? = 21
02 프로그래머 입장에서 바라본 컴퓨터의 구조와 역사 = 22
1. 폰 노이만 구조와 ISA = 23
2. 인텔 8008, 8086 마이크로프로세서 = 27
3. 8086의 레지스터들 = 29
4. 8086 세그먼트 레지스터의 사용 = 32
5. 80286과 80386 마이크로프로세서의 출현 = 34
6. 80386에서의 레지스터들 = 35
7. 컴퓨터 아키텍처(Architecture)와 컴퓨터 오가니제이션(Organization) = 42
8. 80486 마이크로프로세서 = 43
9. 펜티엄(Pentium) 프로세서와 슈퍼 스칼라 = 48
Chapter 2 데이터의 표현과 메모리 구조
01 2진법, 16진법의 표현법과 비트, 바이트 = 53
02 정수의 표현 = 54
03 실수의 표현 = 56
04 문자의 표현 = 60
05 바이트 순서(Little Endian과 Big Endian) = 61
06 메모리의 구조 = 63
07 CPU와 메모리간의 연결 = 65
1. 8086에서 짝수 번지, 홀수 번지 = 65
2. 80386, 80486, 그리고 Pentium에서의 데이터 전송 = 67
Chapter 3 기계어의 구성
01 기계어에 대한 이해와 필요성 = 71
02 고급 언어, 기계어, 그리고 어셈블리 언어의 예 = 72
03 명령의 구성과 실행 = 73
04 기계어의 구성(명령어 형식: Instruction Format) = 74
1. Instruction Prefixes = 75
2. 작동 코드(Opcode: Operand code) = 79
3. 번지 지정 방식과 MODR/M 그리고 SIB = 83
4. 번지 지정 방식 = 86
Chapter 4 프로시저와 스택 구조
01 스택을 사용한 복귀 주소의 저장 = 95
02 스택을 사용한 로컬 변수의 저장 = 98
03 스택을 사용한 파라미터 전달 = 100
04 파라미터 전달의 여러 가지 방법(Calling Conventions) = 103
1. __cdecl = 103
2. __stdcall = 104
3. __fastcall = 105
05 스택 프레임을 이용한 스택 백트레이싱 = 106
06 프로시저에서 리턴 값 전달하기 = 108
07 Windows에서의 스택 구조 = 109
08 함수에서의 레지스터 사용 = 113
09 Name Mangling(Name Decoration) = 115
Chapter 5 프로세스와 스레드
01 프로세스와 스레드의 개념 = 121
1. 프로세스(Process) = 121
2. 스레드(Thread) = 121
02 프로세스의 구조 = 123
1. WinDBG를 사용한 프로세스 구조체 살펴보기 = 123
2. 프로그램에서 EPROCESS 포인터 얻기 = 131
3. 프로세스를 구성하는 요소들 = 133
03 스레드의 구조 = 154
1. WinDBG를 사용한 스레드 구조체 살펴보기 = 154
2. 프로그램에서 ETHREAD 포인터 얻기 = 160
04 구조화된 예외 처리(Structured Exception Handling) = 162
1. 운영체제에서의 예외 처리 과정 = 163
2. 아주 간단한 SEH 처리 예 = 164
3. Visual C++에서의 SEH 처리 예 = 172
4. Visual C++의 SEH에서 제공하는 추가적 기능들 = 175
05 애플리케이션에서 프로세스와 스레드 관련 정보 얻기 = 177
Chapter 6 스레드의 스케줄링
01 스레드의 상태 = 191
02 우선순위 알고리즘 = 192
1. Windows에서의 우선순위 스케줄링 구현 = 193
2. 프로세스 우선순위와 스레드 우선순위 = 202
03 Performance monitor 프로그램을 이용한 실험 = 207
04 선점형 스케줄링(Preemptive Scheduling) = 208
1. 선점되어지는 경우 = 210
2. Windows에서의 선점형 스케줄링 구현 = 211
3. IPQL과 커널레벨등 동기화 = 215
Chapter 7 스레드의 동기화
01 스레드 동기화의 필요성 = 221
02 유저모드에서의 동기화 함수들 = 224
1. 크리티컬 섹션(Critical Section) = 224
2. 뮤텍스(Mutex) = 226
3. 세마포어(Semaphore) = 230
4. 이벤트(Event) = 230
03 커널 동기화 객체와 그 구조 = 231
1. 커널 동기화 객체 = 232
2. 디스패처(Dispatcher)와 대기 블록(WaitBlock) = 239
Chapter 8 메모리 관리
01 가상 주소(Virtual Address) = 247
02 가상 주소(Virtual Address)의 구현 = 247
1. 페이징 기법 = 248
2. 가상 주소와 페이징 시스템 = 250
3. 세그먼트 기법 = 254
4. 단편화(Fragmentation) = 255
5. 세그먼트와 페이징 기법의 병합 = 257
Chapter 9 세그먼테이션
01 가상 메모리에서 실제 물리 메모리까지 = 261
02 세그먼트 레지스터와 그 사용 = 262
03 세그먼테이션(Memory Segmentation) = 263
04 세그먼트 디스크립터 = 265
05 세그먼트 디스크립터의 내용들 = 267
1. 베이스(Base) 필드 = 268
2. 리미트(Limit) 필드 = 268
3. 액세스(Access) 비트 = 268
4. 프레젠트(Present) 비트 = 269
5. 디폴트(Default) 비트 = 269
6. Granularity 비트 = 269
7. 시스템(System) 비트와 타입(Type) 비트 = 269
06 디스크립터 테이블과 세그먼트 셀렉터 = 276
1. 디스크립터 테이블 = 276
2. LDT(Local Descriptor Table) = 278
3. 세그먼트 셀렉터 = 279
07 Windows에서의 세그먼트 디스크립터와 레지스터 = 280
1. 애플리케이션에서의 세그먼트 레지스터와 그 내용 = 281
2. 커널레벨에서의 세그먼트 레지스터와 그 내용 = 285
Chapter 10 페이징
01 페이징(Paging) = 293
02 선형 주소에서 물리 주소까지 = 294
1. CR3 레지스터 = 295
2. 페이지 디렉토리(Page Directory) = 297
3. 페이지 테이블(Page Table) = 299
4. 실습 = 302
03 Windows에서의 페이지 디렉토리와 테이블 = 307
04 공유 메모리와 공유 모듈 = 312
05 메모리 공간의 전환 = 317
06 3GByte의 유저 메모리를 사용하는 Windows = 319
07 Page Address Extensions(PAE) = 320
Chapter 11 페이지 관리
01 요구 페이지 처리 = 325
1. 페이지 폴트 예외 핸들러 = 326
2. 선페이징(Prepaging) = 336
3. Paged Memory와 NonPaged Memory = 337
02 페이지 교체 정책(Page Replacement Policy) = 342
1. 지역성(Locality) = 342
2. LRU(Least Recently Used) 방식 = 343
3. FIFO(First In, First Out) 방식 = 346
4. Page Frame Number Database = 347
5. 실습 = 350
03 작업세트(Working Set) 관리 = 351
1. 스레싱(Thrashing) 현상 = 351
2. 작업세트 관리 = 352
3. 작업세트를 조절하기 위한 Win32 API = 354
04 페이지의 효과적 이용 방법 = 356
Chapter 12 프로세서 내의 캐시 관리
01 원리 = 361
02 캐시 메모리의 주소 매핑 방식 = 363
1. 직접 매핑(direct mapping) = 363
2. 어소시에이티브 매핑(associative mapping) = 364
3. 셋 어소시에이티브 매핑(set associative mapping) = 366
03 캐시 교체 알고리즘 = 367
04 캐시 쓰기 정책 = 368
1. Write Through 정책 = 368
2. Write Back 정책 = 368
05 Pentium Processor에서의 캐시 구조 = 369
06 캐시와 프로그램 최적화 = 371
1. 데이터의 위치와 속도 = 372
2. 지역성을 이용한 최적화(Locality) = 374
3. 특별한 명령어를 이용한 최적화 = 375
4. 데이터의 정렬(Alignment) = 376
Chapter 13 윈도우즈에서의 캐시 관리
01 Windows에서의 파일 읽기와 그 과정 = 381
02 내부 구조 = 383
1. Windows의 System Cache 영역과 View = 383
2. VACB(Virtual Address Control Blocks)에 의한 View 관리 = 384
3. 파일 열기 속성과 캐시 관리자 = 386
03 캐시 내부 살펴보기 = 387
1. FILE I/O 함수에 의한 접근 시의 데이터 관리 = 388
2. 메모리 맵드 I/O에 대한 파일 관리 = 392
Chapter 14 유저레벨과 커널레벨
01 특권레벨(Privilege Levels) = 397
02 커널모드(Ring O)와 유저모드(Ring 3) = 399
03 Windows에서의 유저레벨 코드 세그먼트 = 399
04 Windows에서의 커널레벨 코드 세그먼트 = 401
05 커널레벨에서만 실행되는 CPU 명령어 = 401
06 세그먼트의 갱신과 특권레벨 = 403
1. 데이터의 세그먼트 갱신(DS, ES, FS, GS) = 403
2. 스택 세그먼트 갱신(SS) = 404
07 코드 세그먼트의 변경과 특권레벨의 변경 = 405
1. 세그먼트간의 JMP 또는 CALL 명령 실행 = 406
08 인터럽트와 특권레벨 = 427
1. IDT(Interrupt Descriptor Table) = 427
2. 인텔에서 정의하고 있는 인터럽트 벡터별 내용 = 429
3. 인터럽트 발생과 스택 변화 = 431
4. Windows API의 흐름 = 432
09 I/O 특권레벨 변경 = 446
1. TSS(Task State Segment) 변경을 통한 I/O 권한 변경 = 446
2. IOPL 변경을 통한 IO 특권레벨 변환하기 = 458
Chapter 15 실행 파일과 로더
01 PE 파일의 레이아웃 = 463
1. DOS 헤더와 스터브 코드 = 463
2. PE 헤더 = 465
3. Optional 헤더 = 468
4. 섹션(Section) 헤더 = 473
5. 세션(Section) = 475
02 PE 파일의 주요 정보와 로더 = 476
1. 로더의 내부 = 477
2. 기준 재배치(Base Relocations) = 479
3. 익스포트 함수(Export Functions) = 483
4. 임포트 함수(Import Functions) = 485
Chapter 16 16비트 에뮬레이션
01 MS-DOS 에뮬레이션 = 491
1. 메모리 공간의 구성 = 492
2. 16비트 명령어의 실행 = 494
3. Interrupt에 대한 처리 = 494
4. Memory Mapped I/O에 대한 처리 = 498
02 80286 환경에서 수행되는 Win16 에뮬레이션 = 499
부록
부록 A. WinDBG 설치 및 간단한 사용법 = 502
부록 B. 드라이버 개발 경험이 없는 프로그래머를 위하여 = 512
부록 C. 디스어셈블링에 대한 이해 = 523
부록 D. 디버거의 내부 구조와 원리 = 532
참고문헌 = 541
찾아보기 = 543
(닥치는 대로 끌리는 대로 오직 재미있게) 이동진 독서법
028 이25ㅇ
혼자 공부하는 바이브 코딩 with 클로드 코드 : AI와 1:1 대화하며 배우는 첫 코딩 자습서
005.133 조883ㅎ
(Web·programming·Git이 쉬워지는) 비주얼 스튜디오 코드 가이드
005.13 리47ㅂ김
(만화) 마키아벨리 군주론,. 1 / 개정판
001.308 서66ㅅ2
삶이 허기질 때 나는 교양을 읽는다 : 지식 브런치 마스터 에디션
001.3 지58삶
(품격 있는 대화를 위한) 지식 브리핑
001.3 김785ㅈ
서평쓰기