메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

API로 배우는 Windows 구조와 원리

API로 배우는 Windows 구조와 원리

한빛미디어

번역서

절판

  • 저자 : 야스무로 히로카즈
  • 번역 : 김용준
  • 출간 : 2004-10-11
  • 페이지 : 360 쪽
  • ISBN : 897914301X
  • 물류코드 :1301
  • 초급 초중급 중급 중고급 고급
4.4점 (16명)
좋아요 : 24

눈에 보이지 않는 또 다른 시스템 알고리즘! OS를 이해하자

프로그램을 만들다 보면 수많은 문제에 부딪힌다. 시스템이 다운되기도 하고 보안 허점이 드러나 동분서주하다가 튜닝은 꿈도 꾸지 못하는 상황이 자주 발생한다. 이런 상황에 닥쳤다면 이는 프로그래머의 프로그래밍 스킬이 부족해서일까? 아니다. 해답의 실마리는 운영체제의 내부 구조를 이해하는 데서부터 시작된다.
이 책은 Windows 애플리케이션에게 제공하는 Windows API(Application Programming Interface)라고 하는 "창구"를 통해서 Windows의 작동 구조를 이해할 수 있도록 도와준다. C/C++는 물론이고, 비주얼 베이직, Java, .NET 같은 개발 환경을 사용해서 제작한 애플리케이션도 내부에서는 Windows API를 호출해서 동작한다. 이런 개발 환경을 무심하게 넘기지 않고, 개발 환경의 내부에서 어떻게 작동하는지, 즉 운영체제 내부는 어떻게 구성되어 있는지를 알게 되면 프로그래밍 기술을 크게 향상시킬 수 있다.
주요 내용
  • Windows 애플리케이션의 구조: 기본부터 심화 학습까지
  • 수준 높은 애플리케이션을 만들기 위한 콘솔 환경의 이해
  • 파일 접근의 원리와 제어: Windows의 파일 조작 기능 이해
  • 메모리 관리의 구조의 API의 사용 방법
  • 멀티태스킹: 프로세스와 스레드
  • 만들면서 이해하는 DLL의 작동 원리
  • 메모리 공간의 벽을 넘어선 프로세스 간 데이터 공유
  • 튜닝이나 디버그에 도움되는 실행 파일의 구조와 원리
  • Windows의 접근 제어 구조: 내 프로그램의 보안은 내 손으로
  • 서비스 프로그램 작성 원리: HTTP와 FTP 같은 시스템의 작성 원리
  • 디버거를 알아야 디버깅을 안다
  • 코드 체계의 세계화: 유니코드의 원리
  • 문자는 어떻게 모양이 달라질까: 폰트의 세계
  • 예외 처리를 Windows에만 맡기지 말자
  • 디바이스 드라이버의 구조 이해와 작성 방법
추천평(미디어서평)

"윈도우 프로그래머가 제대로 된 프로그램을 만들려면 Windows OS에 대한 이해는 필수적이다. 하지만 그 방대함에 금새 포기하고 마는 경우가 많다. 수년 동안 강의를 해오면서 이 책만큼 Windows OS의 핵심만을 추려서 이해하기 쉽게 구성한 책은 보지 못하였다. 윈도우 프로그래머라면 적어도 이 책에 씌어진 정도는 섭렵하고 있어야 한다고 본다." - 김선우(IT COOKBOOK 윈도우 프로그래밍 저자)
야스무로 히로카즈 저자

야스무로 히로카즈

컴퓨터 회사의 소프트웨어 개발부에 소속되어 있으며, C++와 Java를 사용해서 각종 플랫폼용 애플리케이션을 개발한다. Windows 3.1용 애플리케이션 개발에 참가한 계기로 Windows와 인연을 맺은지 어느덧 10년이 지났다. 끊임없이 등장하는 신기술 때문에 옛날의 경력만으로는 먹고 살기가 힘들어졌지만, 일과 취미의 영역이 비슷하므로 그다지 고통스럽지는 않다. 필자는 A형이기 때문인지 원고집필 전에 마음을 가다듬기 위해 먼저 작업실을 깨끗하게 정돈하는데, 주변 사람들이 보기에는 현실 도피처럼 보이는 모양이다.
김용준 역자

김용준

홈페이지: http://www.3dstudy.net

한양대학교 수학과를 졸업하고 쌍용정보통신의 시스템연구소에서 근무하였으며, LG 소프트스쿨과 주성대학 등에서 강의를 한 바 있다. 저서로는 『재미있는 게임 프로그래밍』(미래정보사, 1994)이 있으며, 「마이크로 소프트웨어」 등의 잡지에도 다수의 글을 기고하였다. 현재 『3D 엔진 프로그래밍(가제)』(한빛미디어, 2004년 출간 예정)의 집필에 정열을 쏟고 있다.

