목차 일부
제1장 Win32와 Win64의 기초 ... 23
운영체제의 필수 기능 ... 25
Windows의 진화 ... 26
Windows 버전들 ... 26
Windows의 시장 역할 ... 29
Windows, 표준, 개방 시스템 ... 30
Windows의 원칙들 ... 32
Win64 대비 ... 34
표준 C 라...
더보기
목차 전체
제1장 Win32와 Win64의 기초 ... 23
운영체제의 필수 기능 ... 25
Windows의 진화 ... 26
Windows 버전들 ... 26
Windows의 시장 역할 ... 29
Windows, 표준, 개방 시스템 ... 30
Windows의 원칙들 ... 32
Win64 대비 ... 34
표준 C 라이브러리: 파일 처리에 관련해서 ... 35
이 책을 활용하는 데 필요한 것들 ... 36
예제: 간단한 순차적 파일 복사 ... 37
요약 ... 43
실습 과제 ... 46
제2장 Windows 파일 시스템과 문자 I/O 사용하기 ... 47
Windows의 여러 파일 시스템들 ... 49
파일 이름 규칙 ... 50
파일 열기, 읽기, 쓰기, 닫기 ... 51
잠깐 곁가지: 유니코드와 일반적 문자들 ... 57
유니코드 전략들 ... 61
표준 장치들과 콘솔 I/O ... 62
예제: 콘솔 출력과 입력 ... 66
예제: 오류 처리 ... 68
예제: 여러 개의 파일들을 표준 출력으로 복사 ... 70
예제: ASCII를 유니코드로 변환 ... 72
파일과 디렉터리 관리 ... 74
예제: 현재 디렉터리 출력 ... 79
요약 ... 80
실습 과제 ... 81
제3장 고급 파일 및 디렉터리 처리와 레지스트리 ... 83
64비트 파일 시스템 ... 85
파일 포인터 ... 86
파일 크기 얻기 ... 89
예제: 임의적인 레코드 갱신 ... 91
파일 특성과 디렉터리 처리 ... 94
마운트 지점 ... 99
예제: 파일 특성들을 나열 ... 100
예제: 파일 시간 설정 ... 103
파일 처리 전략 ... 104
파일 잠금 ... 105
레지스트리 ... 110
레지스트리 관리 ... 112
예제: 레지스트리 키와 내용 나열하기 ... 116
요약 ... 120
실습 과제 ... 120
제4장 예외 처리 ... 123
예외와 그 처리부 ... 125
부동소수점 예외들 ... 131
오류와 예외 ... 133
예제: 오류를 예외로 취급하기 ... 135
종료 처리부 ... 137
전역, 지역 스택 되짚기 ... 139
예제: 종료 처리부를 이용한 프로그램 품질 개선 ... 141
예제: 필터 함수 사용하기 ... 143
콘솔 제어 처리부 ... 146
예제: 콘솔 제어 처리부 ... 148
벡터식 예외 처리 ... 150
요약 ... 151
실습 과제 ... 152
제5장 메모리 관리, 메모리 맵드 파일, DLL ... 153
Win32와 Win64 메모리 관리 아키텍처 ... 155
힙 ... 157
힙 메모리 관리 ... 161
예제: 이진 검색 트리를 이용한 파일 정렬 ... 165
메모리 맵드 파일 ... 170
예제: 메모리 맵드 파일을 이용한 순차 파일 처리 ... 177
예제: 메모리 맵드 파일의 정렬 ... 179
예제: 베이스트 포인터 사용하기 ... 181
동적 링크 라이브러리 ... 186
예제: 파일 변환 함수를 명시적으로 링크 ... 193
DLL 진입점 ... 194
DLL 버전 관리 ... 195
요약 ... 197
실습 과제 ... 198
제6장 프로세스 관리 ... 201
Windows 프로세스와 스레드 ... 203
프로세스 생성 ... 205
프로세스 핸들 개수 ... 212
프로세스 신원 ... 213
핸들 복제 ... 214
프로세스와 스레드의 종료 ... 215
프로세스 종료 기다리기 ... 217
환경 블럭과 환경 문자열 ... 219
예제: 병렬적 패턴 검색 ... 221
다중 프로세서 환경의 프로세스 ... 224
프로세스 수행 시간 ... 225
예제: 프로세스 수행 시간 ... 225
콘솔 제어 이벤트 발생 ... 228
예제: 간단한 작업 관리 ... 229
작업 객체 ... 238
요약 ... 239
실습 과제 ... 239
제7장 스레드와 스케줄링 ... 243
스레드의 개요 ... 245
스레드의 기초 ... 247
스레드 관리 ... 248
스레드에서 C 라이브러리 사용 ... 253
예제: 다중 스레드 패턴 검색 ... 255
성능 상의 영향 ... 258
감독/일꾼 모형과 기타 스레딩 모형들 ... 258
예제: 병합 정렬 - 분할정복을 통한 SMP 활용 ... 260
스레드 로컬 저장소 ... 264
프로세스와 스레드의 우선순위와 스케줄링 ... 266
스레드의 여러 상태들 ... 268
함정과 흔한 실수들 ... 270
시간 만료 대기 ... 271
파이버 ... 272
요약 ... 274
실습 과제 ... 275
제8장 스레드 동기화 ... 279
스레드 동기화의 필요성 ... 281
스레드 동기화 객체들 ... 286
CRITICAL_SECTION 객체 ... 287
공유 변수를 보호하기 위한 CRITICAL_SECTION ... 289
예제: 간단한 생산자/소비자 시스템 ... 291
뮤텍스 ... 295
세마포어 ... 301
이벤트 ... 304
예제: 생산자/소비자 시스템 ... 307
뮤텍스와 CRITICAL_SECTION에 대한 추가적인 지침들 ... 311
상호잠금 함수들에 대해 좀 더 ... 312
메모리 관리의 성능 고려사항 ... 314
요약 ... 314
실습 과제 ... 314
제9장 동기화의 성능 영향과 지침들 ... 317
동기화가 성능에 미치는 영향 ... 319
성능 측정을 위한 모형 프로그램 ... 323
CS 스핀 횟수를 이용한 SMP 성능 조율 ... 324
스레드 경쟁을 줄이기 위한 세마포어 스로틀 ... 325
프로세서 친화도 ... 328
I/O 완료 포트 ... 331
성능 상의 함정들과 지침들 ... 331
요약 ... 332
실습 과제 ... 333
제10장 고급 스레드 동기화 ... 335
조건 변수 모형과 안전성 속성들 ... 337
SignalObjectAndWait 사용법 ... 343
예제: 문턱값 장벽 객체 ... 345
대기열 객체 ... 348
예제: 다단계 파이프라인에서 대기열을 사용 ... 353
비동기 프로시저 호출 ... 361
비동기 프로시저 호출의 등록 ... 362
통지 가능 대기 상태 ... 363
안전한 스레드 취소 ... 365
응용 프로그램 이식성을 위한 Pthreads 사용 ... 365
스레드 스택과 스레드 개수 ... 366
다중 스레드 응용 프로그램의 설계, 디버깅, 테스팅에 대한 조언 ... 366
Windows API 이외의 수단들 ... 369
요약 ... 369
실습 과제 ... 370
제11장 프로세스간 통신 ... 373
익명 파이프 ... 375
예제: 익명 파이프를 이용한 I/O 재지정 ... 376
명명된 파이프 ... 379
명명된 파이프 트랜잭션 함수들 ... 386
예제: 클라이언트/서버 명령줄 처리기 ... 389
클라이언트/서버 명령줄 처리기에 대한 논의 ... 395
메일슬롯 ... 396
파이프와 메일슬롯의 생성, 연결, 이름 ... 400
예제: 클라이언트들이 찾을 수 있는 서버 ... 401
스레드 모형들에 대한 논의 ... 403
요약 ... 404
실습 과제 ... 405
제12장 Windows 소켓을 이용한 네트웍 프로그래밍 ... 407
Windows 소켓 ... 410
소켓 서버 함수들 ... 412
소켓 클라이언트 함수들 ... 416
명명된 파이프와 소켓의 비교 ... 418
예제: 소켓 메시지 수신 함수 ... 420
예제: 소켓 기반 클라이언트 ... 421
예제: 새로운 기능이 추가된 소켓 기반 서버 ... 423
프로세스 내부 서버 ... 428
줄 지향적 메시지, DLL 진입점, TLS ... 430
예제: 소켓 메시지를 위한, 스레드에 안전한 DLL ... 431
예제: 또 다른 스레드 안전 DLL 전략 ... 436
데이터그램 ... 438
버클리 소켓 대 Windows 소켓 ... 439
Windows 소켓을 이용한 중첩 I/O ... 440
Windows 소켓 2 ... 440
요약 ... 441
실습 과제 ... 442
제13장 Windows 서비스 ... 445
Windows 서비스 만들기 - 개요 ... 448
main() 함수 ... 448
ServiceMain() 함수들 ... 449
서비스 제어 처리부 ... 454
예제: 서비스 "래퍼" ... 455
Windows 서비스의 관리 ... 459
요약: 서비스의 작동과 관리 ... 462
예제: 서비스 제어 셸 ... 463
응용 프로그램과 서비스가 커널 객체를 공유하기 ... 466
이벤트 로깅 ... 467
서비스의 디버깅에 대해 ... 467
요약 ... 468
실습 과제 ... 469
제14장 비동기 입출력과 I/O 완료 포트 ... 471
Windows 비동기 I/O의 개요 ... 473
중첩 I/O ... 474
예제: 파일 핸들을 통한 동기화 ... 478
예제: 중첩 I/O와 다중 버퍼를 이용한 파일 변환 ... 479
완료 루틴을 이용하는 확장 I/O ... 483
예제: 확장 I/O를 이용한 파일 변환 ... 488
스레드를 이용한 비동기 I/O ... 491
대기 가능 타이머 ... 492
예제: 대기 가능 타이머 사용 ... 494
I/O 완료 포트 ... 495
예제: I/O 완료 포트를 이용하는 서버 ... 499
요약 ... 503
실습 과제 ... 504
제15장 Windows 객체의 보안 ... 505
보안 특성 ... 507
보안의 개요: 보안 서술자 ... 508
보안 서술자의 제어 플래그들 ... 512
보안 식별자 ... 512
ACL의 관리 ... 514
예제: NTFS 파일에서 UNIX 스타일 퍼미션 흉내내기 ... 516
예제: 보안 특성 초기화 ... 519
보안 서술자의 조회와 변경 ... 522
예제: 파일 퍼미션 읽기 ... 525
예제: 파일 퍼미션 변경 ... 526
커널과 통신 객체의 보안 ... 527
예제: 프로세스와 스레드의 보안 ... 530
추가적인 보안 기능들의 개요 ... 530
요약 ... 532
실습 과제 ... 533
제16장 Win64 프로그래밍 ... 535
Win64의 현황 ... 537
64비트 아키텍처의 개요 ... 538
Win64 프로그래밍 모형 ... 541
자료 형식들 ... 542
구형 코드의 이주 ... 545
예제: sortMM의 이주 ... 546
요약 ... 550
실습 과제 ... 551
부록 A 예제 프로그램 사용법 ... 553
웹 사이트 파일들의 구성 ... 556
헤더 파일들 ... 563
추가적인 편의용 함수들 ... 569
부록 B Windows, UNIX, C 라이브러리 대조표 ... 573
2장, 3장 파일 및 디렉터리 관리 ... 576
4장 예외 처리 ... 581
5장 메모리 관리, 메모리 맵드 파일, DLL ... 582
6장 프로세스 관리 ... 583
7장 스레드와 스케줄링 ... 584
8장-10장 스레드 동기화 ... 585
11장 프로세스간 통신(IPC) ... 586
14장 비동기 I/O ... 588
15장 Windows 객체의 보안 ... 588
부록 C 성능 측정 결과 ... 591
테스트 구성 ... 593
성능 측정 결과 ... 595
테스트 실행 방법 ... 605
참고문헌 ... 606
찾아보기 ... 610
더보기 닫기