서브메뉴

본문

Windows 시스템 프로그래밍 (윈도우즈 API 핵심 바이블)
Windows 시스템 프로그래밍 (윈도우즈 API 핵심 바이블)
저자 : Johnson M. Hart
출판사 : 정보문화사
출판년 : 2011
ISBN : 9788956745145

책소개


가장 실제적이고 핵심적인 내용을 통해
Windows 프로그래밍에 접근한다!


이 책에는 64비트 프로그래밍, 병렬성, 다중 코어 시스템을 비롯한 여러 필수 주제들의 새로운 내용을 추가로 다루었다. 견고한 코드 예제들이 갱신되었고, 전체적으로 최적화되었다. 예제들은 32비트 버전과 64비트 버전으로 나뉘며, 단일 프로세서 시스템은 물론 다중 프로세서 시스템 상에서 Windows 7과 Windows Vista, Windows Server 2008, Windows XP의 디버깅과 시험을 모두 거친 것이다. 예제 프로그램의 작동 방식을 명확하게 알 수 있도록 실행 모습을 담은 스크린샷도 본문에 추가되었다.

Windows의 기능과 특징을 API 수준에서 체계적으로 총망라하여 Windows 프로그래머에게 필요한 모든 서비스를 실용적으로 설명한다. 특히 Windows 함수들이 실제로 어떻게 작동하는지, 현실의 응용 프로그램들과 어떤 식으로 상호작용하는지를 강조한다. 단일 프로세스 응용 프로그램에 쓰이는 기능들로 시작해서 좀 더 복잡한 함수들과 다중 스레드 환경들로 전개된다. 다루는 주제들은 파일 시스템, 메모리 관리, 예외 처리, 프로세스, 스레드, 동기화, 프로세스 간 통신, Windows 서비스, 보안 등이다.

목차


1장 ㆍ Windows의 기초
운영체제의 필수 기능
Windows의 진화
Windows 버전들
업계에서 Windows의 위치
Windows, 표준, 열린 시스템
Windows의 원칙들
32비트와 64비트 소스 코드 이식성
표준 C 라이브러리: 파일 처리에 관련해서
이 책을 활용하는 데 필요한 것들
예제: 간단한 순차 파일 복사
요약
실습 과제

2장 ㆍ Windows 파일 시스템과 문자 I/O 사용하기
Windows의 여러 파일 시스템들
파일 명명 방식
파일 열기, 읽기, 쓰기, 닫기
잠깐 곁가지: 유니코드와 일반적 문자들
유니코드 전략들
예제: 오류 처리
표준 장치들
예제: 여러 개의 파일들을 표준 출력으로 복사
예제: 간단한 파일 암호화
파일과 디렉터리 관리
콘솔 I/O
예제: 콘솔 출력과 입력
예제: 현재 디렉터리 출력
요약
실습 과제

3장 ㆍ 고급 파일 및 디렉터리 처리와 레지스트리
64비트 파일 시스템
파일 포인터
파일 크기 얻기
예제: 임의 레코드 갱신
파일 특성과 디렉터리 처리
예제: 파일 특성들 나열하기
예제: 파일 시간 설정
파일 처리 전략
파일 잠금
레지스트리
레지스트리 관리
예제: 레지스트리 키와 내용 나열하기
요약
실습 과제

4장 ㆍ 예외 처리
예외와 예외 처리부
부동소수점 예외들
예제: 오류를 예외로 취급하기
종료 처리부
예제: 종료 처리부를 이용한 프로그램 품질 개선
예제: 필터 함수 사용하기
콘솔 제어 처리부
예제: 콘솔 제어 처리부
벡터식 예외 처리
요약
실습 과제

5장 ㆍ 메모리 관리, 메모리 맵드 파일, DLL
Windows 메모리 관리 아키텍처

힙 메모리 관리
예제: 이진 검색 트리를 이용한 파일 정렬
메모리 맵드 파일
예제: 메모리 맵드 파일을 이용한 순차 파일 처리
예제: 메모리 맵드 파일의 정렬
예제: 기준 있는 포인터 사용하기
동적 링크 라이브러리
예제: 파일 변환 함수를 명시적으로 링크
DLL 진입점
요약
실습 과제

6장 ㆍ 프로세스 관리
Windows 프로세스와 스레드
프로세스 생성
프로세스 신원
핸들 복제
프로세스의 종료
프로세스 종료 기다리기
환경 블록과 환경 문자열
예제: 병렬적 패턴 검색
다중 프로세서 환경의 프로세스
프로세스 수행 시간
예제: 프로세스 수행 시간
콘솔 제어 사건 발생하기
예제: 간단한 작업 관리
예제: 작업 객체의 활용
요약
실습 과제

7장 ㆍ 스레드와 스케줄링
스레드의 개요
스레드의 기초
스레드 관리
스레드에서 C 라이브러리 사용
예제: 다중 스레드 패턴 검색
성능상의 영향
감독/일꾼 모형과 기타 스레드 적용 모형들
예제: 병합 정렬 - 분할정복을 통한 다중 프로세서 활용
프로그램 병렬성 소개
스레드 지역 저장소
프로세스와 스레드의 우선순위와 스케줄링
스레드의 여러 상태들
함정과 흔한 실수들
시간 만료 대기
파이버
요약
실습 과제