저자 서문
역자 서문
이 책의 주요 내용
목차

1부. 운영체제의 구조를 배우자
1장. 운영체제의 동작 철저 이해
    운영체제는 애플리케이션의 요청을 "조정(調停)"한다
    운영체제는 높은 특권레벨에서 작동한다
    각 세그먼트의 속성은 디스크립터 테이블에 설정한다
    I/O 특권레벨을 설정해서 I/O 접근을 제한한다
    콜게이트와 소프트웨어 인터럽트로 커널모드로 들어간다
    Windows에서의 API 호출 처리 순서
    Linux에서의 시스템 호출 처리 순서
    Windows 애플리케이션이 시작할 때까지

2장. 운영체제의 3대 기능
    01. 프로세스/스레드 관리
    짧은 간격으로 태스크를 전화하여 멀티태스크 구현
    CPU의 상태를 보존/복원해서 태스크를 전환
    스레드는 프로세스보다 빠르게 전환된다
    우선순위를 고려해서 태스크를 스케줄링한다
    02. 메모리 관리
    디스크와 조합하여 보이는 메모리량을 늘려라
    가상 주소와 실제 주소를 페이지 단위로 매핑한다
    프로세스마다 페이지 테이블을 준비해서 주소 공간을 분리한다
    예약과 수용의 2단계 조작으로 메모리를 할당한다
    03. 파일 관리
    구조가 간단한 FAT FS
    파일 속성을 유연하게 다룰 수 있는 NTFS
    i-node로 디스크를 관리하는 Linux의 Ext2 FS

3장. 사용자 입력 구조
    인터럽트를 사용해서 이벤트 발생을 알려준다
    우선순위가 낮은 인터럽트는 보류한다
    윈도우 메시지로 애플리케이션에 통지한다
    큐를 2단으로 구성해서 메시지를 놓치는 것을 막는다
    메시지 루프로 큐에서 메시지를 꺼낸다

2부. API로 배우는 Windows의 구조
4장. Windows 애플리케이션의 구조
    Windows 애플리케이션은 이벤트 반응형이다
    메시지를 사용해 이벤트를 통지한다
    윈도우 프로시저로 메시지를 처리한다
    WinMain 함수에서 실행을 시작한다
    윈도우 클래스를 등록해 윈도우를 생성한다
    메시지 루프로 메시지를 하나씩 꺼낸다
    메시지의 대부분은 DefWindowProc에 처리를 맡긴다

5장. 윈도우
    윈도우는 Windows가 관리하는 객체다
    윈도우 스타일로 윈도우의 구성요소를 지정한다
    윈도우 스타일로 윈도우의 종류를 지정한다
    부모 윈도우는 자식 윈도우의 디스플레이
    윈도우 간 소유 관계를 설정한다
    컨트롤 ID로 자식 윈도우를 식별한다
    SetWindowPos API로 Z 순서를 지정한다

6장. 윈도우 메시지
    메시지 하나는 단시간에 처리한다
    장시간을 필요로 하는 처리는 분할해서 실행한다
    PeekMessage API를 사용해 공전 시간에 처리한다
    독자적인 메시지를 정의한다
    PostMessage를 사용해 큐를 경유하는 메시지를 보낸다
    메시지 전달인자에 포인터를 넘긴다

7장. Windows 콘솔 사용
    Windows에도 콘솔 환경이 있다
    표준 입출력을 사용한다
    콘솔 프로그램과 GUI 프로그램의 차이는 작다
    GUI 프로그램에서도 콘솔을 이용할 수 있다
    콘솔 API를 사용해 본다
    저수준 API에서는 마우스 입력도 다룰 수 있다

8장. 파일 접근 제어
    파일을 손쉽게 다룰 수 있게 해주는 파일시스템
    라이브러리 함수에서는 텍스트 모드에 주의한다
    CreateFile API로 파일을 연다
    여러 프로그램으로부터의 동시 접근을 제어한다
    데이터의 읽고 쓰기는 버퍼링된다
    파일의 특정 위치에서 읽기/쓰기를 한다
    마무리는 잊기 쉽지만 중요하다

9장. Windows의 메모리 관리
    페이징으로 가상 기억장치를 구현한다
    페이징으로 실제 메모리 페이지를 자유롭게 배치한다
    다른 프로그램의 메모리에는 접근할 수 없다
    VirtualAlloc은 가상 주소의 페이지 상태를 변경한다
    힙으로부터 필요한 크기만 할당한다

10장. Windows의 프로세스와 스레드
    프로그램을 전환해서 멀티태스킹을 구현한다
    멀티스레드는 프로그램 내에서의 멀티태스크
    CreateProcess API로 프로세스를 시작한다
    WaitForSingleObject API로 프로세스의 종료를 기다린다
    CreateThread API로 스레드를 생성한다
    라이브러리 함수를 사용할 경우에는 _beginthreadex를 이용한다

11장. 스레드 간 동기화
    동기화란 무엇인가
    동기화에는 시스템 지원이 필요하다
    동일 프로세스 내의 스레드 간에 배타적 제어를 하는 크리티컬 섹션
    프로세스 간에도 동기화 객체를 사용한다
    프로세스 간의 배타적 제어에는 뮤텍스를 사용한다
    유한 개의 리소스 관리에는 세마포어를 사용한다
    이벤트를 사용해서 다른 스레드에 통지한다

12장. DLL의 작동 원리
    DLL이란 무엇인가
    DllMain 함수에서 초기화 처리를 한다
    함수를 익스포트한다
    DLL을 프로그램에서 이용한다
    DLL을 실행 시에 로드해 링크한다
    DLL에 리소스를 저장해서 다국어를 지원한다

13장. 프로세스 간 데이터 공유
    프로세스에는 각각의 가상 주소 공간이 있다
    파일 매핑이란 무엇인가
    뷰를 만들어 가상 주소 공간에 매핑한다
    페이지 파일을 매핑해서 공유 메모리를 만든다
    WM_COPYDATA 메시지로 간단하게 데이터를 주고받는다

14장. 실행 파일의 구조
    tdump로 실행 파일의 내용을 들여다본다
    더미 MS-DOS 프로그램 뒤쪽에 Windows 프로그램이 있다
    Windows에서는 옵션 헤더를 참조해서 실행 환경을 설정한다
    실행 파일은 섹션 단위로 로드된다
    TLS나 리소스는 코드나 데이터와는 다른 섹션에 저장된다
    이미지 베이스를 변경할 때는 재배치를 한다
    익스포트 정보를 저장하는 .edata 섹션
    임포트 정보를 저장하는 idata 섹션

15장. Windows의 접근 제어 구조
    왜 보안이 중요한가
    파일이나 레지스트리도 객체로 접근 제어를 한다
    사용자/그룹 단위로 접근 권한을 설정한다
    보안 디스크립터를 객체 생성 시에 지정한다
    프로세스의 접근 토큰을 체크한다
    명시적으로 보안 디스크립터를 지정한다

16장. 서비스 생성
    서비스란 특정 규칙에 따라 만들어진 콘솔 프로그램이다
    SCM이 서비스 실행을 제어한다
    서비스는 전용 사용자 계정에서 실행된다
    main 함수에서 서비스 진입점 등록
    실질적인 처리는 ServiceMain 함수에서 한다
    제어 핸들러로 SCM에서 송신하는 제어 코드에 응답한다
    서비스를 설치/제거한다
    프로그램에서 서비스를 제어한다

17장. 프로세스 간 통신을 통한 데이터 교환
    파이프는 프로세스 간 데이터 통로다
    이름있는 파이프는 같은 이름으로 얼마든지 만들 수 있다
    파이프는 파일과 똑같이 읽고 쓸 수 있다
    클라이언트에서 파이프에 접속한다
    이름없는 파이프의 핸들은 상속해서 사용한다
    클립보드는 데이터의 일시적인 보관 장소다
    소유권을 획득하고 나서 데이터를 설정한다
    설정된 객체의 소유권은 시스템으로 이전된다
    지연 렌더링으로 필요에 따라 데이터를 설정한다

18장. 디버거의 구조
    디버거의 기본은 중단점이다
    디버거의 커널모드 부분을 Windows와 결합한다
    디버그 이벤트를 보내서 디버거에 통지한다
    디버거의 자식 프로세스로 디버그 대상 프로세스를 시작한다
    WaitForDebugEvent로 이벤트를 받는다
    디버그 대상 프로세스의 메모리에 접근한다
    예외 발생 시에 디버거를 시작한다

19장. 유니코드와 다국어 지원
    컴퓨터로 처리하기 위해 문자에 코드를 할당한다
    온 세상의 문자를 문자 집합 하나로 정리한다
    기존 시스템과 호환성이 높은 UTF-8
    CJK 문자를 동시에 표현할 수 없는 경우가 있다
    Win32 API에는 ANSI판과 유니코드판이 있다
    일반형을 사용해 프로그램을 작성한다
    메시지로 주고받는 문자열은 자동으로 변환된다