8장 ㆍ 스레드 동기화
스레드 동기화의 필요성
스레드 동기화 객체들
CRITICAL_SECTION 객체
CRITICAL_SECTION으로 공유 변수 보호하기
예제: 간단한 생산자/소비자 시스템
뮤텍스
세마포
이벤트
예제: 생산자/소비자 시스템
뮤텍스와 CRITICAL_SECTION에 대한 추가적인 지침들
추가적인 상호잠금 함수들
메모리 관리의 성능 고려사항
요약
실습 과제

9장 ㆍ 잠금과 성능, 그리고 NT6의 개선 사항들
동기화가 성능에 미치는 영향
CS 스핀 횟수를 이용한 다중 프로세서 성능 조율
NT6 SRW 자물쇠
스레드 풀로 스레드 경쟁 줄이기
I/O 완료 포트
NT6 스레드 풀
요약: 잠금 성능
병렬성 재고찰
프로세서 친화도
성능상의 함정들과 지침들
요약
실습 과제

10장 ㆍ 고급 스레드 동기화
조건 변수 모형과 안전성 속성들
SignalObjectAndWait 사용법
예제: 문턱값 장벽 객체
대기열 객체
예제: 다단계 파이프라인에서 대기열을 사용
Windows NT6 조건 변수
비동기 프로시저 호출
비동기 프로시저 호출의 등록
통지 가능 대기 상태
안전한 스레드 취소
응용 프로그램 이식성을 위한 Pthreads 사용
스레드 스택과 스레드 개수
설계, 디버깅, 검사 지침 및 조언
Windows API 이외의 수단들
요약
실습 과제

11장 ㆍ 프로세스 간 통신
익명 파이프
예제: 익명 파이프를 이용한 I/O 재지정
명명된 파이프
명명된 파이프 트랜잭션 함수들
예제: 클라이언트/서버 명령줄 처리기
클라이언트/서버 명령줄 처리기 해설
메일슬롯
파이프와 메일슬롯의 생성, 연결, 이름
예제: 클라이언트들이 찾을 수 있는 서버
요약
실습 과제

12장 ㆍ Windows 소켓을 이용한 네트워크 프로그래밍
Windows 소켓
소켓 서버 함수들
소켓 클라이언트 함수들
명명된 파이프와 소켓의 비교
예제: 소켓 메시지 수신 함수
예?: 소켓 기반 클라이언트
예제: 새로운 기능이 추가된 소켓 기반 서버
프로세스 내부 서버
줄 지향적 메시지, DLL 진입점, TLS
예제: 소켓 메시지를 위한, 스레드에 안전한 DLL
예제: 또 다른 스레드 안전 DLL 전략
데이터그램
버클리 소켓 대 Windows 소켓
Windows 소켓을 이용한 중첩 I/O
Windows 소켓의 추가 기능
요약
실습 과제

13장 ㆍ Windows 서비스
Windows 서비스 만들기―개요
main() 함수
ServiceMain() 함수들
서비스 제어 처리부
이벤트 로깅
예제: 서비스 “래퍼”
Windows 서비스의 관리
요약: 서비스의 작동과 관리
예제: 서비스 제어 셸
서비스와 커널 객체 공유하기
서비스의 디버깅에 대해
요약
실습 과제

14장 ㆍ 비동기 입출력과 I/O 완료 포트
Windows 비동기 I/O의 개요
중첩 I/O
예제: 파일 핸들로 동기화하기
예제: 중첩 I/O와 다중 버퍼를 이용한 파일 변환
완료 루틴을 이용한 확장 I/O
예제: 확장 I/O를 이용한 파일 변환
다중 스레드를 이용한 비동기 I/O
대기 가능 타이머
예제: 대기 가능 타이머 사용
I/O 완료 포트
예제: I/O 완료 포트를 이용하는 서버
요약
실습 과제

15장 ㆍ Windows 객체의 보안
보안 특성
보안의 개요: 보안 서술자
보안 서술자의 제어 플래그들
보안 식별자
ACL의 관리
예제: NTFS 파일에서 UNIX 스타일 허가 설정 흉내내기
예제: 보안 특성을 초기화하기
보안 서술자의 조회와 변경
예제: 파일 허가 설정 읽기
예제: 파일 허가 설정 바꾸기
커널과 통신 객체의 보안
예제: 프로세스와 스레드의 보안
추가적인 보안 기능들의 개요
요약
실습 과제

Appendix A ㆍ 예제 프로그램 활용법
웹 부록의 구성

Appendix B ㆍ 소스 코드 이식성: Windows, UNIX, Linux
소스 코드 이식성 전략들
Windows Services for UNIX
Windows 기능성을 위한 Windows 소스 코드 이식성
제2장, 3장: 파일 및 디렉터리 관리
제4장: 예외 처리
제5장: 메모리 관리, 메모리 맵드 파일, DLL
제6장: 프로세스 관리
제7장: 스레드와 스케줄링
제8~10장: 스레드 동기화
제11장: 프로세스 간 통신(IPC)
제14장: 비동기 I/O
제15장: Windows 객체의 보안

Appendix C ㆍ 성능 측정 결과
성능 실험의 구성
시험들을 직접 실행해 보려면

QuickMenu