20장. 폰트
    폰트는 자형(字形) 데이터베이스다
    논리 폰트를 물리 폰트에 매핑한다
    페널티를 계산해서 최적 폰트를 선택한다
    문자열 그리기 전용 API를 사용한다
    문자 코드에 맞추어 폰트의 문자 집합을 설정한다
    유니코드의 문자 코드 범위에서 출력할 수 있는 폰트를 검색한다

21장. 구조화 예외 처리 매커니즘
    VC++의 독자적인 키워드를 사용해서 SEH를 이용한다
    콜백 함수의 주소를 TIB로 설정한다
    어셈블리 언어를 사용해 예외 핸들러를 등록한다
    레지스터 세 개를 수정해서 예외 발생 시의 실행 재시작 위치를 변경한다
    언와인드를 위해 한 번 더 콜백 함수를 호출한다
    미처리 예외를 처리하는 순서는 디버거의 유무에 따라 다르다

22장. 비동기 I/O 처리를 이용한 파일 접근
    디스크 접근 대기 시간을 유효하게 사용한다
    이벤트 객체를 사용해서 처리 완료를 통지한다
    PeekOverlappedResult API로 처리 결과를 얻어온다
    동기 I/O와 비동기 I/O는 섞어서 사용할 수 없다
    비동기 I/O 전용 API를 이용한다
    경계 가능 상태를 위해서는 "Ex"가 붙은 대기용 API를 이용한다

23장. 디바이스 드라이버와 플러그 앤 플레이의 구조
    디바이스 드라이버가 하드웨어의 차이를 흡수한다
    WDM 드라이버는 Windows 2000/98 모두에서 사용할 수 있다
    기능 드라이버가 버스 드라이버를 통하여 장치를 제어한다
    필터 드라이버를 생성해서 운영체제의 기능을 확장한다
    버스에 접속된 장치를 열거한다
    INF 파일을 참조해서 드라이버를 설치한다
    전원 관리에는 WDM 드라이버 지원이 필요하다

24장. 디바이스 드라이버 제작 도전
    키 배치를 바꾸는 필터 드라이버를 제작한다
    키 배치를 바꾸려면 함수가 7개 필요하다
    DriverEntry 함수에서 각종 핸들러를 등록한다
    AddDeviceHandler 함수로 장치 객체를 생성/추가한다
    DefaultHandler 함수로 드라이버 간 통신을 한다
    전원 관리와 PnP에는 전용 함수를 사용한다
    키 배치 교체의 핵심 처리는 ReadHandler 함수에서 구현한다
    ReadComplete 함수로 데이터 읽기 완료를 통지한다
    Build 유틸리티를 이용해 빌드한다
    필터 드라이버 설치는 전용 설치기를 준비한다

찾아보기

예제소스 너무 하시는거 아닙니까~



한글도 다 깨져서 나오고..



이거 빨리 고쳐주세요~



예제를 다운받아서 보려고 해도..



실행하나 않되니.. 이거 어떻게 합니다..



빠른 조치 부탁드립니다.

어떤 학문이든 뜬구름 식의 일반론이 가장 난해하다. 역시 가장 간단한 접근방식은 구체적인 것을 기반으로 배우고 그를 바탕으로 좀더 근원적인 내용을 이해할 수 있다.



이 책은 윈도우즈의 OS로서의 기본적인 구조와 기능을 API를 통해 설명하고 있다. The Linux Kernel과는 달리 API를 중점으로 할 수밖에 없는 것은 source code가 공개되어 있지 않기 때문이다. 하지만 API를 통해 black box test와 같이 실제 기능을 활용하는 간단한 프로그램을 작성하며 이해에 도움을 주도록 구성되어 있다.



아주 깊이 있고 상세하게 설명되어 있지는 않지만, 요즘 OS에서는 거의 기본요소로 생각되는 GUI환경에 대한 것까지 폭넓게 훑어볼 수 있다는 점이 순수 OS만을 다루는 다른 책과의 차별점이다.

내가 처음본 API서적은 국내에서 가장 유명(아닐지도 모르지만)한 김상형씨의 API 정복이었다. 물론 나역시도 만족했고, 현재도 WIN32 API 레퍼런스로 사용하고 있다.



API란 Application Programming Interface라는것, 그리고 기본적인 프로그래밍에 필요한 함수 집합이라는것은 알고 있었지만, 다들 배워야 한다기에, 다들 알아야한다기에 접했을뿐 별다른 감흥은 없었고, 더 알고 싶지도 않았다.



컴퓨터 공학을 공부하다보니 운영체제란 과목이 있었지만, 설명이 부족해선지, 아니면 교재가 좋지 않아선지 별 흥미를 느끼지 못했고, 다른 과목보다 관심도가 낮았다.

프로그래밍을 하는데, 왜 운영체제가 필요한지는 의문이었었고, 윈도우 프로그래밍에 필요한 내용을 어느정도 선(멀티 태스크, 멀티 쓰레드, 이벤트 프로그래밍, 핸들, 인스턴스등 기본 개념)까지는 알고 있었기 때문에, 괜찮다고 생각했다.



하지만 그렇지는 않았다. 신기술의 이해를 위한 바탕에는 그 근본 원리를 아는것이 중요했고, 프로그래밍의 근본 원리에는 그 바탕이 되는 운영체제에 대한 이해, 데이터 구조에 대한 이해, 그 언어에 대한 이해등 많은 지식이 필요하고, 그 중 하나인 운영체제에 대한 이해를 놓친 내가 바보같기도 했지만, 후회만 하고 있을수없기에, 운영체제에 관련된 책을 몇권 구입하게 되었다. (이 책도 그중에 하나였다)



여러권 구입한 책들중 (API 정복의 경우는 미리 사둔 책이라 예외다) 가장 설명이 잘 되어있었다. 책의 두께, 많은 페이지수, 긴 설명 이런게 중요한것이 아니다. 운영체제와 그 구동 원리를 이해하는데에 핵심적인 내용은 모두 담고있고, 어떠한 책이든간에 모든 정보를 담을순 없다. (에세이나, 소설, 수필, 참고서등은 당연히 예외다) 다른 참고 자료 혹은 참고 서적을 봐야하는건 어떠한 경우에나 마찬가지이고, 이 책도 마찬가지로 부족한건 다른 책을 참고해야했지만, 윈도우에 대한 개념을 잡아주는데에(사실 윈도우나 유닉스나 리눅스나 그 근본구동원리나 기능은 비슷하기에 하나만 잘해도 나머지는 어느정도선까지 따라오기 마련이다) 큰 역할을 했다.



프로그래밍을 좀 더 잘하기 위해 운영체제에 대하 알고 싶으신분이나, 윈도우의 원리에 대해 궁금하신분은 주저 말고 선택하시길 바라며

윈도우분야에 입문하기 위한 필독서라 하고싶네요.

제가 추천하는 윈도우프로그래머 과정은

1.C/C++을 먼저 공부하시고

2.한빛미디어에서 출판된 윈도우프로그래밍(김선우,신화선)책으로 MFC를 먼 저 공부하세요

3.그리고 한빛미디어에서 나온 페졸드씨가 쓴 API쪽을 공부하시고

4.마지막으로 이 교재를 공부하세요.

더 큰 효과를 볼 수 있을것입니다.

운영체제를 이해하는 것이 필수다. 이 책은 API의 단순한 나열과 설명이 아닌 운영체제와 어떻게 대화할 수 있는지를 전해준다. 프로그램을 만들다 보면 수많은 문제에 부딪히는데 이책은 이러한 문제점을 운영체제의 내부구조를 이해시켜서 해결한다. 이 책은 Windows 애플리케이션에게 제공하는 Windows API(Application Programming Interface)라고 하는 "창구"를 통해서 Windows의 작동 구조를 이해할 수 있도록 도와준다. C/C++는 물론이고, 비주얼 베이직, Java, .NET 같은 개발 환경을 사용해서 제작한 애플리케이션도 내부에서는 Windows API를 호출해서 동작한다. 이런 개발 환경을 무심하게 넘기지 않고, 개발 환경의 내부에서 어떻게 작동하는지, 즉 운영체제 내부는 어떻게 구성되어 있는지를 알게 되면 프로그래밍 기술을 크게 향상시킬 수 있게 해주는 좋은 책이다.





국내 영* 출판사에서 나온 바이블 이라는 시리즈가 있습니다.

바이블이라는 이름을 달고는 나와 있지만 레퍼런스의 나열 정도로 밖에 보이지 않고

그 막대한 두께는 도저히 무게의 크기의 압박으로 볼때 부터 압박의 느낌이 옵니다.



그렇지만 이책은...

그동안 잘 알지 못하고 있던 Windows 구조와 원리를 잘 설명해주고 있습니다.



국내 서적중에도 충분히 별 5개를 줄만큼의 서적이 있습니다.

찰스 페졸드의 Programming Windows,5th Edition 과

김상형님의 Winodows API 완전 정복...



위 2권과 같이 보신다면, API에 대해서 자신감을 가져도 좋습니다.



이 책을 가지고 있는 분은 행복함을 느낄수 있으리라 충분히 생각됩니다.

일단 내용면에서 상당히 좋습니다.

제가 재직 교육프로그램으로 삼성 SDS에서 시스템&네트웍 프로그래밍 강의를 들었었는데,

거기 강사분이 상당히 실력이 있는 분이 셨는 데, 그 강의의 시스템 쪽 강의가 여기 이책의

내용과 많이 닮아있는 걸 보고 조금 기쁜 느낌으로 교육을 받은 기억이 납니다. 물론 원도우의 좀더 심화내용이다 보니, 비슷한 내용이기는 합니다만, SDS에서 받은 교재보다는 이책의 내용이 좀더 이해하기 쉽고, 설명이 자세하게 되어 있습니다.(아..물론 SDS의 강사님의 강의 내용은 무척 훌륭했습니다. ^^). 단, 스레드 분야는 너무 짧고(책이 얇다 보니) 내용이 부실(?)하므로 다른 원도우 스레드 책을 참조하셔야 하겠더군요.



대체적으로 다양한 분야에서 모르던 점을 알게 해줬던 책이고, 재미있게 읽었습니다.

번역도 깔끔합니다.

음. 괜찬은 책이다.



일본에서 Windows 의 구조에 관한.. 걸.. 연재했던걸



책으로 엮었다고 하던데..



읽기 쉽고.. Windows 의 내부 로직 처리에 대한 설명이



잘 되어 있어.. 좋다.

윈도우 프로그래밍에 관심을 가지면서, 윈도우의 동작원리나 구조에 대해 굉장히 궁금한 것이 많았습니다. 프로그래밍을 하면서도 내부 구조를 몰랐을 때는 프로그래밍을 하면서도 흉내만 내던 것이 고작이었는데, 이 책을 읽으면 읽을수록 윈도우 프로그래밍에 눈을 조금씩 떠가는 것 같습니다. 저와 같은 초보 개발자가 고급 개발자가 되는데 도움을 주는 기본서인 것 같네요.

윈도우 프로그래밍에 관심을 가지면서, 윈도우의 동작원리나 구조에 대해 굉장히 궁금한 것이 많았습니다. 프로그래밍을 하면서도 내부 구조를 몰랐을 때는 프로그래밍을 하면서도 흉내만 내던 것이 고작이었는데, 이 책을 읽으면 읽을수록 윈도우 프로그래밍에 눈을 조금씩 떠가는 것 같습니다. 저와 같은 초보 개발자가 고급 개발자가 되는데 도움을 주는 기본서인 것 같네요.

OS와 시스템프로그래밍 같은데 평소에 많은 관심을 가지고 있는 독자입니다.



이책을 약 3개월전에 구매해서 보았는데, 첨에 구입은 책 제목만 보고 했습니다.



평소 제가 관심있던 분야라서 보았는데, 첨에는 내용이 그런데로 괜찮은 것 같은데



뒤로 갈수록 조금은 많이 부족한게 느껴지더군요. 제가 원했던 부분은 Windows의



구조와 원리같은 OS 적인 면을 많이 원했었는데 그런 부분이 많이 퇴색하였습니다.



특히 처음 얼마간은 윈도우의 구조를 다루지만 뒤로가면 갈수록 윈도우의 구조보다는



API 프로그래밍에 가깝더군요.



저처럼 Window라는 OS의 깊이 있는 면을 원하는 독자라면 이 책을 한번 가볍게 보시고



원서인 "Microsoft Windows Internals"를 보시길 권합니다. 아무래도 약 350페이지의



책 분량으로 많은걸 다루기는 어렵지 않겠습니까? 하지만 일본책을 번역해서 그런지는



몰라도 번역은 다른 번역서에 비해서 훨씬 부드럽고 잘되었다는 느낌이 들더군요.



가볍게 윈도우의 구조에 대해 알기를 원하시는 분이라면 이 책만으로도 충분히



그 가치를 인정받을 수 있다고 생각합니다.

시스템 프로그래밍에 많은 관심을 가지고 있는 초보 개발자입니다.



처음 몇 개의 챕터를 읽을 때 까지만 해도.. "그래 내가 찾던게 바로 이거야"라는 생각이 들면서 재밌게 읽기 시작했습니다.



그런데 조금씩 챕터가 지나면서.. 약간의 API 설명서 같다는 느낌이 조금씩 들기 시작하더군요



약간 아쉬움이 남는 부분이긴 하지만~~

(API 사용법은 MSDN에 찾아보면 얼마든지 나오잖아요~~^^)



그래도 전반적으로 제가 모르는 부분 또는 API들을 많이 배울수 있어서 별 4개 드립니다.

일단 첫 느낌은 다른 이런 류의 책에 비해서 얇다는 것이다.



일반적으로 구조와 원리라고 하면 꽤나 방대한 내용을 다루기 마련인데, 이 책은 필요한 것은 다 다루면서 지겹지 않게 읽을 수 있게 되어 있는 것이 꽤나 좋았다.



그리 두껍지도 않으면서 필수적인 지식을 쉽게 알려준다는 것에서 매우 높은 점수를 줄 수 있다. 그리고 그렇다보니 지하철이나 버스에서 오며가며 한 챕터씩 읽어도 좋을 것이다. (본인도 그랬다.) 다른 책에서는 상상이나 할 수 있는 일인가..



또한 일본인이 쓴 책을 번역한 것이다보니, 문맥이 영어 번역보다는 꽤 매끄럽다. 가끔씩은 오히려 본인이 너무 영어 번역에 익숙한 탓인지 이해가 되지 않는 경우도 있지만, 대부분의 경우 한국어를 읽는 듯이 편했다. (다른 책들을 봐도 일본 책을 번역한 것이 일반적으로 이해가 쉬웠다.)



계속 좋은 얘기만 써 놓은 것 같은데, 굳이 단점을 따지자면, 좀 수박 겉핥기라는 느낌을 주기도 한다. 컴퓨터쪽 전공자라면 혹은 전공자라 아니라고 하더라도 컴퓨터를 공부한다고 하면 이미 어디에선가 한번쯤은 들어서 익숙한 얘기들을 나열한다는 느낌을 준다는 것이다.



하지만 이런 것이 그렇게 단점이 되지 않는 이유는 이 책이 원래 의도라 그랬던 것이 아닐까하는 것이다. 기존에 알았던 것이라면 한번 정리하는 느낌으로 몰랐던 것이라면 이런 것이 있구나하고 알고 더 깊은 내용을 알려고 하는 의지를 심어주는 것. 그것이라고 생각한다. (하긴 책 두께에서 보이듯이 바이블류의 책인 아니니까 말이다..)

단순한 GUI 기반의 윈도우 프로그램을 작성하기는 쉽지만 전산인으로서 실무에 맞는 고급 프로그램을 작성하기 위해서는 운영체제를 이해하는 것이 필수다.

이 책은 초,중급 프로그래머에게 고급 프로그래머가 될 수 있는 길을 열어주는 책이라 감히 말하고 싶다.

이 책은 API의 단순한 나열과 설명이 아닌 운영체제와 어떻게 대화할 수 있는지를 전해준다.

윈도우즈는 소스가 공개된 운영체제가 아닌 이유로 프로그래머들이 애플리케이션 제작에 있어 고급 프로그래밍을 하는것을 어렵게 하고 있다.

하지만 이 책은 윈도우즈 구조를 이해하기 위한 지식을 엑기스(?)로 뽑아서 설명하고 있다.

요즘과 같은 시대에 평균적으로 700~1000 페이지가 넘는 책을 읽어나가는 것은 정말 힘들고 지루한 과정이다. 하지만 이 책은 300페이지가 조금 넘는 내용으로도 충분하게 정말 필요한 지식만을 전해주는 책이라 할 수 있다.

API로 배우는 Windows 구조와 원리.

이 책은 Windows에서 프로그램을 개발할 때 알아 두면 좋을 지식에 대해서 얘기하고 있다. 알면 좋은 지식이라고 한 것은 이러한 지식을 모르고 있더라도 개발하는 데 있어서는 큰 지장이 없기 때문이다. 하지만 이런 작은 차이가 명품을 만드는 초석이 되지 않을까.



이 책은 일본인이 쓴 책을 번역한 것이다. 그래서 그런지 아주 매끄럽게 되어있다. 내용이 번역한 책인지 느낄 수 없을 정도로 잘 되어있다. 원서가 원래 책 구성이 훌륭한 지는 접해보지 않아서 모르겠지만, 한글판의 경우 책 구성과 종이질도 훌륭하다고 할 수 있겠다.



구성을 살펴보자. 이 책은 Windows 애플리케이션의 구조, 메모리 관리, 프레세스, 스레드, DLL 등에 관한 얘기를 24개의 챕터로 나누어서 설명하고 있다. 각각이 분리되어 있기 때문에 잠깐씩 나누어서 읽기에 좋게 구성되어 있다. 물론 그렇다고 한 챕터의 내용이 깊이가 없는 것은 아니다. 평상시 알고 있던 지식에 기초하여 생각해보면 재밌고 유익한 내용을 많이 터득할 수 있을 듯 하다.



내용을 살펴 보자면, 윈도우 애플리케이션 개발자가 평상시 사용하면서도 깊은 이해가 없었을 부분에 대해 얘기를 한다. 메모리나 파일시스템에 관해서도 얘기하는데 기존 OS에 책과 다른 부분이라면 바로 MS Windows에 관해서 구체적인 얘기를 한다는 점이다. 파트 2에서는 실제 윈도우 API와 구조체를 이용하여 예를 들면서 설명을 해준다. 기존에 윈도우에서 개발을 했던 사람이라면 이해하는 데 전혀 문제가 없고 코드 자체도 보통 한페이지 이내이므로 가독성이 좋다. 윈도우가 메시지를 받아오는 구조라든지, 콘솔 프로그램에 관한 얘기들, 파일 시스템 접근, 메모리 관리, 프로세스, 스레드에 관한 얘기들, DLL 작동 원리, 프로세스 간 데이터 공유, 서비스, 디버거, 폰트, 비동기 I/O, 구조화 예외 처리 메커니즘, 장치 드라이버 등에 대해서 전반적이고 기초적인 얘기를 한다.



실제 다루는 내용을 좀 더 자세히 알아보자. 10장의 경우 윈도우즈에서 프로세스와 스레드에 대해서 살펴본다. 그리고 프로세스와 스레드를 생성하고 감시하는 API를 설명하고 실제 예를 든다. 11장의 경우 스레드를 사용할 경우 발생할 수 있는 동기화 문제에 대해서 얘기하고, 이를 해결할 수 있는 뮤텍스, 세마포어, 이벤트, 대기 가능 타이머에 대해서 간략히 다룬다. 물론 각 방법에 대해서 API를 소개하고 간략한 예를 보여준다. 위에서 알 수 있듯이 이 책을 통해 개괄적이고 기본적인 내용을 이해하고, 좀 더 깊은 내용이 필요하다면 그 부분을 전문적으로 다룬 책 등을 읽으면 좋을 듯 하다.



이 책에서 다룬 내용에 대해서 이미 유명한 책이 있다. 바로 Jeffrey Richter씨가 쓴 Programming Applications for Windows (4/E)이다. 지금은 절판되어 살 수 없지만, 위와 같은 내용에 대해서 아주 자세히 나온 듯 하다. (사정상, 아직 읽어보진 못했지만, 좋은 책이어서 알려주고 싶었다.) 이 책은 1000페이지가 넘고 번역본은 엉망이라고 평가받고 있어서 가벼운 마음으로 일단 내용을 알고 싶은 사람은 "API로 배우는 Windows 구조와 원리"를 보면 좋을 듯 하다.



윈도우 프로그래밍을 전혀 해보지 않은 사람에게 어쩌면 이 책은 어려울 수 있을 것이다. 하지만, 윈도우 프로그래밍을 조금이라도 해 본 사람이라면, 그리고 Jeffrey Richter의 책을 읽어보지 않은 사람이라면 한번쯤은 꼭 읽어 볼 만한 책인 것 같다. 사실 여기서 다른 내용이 MSDN 등에 잘 나와 있지만, 문제는 그 방대한 분량 중에서 핵심적인 부분을 찾는 것이다. 그러한 내용을 잘 정리해서 간추려 놓은 것이 이 책이라고 생각하면 좋을 듯 하다.

책의 서문에서도 밝히듯 잡지에 연재되었던 것을 묶은 서적이라



단편적으로 보일수도 있다.



하지만 윈도우 내부구조란 큰 틀을 바탕으로 그려졌기에



크게 문제될 부분은 아닌듯 하다.





처음 접했을때 "파괴의 광학"이란 책과 비교를 하지 않을수가 없었다.



두 책모두 OS내부구조(특히 윈도우와 리눅스라는 2개의 OS를 예를 들어)



에 대한 부분을 다루고 이기에 더욱 그랬다.



나름대로 내린 결론은 파괴의 광학은 응용이란 부분에 중심을 뒀다면



이책은 이해에 더큰 비중을 준거 같다.



그래서 어느 하나를 좋다 나쁘다로 비교하기에는 무리가 있다.





운영체제 개론서, 시스템프로그래밍, Windows or Linux 개발 경험을



갖추고 이 책을 접하면 진가를 발휘할수 있을꺼 같다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
API로 배우는 Windows 구조와 원리
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
API로 배우는 Windows 구조와 원리
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
API로 배우는 Windows 구조와 원리
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0