이 책은 Microsoft 운영 체제(Windows 9x, Windows XP, Windows 2000 및 윈도우 서버 2003). 파일 시스템 관리, 프로세스 및 스레드 관리, 프로세스 간 통신, 네트워크 프로그래밍 및 동기화를 포함한 기본 시스템 서비스에 중점을 둡니다. Win32 환경에서 작성된 애플리케이션을 Win64 환경으로 이식하는 기술을 고려한다. 시스템의 모든 측면이 자세히 설명되어 있습니다. 윈도우 보안그리고 그녀 실용적인 응용 프로그램. 풍부 실제 사례, 또한 책의 웹 사이트에서 사용할 수 있으며, 자료의 동화를 크게 단순화합니다.

이 책은 높은 자격을 갖춘 초보자와 개발자 모두를 대상으로 하며 관련 전문 분야의 학생들에게도 유용할 것입니다.

소개

이 책은 파일 시스템 관리, 프로세스 및 스레드 관리, 프로세스 간 통신, 네트워크 프로그래밍, 동기화를 포함한 기본 시스템 서비스를 중심으로 Microsoft Windows 운영 체제의 API(응용 프로그래밍 인터페이스)를 사용하여 응용 프로그램을 개발하는 방법을 설명합니다. 사용자 인터페이스, Windows 내부 및 I/O 드라이버는 이 책에서 다루지 않지만 이러한 주제는 그 자체로 똑같이 중요하고 흥미롭습니다. 예를 들어, 현실적인 시나리오가 주로 선택되었으므로 많은 시나리오가 실제 응용 프로그램을 구축하기 위한 기초 역할을 할 수 있습니다.

Win32/Win64 API 또는 일반적으로 Windows API는 현재 Windows XP, Windows 2000 및 Windows Server 2003을 포함하는 Microsoft의 32비트 및 64비트 운영 체제 제품군에서 지원됩니다. 윈도우 시스템 NT, Windows Me, Windows 98 및 Windows 95; 이러한 시스템은 이제 더 이상 사용되지 않는 것으로 간주되지만 이 책에 있는 많은 예제 프로그램은 해당 시스템에서 실행할 수 있습니다. Win32 플랫폼에서 진화하는 Win64 플랫폼으로의 마이그레이션 문제는 필요에 따라 논의됩니다. Windows Server 2003 및 Windows XP의 일부 버전에서 64비트 인터페이스로 지원되는 Win64는 Win32와 거의 동일합니다.

Windows API는 전체 애플리케이션 개발 프로세스에 영향을 미치는 가장 중요한 요소임에는 의심의 여지가 없으며, 많은 경우 UNIX 및 Linux 운영 체제에서 지원하는 POSIX API를 대체하는 것이 더 바람직하다고 간주되거나 최소한 동일한 기능을 제공하기 때문입니다. 응용 프로그램용. , 데스크톱 및 서버 시스템에 중점을 둡니다. 따라서 많은 숙련된 프로그래머들이 가능한 한 빨리 Windows API를 배우는 데 관심이 있으며, 이 책은 이를 홍보하기 위해 작성되었습니다.

먼저 Windows API가 무엇인지 알려주고 어떻게 사용하는지 보여줘야 합니다. 실제 상황, 그리고 이 이야기는 가능한 한 짧고 불필요한 세부 사항으로 과부하가 걸리지 않아야 합니다. 따라서 이 책은 책으로 사용하기 위한 것이 아닙니다. 참조 가이드, 그러나 가장 중요한 기능의 주요 속성에 익숙해지고 상황에서 적용 가능성을 보여줍니다. 실용적인 프로그래밍. 이러한 지식으로 무장한 독자는 Microsoft에서 제공하는 광범위한 도움말 문서를 활용하여 필요나 관심에 따라 특정 주제, 고급 기능 및 잘 알려지지 않은 기능에 대한 심층적인 자체 가이드 탐색을 수행할 수 있습니다. 개인적으로 이 접근 방식을 사용하면 Windows API를 배우는 것이 쉬웠고, 불편한 순간도 있었지만 Windows 프로그램을 개발하는 것은 큰 기쁨이었습니다. 나의 열정적인 충동은 책의 어떤 부분에서 쉽게 볼 수 있는데, 사실 이것은 놀라운 일이 아닙니다. 그러나 이것이 다른 운영 체제 (OS)의 API보다 Windows API의 우수성에 무조건 동의한다는 것을 전혀 나타내지 않지만 긍정적 인 특성이 많다는 사실에 이의를 제기하는 사람은 거의 없습니다.

Windows에 대한 많은 책의 저자는 프로세스가 무엇인지 설명하는 데 상당한 주의를 기울입니다. 가상 메모리, 스케줄러를 선점하는 프로세스 간 통신이지만 이 모든 것이 실제 상황에서 어떻게 사용되는지는 보여주지 않습니다. UNIX, Linux, IBM MVS, Open VMS 및 기타 운영 체제에 대한 경험이 있는 프로그래머는 이미 이러한 개념에 익숙하며 이러한 기능이 Windows에서 가능한 한 빨리 구현되는 방법을 배우는 데에만 관심이 있습니다. 또한 Windows에 대한 대부분의 책은 다음을 기반으로 하는 프로그래밍 방법에 중요한 위치를 제공합니다 사용자 인터페이스. 가장 중요한 부분에만 집중하기 위해 기본 능력시스템에서 제공하는 사용자 인터페이스는 이 책에서 다루지 않으며 간단한 콘솔 문자 I/O에 대해서만 설명합니다.

이 책의 관점에 따르면 Windows는 API일 뿐입니다. 운영 체제, 잘 알려진 도구 모음을 제공합니다. 많은 프로그래머는 경험 수준에 관계없이 Windows에 대한 빠른 학습의 필요성을 느끼고 Windows에 대한 지식이 없으면 Microsoft에서 개발한 COM(구성 요소 개체 모델)과 같은 주제를 논의하는 것은 생각할 수 없습니다. 어떤 면에서 Windows 시스템은 다른 시스템보다 우수하고 다른 면에서는 뒤떨어지거나 거의 같은 수준입니다. 이 책의 목적은 유용한 고품질 고성능 응용 프로그램을 개발하기 위해 실제 상황에서 이러한 기능을 가장 잘 사용하는 방법을 보여 주는 것입니다.

잠재 고객

경험 수준에 관계없이 응용 프로그램 개발 방법을 빠르게 배우고 싶은 사람.

프로그래머 및 개발자 소프트웨어, 특히 UNIX용으로 작성된 기존 응용 프로그램을 Windows 플랫폼. 이 책은 관련 기능 및 프로그래밍 모델의 비교 기능을 보여줍니다. Windows 사용, UNIX 및 C 표준 라이브러리 각각의 공통 기능프로세스 관리, 동기화, 파일 시스템및 프로세스 간 통신은 Windows 측면에서 고려됩니다.

독자는 기존 프로그램 코드를 다른 플랫폼으로 이식해야 하므로 작업에 제한이 없는 새로운 프로젝트를 개발하기 시작합니다. 이 책은 프로그램 설계 및 구현의 여러 측면을 다루고 Windows 기능을 사용하여 유용한 응용 프로그램일반적인 프로그래밍 문제를 해결합니다.

많은 것을 찾을 COM 및 .NET Framework 프로그래머 유용한 정보, 동적 연결 라이브러리(동적 연결 라이브러리, DLL), 스레드 모델 및 사용 방법, 인터페이스 및 동기화의 원리에 대한 연구를 촉진합니다.

컴퓨터 공학 학부생 또는 시스템 프로그래밍 또는 응용 개발과 관련된 학부 논문을 작성하는 학생. 이 책은 다중 스레드 프로그래밍을 공부하거나 네트워크 응용 프로그램을 만들어야 하는 사람들에게도 유용할 것입니다. 로 사용할 수도 있습니다. 유용한 추가 W. Richard Stevens(W. Richard Stevens)의 책과 같은 출처에 UNIX 환경에서의 고급 프로그래밍(참고 문헌 참조) 학생들이 비교할 수 있도록 Windows 기능그리고 유닉스. 이 책은 또한 상업적 관심을 받는 OS의 기본 기능이 어떻게 제공되는지 정확하게 보여주기 때문에 OS 과정을 수강하는 학생들에게 큰 도움이 될 것입니다.

위의 모든 내용에 내포된 유일한 가정은 독자가 C 언어로 프로그래밍한 경험이 있다는 가정입니다.

세 번째 판의 변경 사항

처음 두 판의 중요한 업데이트 및 재구성과 함께 세 번째 판은 상당한 양의 새로운 자료를 추가합니다. 이 간행물은 다음과 같은 과제를 해결하는 것을 목표로 합니다.

Windows XP, Windows 2000 및 Windows Server 2003에 도입된 새로운 기능을 다루고 Win64 플랫폼으로의 전환을 고려하십시오.

Windows 95, Windows 98 및 Windows ME("Windows 9x" 제품군) 관련 자료는 현재 제공되기 때문에 더 이상 사용되지 않는 것으로 간주됩니다. 개인 시스템 Windows XP가 설치되고 Windows 9x 고유의 제한 사항은 이미 관련성을 잃었습니다. 샘플 프로그램에서는 예약 없이 에만 포함된 도구를 사용합니다. 현재 버전결과적으로 일부 프로그램은 Windows 9x에서 작동하지 않습니다.

성능, 확장성 및 안정성 관련 측면을 포함하여 스레딩 및 동기화 주제에 대한 보다 포괄적인 범위를 제공합니다. 9장과 10장의 일부 예는 새로운 것입니다.

Windows 2000 및 Windows Server 2003과 여기에 포함된 새로운 도구가 고성능의 확장 가능한 다중 스레드 서버 응용 프로그램 기능에 미치는 영향이 커지고 있음을 강조합니다.

동기화가 있는 다중 스레드 프로그램과 대칭 다중 프로세서(Symmetrical Multiprocessor, SMP) 시스템 조건에서 이러한 프로그램의 작동 기능에 특별한 주의를 기울이면서 구성 원칙에 대한 프로그램 성능의 의존성을 조사합니다.

단점을 수정하고 프레젠테이션 스타일을 개선하는 것에 대한 독자와 학생의 의견, 중요하거나 가장 중요하지 않은 모든 조언과 제안을 고려하십시오.

이 책의 구성 방법

챕터는 주제별 초점에 따라 배열되어 있으므로 단일 스레드 응용 프로그램을 실행하는 데 필요한 도구를 먼저 살펴보고 프로세스와 스레드를 관리하는 데 사용하는 도구를 살펴보고 그 다음에 다중 스레드 환경에서 네트워크 프로그래밍을 설명합니다. 이 책의 구성은 독자가 프레젠테이션의 논리를 따르기 쉽게 하여 파일 시스템에서 메모리 관리 및 파일 매핑, 프로세스, 스레드 및 동기화, 프로세스 간 및 네트워크 통신 및 응용 프로그램으로 차례로 이동합니다. 보안 문제들. 이 조직은 또한 개발자가 처음에 간단한 프로토타입을 만든 다음 점차적으로 추가 기능. 비동기 I/O 및 보안 문제와 같은 고급 문제에 대한 고려는 책의 맨 끝으로 이동했습니다.

각 장에서는 프로세스 제어 또는 파일 표시와 같은 개별 기능에 대한 간략한 논의 후에 가장 중요한 관련 Windows 기능과 이들 간의 관계에 대해 자세히 설명합니다. 프레젠테이션에는 예시적인 예가 함께 제공됩니다. 프로그램 목록의 가장 중요한 부분만 본문에 포함됩니다. 프로그램의 전체 텍스트와 필요한 포함 파일, 보조 기능 및 기타 코드는 부록 A에 제공되거나 책의 웹 사이트(http://www.awprofessional.com/titles/0321256190)에서 사용할 수 있습니다. . 기능이 현재 버전의 Windows(XP, 2000 및 Server 2003)에서만 지원되고 Windows 9x 및 Windows NT와 같이 향상된 기능이 많이 포함되지 않은 이전 버전에서는 지원되지 않는 경우에는 별도의 고지 사항이 적용됩니다. 각 장은 추가 권장 독서 목록을 제공하고 몇 가지 연습 문제를 제공합니다. 많은 연습 문제는 중요하고 관심이 있지만 본문에서 다루지 않은 문제에 초점을 맞추는 반면, 다른 연습 문제는 독자가 더 복잡하거나 전문화된 주제에 대해 더 깊이 파고들도록 합니다.

1장에서는 Windows 운영 체제 제품군과 Windows API에 대한 높은 수준의 소개를 제공합니다. 예시로 사용 간단한 프로그램스타일의 주요 요소를 보여줍니다. 윈도우 프로그래밍고급 Windows 기능을 구현하기 위한 기반을 제공합니다. Win64 및 플랫폼 간 소프트웨어 마이그레이션 문제는 1장에서 먼저 논의되고, 16장에서 더 자세히 살펴보고, 책의 나머지 부분에서 필요에 따라 논의합니다.

2장과 3장에서는 파일 시스템, 콘솔 I/O, 파일 잠금 및 디렉터리 관리를 다룹니다. 2장에서는 Windows에서 사용하는 확장 문자 집합인 유니코드에 대해서도 설명합니다. 관련 예시는 파일에 포함된 데이터에 대한 순차 및 직접 액세스, 디렉토리 트리 탐색 및 파일 보관을 다룹니다. 3장은 토론으로 끝납니다. 프로그램 제어파일 및 디렉토리 관리와 많은 관련이 있는 레지스트리.

4장에서는 책 전체에서 광범위하게 사용될 SEH(구조적 예외 처리)를 비롯한 Windows 예외 처리에 대해 독자에게 소개합니다. 많은 책에서 SEH에 대한 연구는 마지막 장까지 연기되지만 이미 초기 단계에서 이 도구에 익숙해지면 즉시 사용할 수 있으므로 일부 프로그래밍 작업이 크게 단순화되고 개선됩니다. 우리 프로그램의 품질. 또한 최신 기능 중 하나인 벡터 예외 처리에 대해서도 설명합니다.

5장에서는 Windows의 메모리 관리를 살펴보고 파일 매핑을 사용하여 프로그래밍을 단순화할 뿐만 아니라 프로그램 성능을 향상시키는 방법을 보여줍니다. 이 장에서는 DLL 구성에 대해서도 설명합니다.

6장에서는 프로세스, 프로세스 관리 및 간단한 방법 Windows에서 동기화합니다. 7장의 뒷부분에서 이러한 개념은 흐름 제어를 설명하는 데 사용됩니다. 각 장의 예제는 스레드와 프로세스를 사용하여 얻을 수 있는 프로그램 단순화 및 성능 향상을 비롯한 많은 이점을 보여줍니다.

8, 9, 10장은 가장 강력한 것 중 하나에 대한 심층 분석을 제공합니다. Windows 도구- 스레드 동기화. 동기화는 복잡한 주제이므로 이 장에는 독자가 스레드를 최대한 활용하여 많은 함정을 피하면서 프로그래밍 효율성과 프로그램 성능을 향상시키는 데 도움이 되는 잘 알려진 모델에 대한 수많은 예제와 설명이 포함되어 있습니다. 이 장에는 다음이 포함됩니다. 신소재, SMP 시스템에서 실행되어야 하는 애플리케이션을 포함하여 서버 애플리케이션을 생성할 때 특히 중요한 성능 및 확장성 문제를 다룹니다.

11장과 12장에서는 프로세스 간 및 스레드 간 통신과 네트워크 프로그래밍에 대해 설명합니다. 11장은 Windows의 일부인 익명 파이프, 명명된 파이프 및 사서함. 12장에서는 Windows 외부의 시스템과 통신할 수 있는 기능을 제공하는 Windows 소켓(Windows 소켓)에 대해 설명합니다. 윈도우 제품군, 표준 프로토콜, 주로 TCP/IP를 통해. 그리고 비록 윈도우 인터페이스엄밀히 말하면 소켓은 Windows API의 일부가 아니며 네트워크와 인터넷을 통해 통신하고 상호 작용할 수 있으므로 이 장의 주제는 책의 나머지 부분과 일치합니다. 다중 스레드 클라이언트-서버 시스템의 예를 사용하여 스레드와 함께 프로세스 간 통신이 제공될 수 있는 방법을 설명합니다.

13장에서는 어떻게 방법 Windows 11장과 12장에서 만든 것과 같은 서버 응용 프로그램을 윈도우 서비스(Windows 서비스) 백엔드 서버로 관리할 수 있습니다. 서버를 서비스로 변환하려면 프로그램을 약간만 변경하면 됩니다.

14장에서는 중첩된 I/O와 이벤트 및 완료 루틴을 사용하여 비동기식 I/O 작업을 수행하는 방법을 보여줍니다. 스트림에서도 동일한 결과를 얻을 수 있으므로 비교를 위해 예제가 제공됩니다. 다양한 솔루션각 프로그램의 단순성과 성능 측면에서. 동시에 확장 가능한 다중 스레드 서버를 구축하려면 완료 포트를 사용해야 하며, 이 사용은 이전 장에서 만든 서버의 예에 나와 있습니다. 대기 타이머도 설명되어 있으며 이에 대해 논의하려면 이 장의 앞부분에서 소개한 개념을 사용해야 합니다.

15장에서는 파일에 대한 특정 작업을 수행하기 위해 적절한 권한이 필요한 UNIX 스타일 파일 보호 시스템의 에뮬레이션을 예로 사용하여 Windows 개체 보안에 중점을 둡니다. 추가 예제는 프로세스, 스레드 및 명명된 파이프가 보호되는 방법을 보여줍니다. 그런 다음 이전에 논의된 예에 보안 추가를 추가할 수 있습니다.

16장에서는 Win64용 프로그래밍과 이 플랫폼과의 소프트웨어 호환성 보장에 대한 논의로 주요 자료를 마무리합니다. 그런 다음 앞에서 고려한 예제 중 하나를 프로그램을 Win64 플랫폼으로 이식할 수 있는 형식으로 변환합니다.

이 책의 주요 내용은 세 개의 부록으로 보완됩니다. 부록 A에는 책의 웹 사이트에서 사용할 수 있는 프로그램에 대한 설명과 사용 권장 사항이 포함되어 있습니다. 부록 B에는 Windows 기능을 UNIX 및 C 표준 라이브러리에서 제공하는 동등한 기능과 비교하는 여러 표가 포함되어 있습니다. 부록 C에는 본문에 있는 일부 예제의 대안 구현 성능을 비교하여 독자가 ​​기본 및 고급 Windows 도구, C 라이브러리에서 제공하는 도구의 상대적 장점 및 단점.

UNIX 및 C 라이브러리와의 비교

자료를 제시하는 과정에서 우리는 스타일과 기능적 특징 UNIX(Linux) 및 ANSI C 표준 라이브러리에 포함된 Windows 도구 및 유사 도구 이미 언급한 바와 같이 부록 B의 표는 비교 가능한 기능의 전체 목록을 제공합니다. 많은 독자들이 UNIX에 익숙하고 두 시스템을 서로 비교한 결과가 의심할 여지 없이 흥미로울 것이기 때문에 이 정보를 포함하는 것이 유용할 것이라고 생각했습니다. UNIX 시스템에 익숙하지 않은 사용자는 관련 섹션을 건너뛰어도 됩니다. 관련 섹션은 쉽게 구분할 수 있도록 작게 인쇄되어 들여쓰기되어 있습니다.

예는 Windows 기능의 일반적이고 가장 일반적이며 실제적인 사용의 예를 제공해야 합니다.

소프트웨어 개발, 컨설팅 및 교육 과정에서 직면해야 하는 프로그래밍 분야의 실제 상황과 일치해야 합니다. 내 클라이언트와 청취자 중 일부는 자체 시스템을 구축할 때 예제 코드를 사용했습니다. 상담을 하다 보면 이 책에 포함된 것과 유사한 프로그램 코드를 자주 접하게 되며, 초판이나 두 번째 판에서 직접 가져온 코드를 사용하기도 했습니다. (그런데 책의 예제를 작업에 사용할 수도 있고, 문서에 저에게 감사인사도 포함시켜 주시면 기쁠 것입니다.) 나는 종종 이러한 코드를 COM 또는 C의 별도 부분으로 접했습니다. ++ 개체. 예제는 준비 시간에 대한 제한과 허용 가능한 코드 양을 고려하여 "실제"에 가깝고 "실제" 문제를 해결합니다.

예제는 문서를 읽은 후 항상 예상되는 것은 아니지만 함수의 실제 동작과 상호 작용을 강조해야 합니다. 이 책에서 텍스트와 예제는 모두 기능 자체에 초점을 맞추는 것이 아니라 기능이 서로 상호 작용하는 방식에 중점을 둡니다.

샘플 코드는 간단하고 이해하기 쉬운 방식으로 이전 솔루션에 새로운 기능을 추가하고 대체 구현 기술을 보여주기 위해 점진적으로 빌드하고 확장해야 합니다.

처음 몇 장의 많은 예제는 ls, touch, chmod 및 sort와 같은 UNIX 명령을 구현하여 일부 독자에게 친숙한 컨텍스트에서 Windows 기능을 제공하는 동시에 유용한 도우미 기능 세트를 제공합니다. 또한 동일한 명령을 서로 다르게 구현하면 Windows 향상 기능을 사용할 때의 성능 이점을 더 쉽게 평가할 수 있습니다. 관련 테스트 결과는 부록 B에 나와 있습니다.

책의 서두에 제시된 예제는 일반적으로 프로그램의 짧은 길이에서 다르지만 다음 장에서 내용이 복잡해짐에 따라 필요한 경우 설명 프로그램 코드의 크기가 크게 증가합니다.

각 장의 끝에 제시된 연습에서 독자는 대체 옵션솔루션을 사용하거나, 권장 주제를 직접 탐색하거나, 흥미롭지만 이 책에서 자세히 다룰 수 없는 추가 기능을 탐색할 수 있습니다. 일부 운동은 매우 간단하지만 다른 운동은 어려울 수 있습니다. 오류를 식별하고 제거하면 기술을 연마할 수 있는 훌륭한 기회가 제공되기 때문에 분명히 실패한 솔루션이 제공되는 경우가 많습니다.

모든 예제는 Windows XP, Windows 2000 및 Windows Server 2003 운영 체제에서 디버그 및 테스트되었습니다. – 필요한 경우 Windows 9x 및 Windows NT 운영 체제에서 테스트를 수행했습니다. 그리고 단일 프로세서 시스템을 기반으로 하지만 인텔 프로세서, 대부분의 프로그램은 다중 프로세서 시스템에서도 테스트되었습니다. 응용 프로그램을 테스트할 때 클라이언트-서버 아키텍처서버와 상호 작용하는 여러 클라이언트가 동시에 사용되었습니다. 그러나 프로그램이 정확하거나 완전하고 어떤 목적에도 적합하다고 말할 수는 없습니다. 의심할 여지 없이, 가장 단순한 예제라도 결함이 있을 수 있으며 특정 상황에서는 전혀 작동하지 않을 수 있습니다. 이것이 거의 모든 소프트웨어의 운명입니다. 따라서 저자는 프로그램에서 발견된 결함에 대한 보고서를 보내는 모든 사람에게 진심으로 감사할 것입니다.

이 책의 웹사이트

책의 웹 사이트(http://www.awprofessional.com/titles/0321256190)에는 모든 내용이 포함된 다운로드가 포함되어 있습니다. 프로그래밍 코드책에 있는 모든 예제에 대한 청사진, 일부 연습에 대한 솔루션, 일부 예제의 대체 구현, 지침 및 성능 테스트 결과. 이 정보는 새로운 자료를 포함하고 필요한 수정을 하기 위해 필요에 따라 주기적으로 업데이트됩니다.

내 개인 웹 사이트(http://www.world.std.com/~jmhart/windows.htm)에서 책에서 찾은 정오표 목록과 추가 예제, 독자의 편지 및 추가 설명을 찾을 수 있습니다. , 많은 다른 사람들 사이에서. 비상업적 교육 목적으로 사용할 수 있는 PowerPoint 슬라이드도 포함되어 있습니다. 이 슬라이드는 이미 많은 전문 과정에서 학생들이 사용했지만 대학에서도 사용하기에 적합합니다.

부족한 점과 오류가 확인되고 독자의 피드백이 접수되면 이 자료는 주기적으로 업데이트됩니다. 책에 포함된 프로그램이나 기타 자료에 어려움이 있는 경우 먼저 표시된 사이트를 방문하여 필요한 설명을 찾거나 지금까지 발견된 오류에 대한 정보를 얻을 수 있습니다. 귀하의 질문에 대한 답변을 얻기 위한 이러한 시도가 실패하면 다음 주소로 직접 저에게 연락하십시오. 이메일: [이메일 보호됨]

감사

제3판을 준비하는 동안 많은 분들이 저에게 효과적인 도움을 주시고, 조언을 나누거나, 그저 친절한 말 한마디로 응원해 주셨고, 독자들이 제안한 전선소중한 아이디어와 의견. 저자의 웹 사이트는 이 책의 세 번째 판에 도움이 되는 조언과 논평을 해주신 모든 분들께 따뜻한 감사를 표하며, 처음 두 판에는 앞서 귀중한 조언을 주신 분들께 감사의 인사를 전합니다. 또한, 멋진 상세한 분석이 책의 내용은 Vagif Abilov, Bill Draper, Horst D. Clausen, Michael Davidson, Daniel Jiang, Eric Landes Landes, Klaus H. Probst, Douglas Reilly의 최근 리뷰에서 검토되었습니다. 공식적인 의무만 필요했을 것입니다. 그들의 조언과 권고는 가장 깊은 감사를 표할 가치가 있으며, 내가 그들의 작업 결과를 조금도 주의를 기울이지 않기를 바랄 뿐입니다. Array Inc.의 친구들에게 특별한 감사를 전합니다. 나는 그들에게서 많은 것을 배웠다.

조판을 맡은 Anne H. Smith는 책 출판을 준비하는 데 그녀의 모든 기술과 끈기, 인내를 쏟아 부었습니다. 그녀의 기여가 없었다면 이 책은 출판되지 않았을 것입니다. 처음 두 에디션의 레이아웃을 준비한 Elissa Armor는 현재 에디션의 토대를 마련하여 가능한 한 원활하게 전환할 수 있도록 했습니다.

원고 편집자인 Chrysta Meadowbrooke는 프레젠테이션의 정확성, 명확성 및 일관성을 크게 향상시켰습니다. 책의 내용에 대한 그녀의 세심한 태도, 날카로운 질문 및 통찰력은 여러 문제에 대해 더 깊이 있게 이해하는 데 도움이 되었습니다.

Addison-Wesley Professional의 직원들은 그러한 전문성과 지식을 보여 주어 그들과 함께 일하는 것이 즐거웠습니다. 편집자인 Stephanie Nakib와 편집장인 Karen Gettman은 처음부터 프로젝트를 진행했으며 필요할 때 저를 서두르며 혼란스러운 부분을 정리하고 제가 작업 일정에서 조금도 벗어나지 않도록 했습니다. 부편집장인 Ebony Haight가 전체 프로세스를 감독한 반면 John Fuller의 프로덕션 팀과 프로덕션 코디네이터인 Patrick Cash-Peterson은 프로덕션 프로세스가 아무 어려움 없이 연결될 수 없다고 믿게 되었습니다.

이 책은 우리의 사랑하는 밥과 엘리자베스에게 바칩니다.

존슨(존) M. 하트 (Johnson(John) M. Hart) [이메일 보호됨] 2004년 8월

게시자로부터

이 책의 독자인 당신은 이 책의 주요 비평가이자 평론가입니다. 우리는 당신의 의견을 소중하게 생각하며 우리가 무엇을 옳았는지, 무엇을 더 잘할 수 있었는지, 그리고 우리가 게시했으면 하는 그 밖의 사항을 알고 싶습니다. 우리는 당신이 우리에게 표현하고 싶은 다른 의견을 듣고 싶습니다.

우리는 귀하의 의견을 기다리고 있습니다. 종이나 이메일을 보내거나 웹 서버를 방문하여 의견을 남길 수 있습니다. 한 마디로, 어떤 식으로든 귀하에게 편리한 방법으로 이 책이 마음에 드시는지 여부를 알려주고 저희 책을 더 흥미롭게 만드는 방법에 대한 의견도 표현해 주십시오.

편지나 메시지를 보낼 때 책 제목과 저자, 반송 주소. 고객님의 소중한 의견을 잘 읽고 차기 도서 선정 및 출판 준비에 참고하도록 하겠습니다.

우리의 좌표:

이메일: [이메일 보호됨]

WWW: http://www.williamspublishing.com

편지 정보: Russia: 115419, Moscow, PO Box 783 우크라이나: 03150, Kyiv, PO Box 152


Johnson M. Hart Systems 프로그래밍 윈도우 환경세번째 판

소개

이 책은 파일 시스템 관리, 프로세스 및 스레드 관리, 프로세스 간 통신, 네트워크 프로그래밍, 동기화를 포함한 기본 시스템 서비스를 중심으로 Microsoft Windows 운영 체제의 API(응용 프로그래밍 인터페이스)를 사용하여 응용 프로그램을 개발하는 방법을 설명합니다. 사용자 인터페이스, Windows 내부 및 I/O 드라이버는 이 책에서 다루지 않지만 이러한 주제는 그 자체로 똑같이 중요하고 흥미롭습니다. 예를 들어, 현실적인 시나리오가 주로 선택되었으므로 많은 시나리오가 실제 응용 프로그램을 구축하기 위한 기초 역할을 할 수 있습니다.

Win32/Win64 API 또는 일반적으로 Windows API는 현재 Windows XP, Windows 2000 및 Windows Server 2003을 포함하는 Microsoft의 32비트 및 64비트 운영 체제 제품군에서 지원됩니다. 이 제품군의 초기 구성원에는 Windows NT 운영 체제가 포함됩니다. , Windows Me, Windows 98 및 Windows 95; 이러한 시스템은 이제 더 이상 사용되지 않는 것으로 간주되지만 이 책에 있는 많은 예제 프로그램은 해당 시스템에서 실행할 수 있습니다. Win32 플랫폼에서 진화하는 Win64 플랫폼으로의 마이그레이션 문제는 필요에 따라 논의됩니다. Windows Server 2003 및 Windows XP의 일부 버전에서 64비트 인터페이스로 지원되는 Win64는 Win32와 거의 동일합니다.

Windows API는 전체 애플리케이션 개발 프로세스에 영향을 미치는 가장 중요한 요소임에는 의심의 여지가 없으며, 많은 경우 UNIX 및 Linux 운영 체제에서 지원하는 POSIX API를 대체하는 것이 더 바람직하다고 간주되거나 최소한 동일한 기능을 제공하기 때문입니다. 응용 프로그램용. , 데스크톱 및 서버 시스템에 중점을 둡니다. 따라서 많은 숙련된 프로그래머들이 가능한 한 빨리 Windows API를 배우는 데 관심이 있으며, 이 책은 이를 홍보하기 위해 작성되었습니다.

먼저 Windows API가 무엇인지 알려주고 실제 상황에서 어떻게 사용하는지 보여주어야 하며, 이 이야기는 최대한 간결하고 불필요한 내용으로 과부하가 걸리지 않도록 해야 합니다. 따라서 이 책은 참조 가이드로 사용하기 위한 것이 아니라 가장 중요한 기능의 기본 속성을 소개하고 실제 프로그래밍 상황에서 사용할 수 있는 방법을 보여주기 위한 것입니다. 이러한 지식으로 무장한 독자는 Microsoft에서 제공하는 광범위한 도움말 문서를 활용하여 필요나 관심에 따라 특정 주제, 고급 기능 및 잘 알려지지 않은 기능에 대한 심층적인 자체 가이드 탐색을 수행할 수 있습니다. 개인적으로 이 접근 방식을 사용하면 Windows API를 배우는 것이 쉬웠고, 불편한 순간도 있었지만 Windows 프로그램을 개발하는 것은 큰 기쁨이었습니다. 나의 열정적인 충동은 책의 어떤 부분에서 쉽게 볼 수 있는데, 사실 이것은 놀라운 일이 아닙니다. 그러나 이것이 다른 운영 체제 (OS)의 API보다 Windows API의 우수성에 무조건 동의한다는 것을 전혀 나타내지 않지만 긍정적 인 특성이 많다는 사실에 이의를 제기하는 사람은 거의 없습니다.

Windows에 대한 많은 책의 저자는 프로세스, 가상 메모리, 프로세스 간 통신, 선점형 스케줄러가 무엇인지 설명하는 데 많은 시간을 할애하지만 이 모든 것이 실제 상황에서 어떻게 사용되는지 보여주지 않습니다. UNIX, Linux, IBM MVS, Open VMS 및 기타 운영 체제에 대한 경험이 있는 프로그래머는 이미 이러한 개념에 익숙하며 이러한 기능이 Windows에서 가능한 한 빨리 구현되는 방법을 배우는 데에만 관심이 있습니다. 또한 대부분의 Windows 책은 사용자 인터페이스 프로그래밍 기술에 중점을 둡니다. 시스템에서 제공하는 가장 중요한 기본 기능에만 초점을 맞추기 위해 이 책에서는 사용자 인터페이스를 다루지 않고 간단한 콘솔 문자 I/O로 논의를 제한합니다.

이 책의 관점에 따르면 Windows는 잘 알려진 기능 집합을 제공하는 운영 체제 API일 뿐입니다. 많은 프로그래머는 경험 수준에 관계없이 Windows에 대한 빠른 학습의 필요성을 느끼고 Windows에 대한 지식이 없으면 Microsoft에서 개발한 COM(구성 요소 개체 모델)과 같은 주제를 논의하는 것은 생각할 수 없습니다. 어떤 면에서 Windows 시스템은 다른 시스템보다 우수하고 다른 면에서는 뒤떨어지거나 거의 같은 수준입니다. 이 책의 목적은 유용한 고품질 고성능 응용 프로그램을 개발하기 위해 실제 상황에서 이러한 기능을 가장 잘 사용하는 방법을 보여 주는 것입니다.

존슨 엠. 하트

Windows 환경에서 시스템 프로그래밍

세번째 판

소개

이 책은 파일 시스템 관리, 프로세스 및 스레드 관리, 프로세스 간 통신, 네트워크 프로그래밍, 동기화를 포함한 기본 시스템 서비스를 중심으로 Microsoft Windows 운영 체제의 API(응용 프로그래밍 인터페이스)를 사용하여 응용 프로그램을 개발하는 방법을 설명합니다. 사용자 인터페이스, Windows 내부 및 I/O 드라이버는 이 책에서 다루지 않지만 이러한 주제는 그 자체로 똑같이 중요하고 흥미롭습니다. 예를 들어, 현실적인 시나리오가 주로 선택되었으므로 많은 시나리오가 실제 응용 프로그램을 구축하기 위한 기초 역할을 할 수 있습니다.

Win32/Win64 API 또는 일반적으로 Windows API는 현재 Windows XP, Windows 2000 및 Windows Server 2003을 포함하는 Microsoft의 32비트 및 64비트 운영 체제 제품군에서 지원됩니다. 이 제품군의 초기 구성원에는 Windows NT 운영 체제가 포함됩니다. , Windows Me, Windows 98 및 Windows 95; 이러한 시스템은 이제 더 이상 사용되지 않는 것으로 간주되지만 이 책에 있는 많은 예제 프로그램은 해당 시스템에서 실행할 수 있습니다. Win32 플랫폼에서 진화하는 Win64 플랫폼으로의 마이그레이션 문제는 필요에 따라 논의됩니다. Windows Server 2003 및 Windows XP의 일부 버전에서 64비트 인터페이스로 지원되는 Win64는 Win32와 거의 동일합니다.

Windows API는 전체 애플리케이션 개발 프로세스에 영향을 미치는 가장 중요한 요소임에는 의심의 여지가 없으며, 많은 경우 UNIX 및 Linux 운영 체제에서 지원하는 POSIX API를 대체하는 것이 더 바람직하다고 간주되거나 최소한 동일한 기능을 제공하기 때문입니다. 응용 프로그램용. , 데스크톱 및 서버 시스템에 중점을 둡니다. 따라서 많은 숙련된 프로그래머들이 가능한 한 빨리 Windows API를 배우는 데 관심이 있으며, 이 책은 이를 홍보하기 위해 작성되었습니다.

먼저 Windows API가 무엇인지 알려주고 실제 상황에서 어떻게 사용하는지 보여주어야 하며, 이 이야기는 최대한 간결하고 불필요한 내용으로 과부하가 걸리지 않도록 해야 합니다. 따라서 이 책은 참조 가이드로 사용하기 위한 것이 아니라 가장 중요한 기능의 기본 속성을 소개하고 실제 프로그래밍 상황에서 사용할 수 있는 방법을 보여주기 위한 것입니다. 이러한 지식으로 무장한 독자는 Microsoft에서 제공하는 광범위한 도움말 문서를 활용하여 필요나 관심에 따라 특정 주제, 고급 기능 및 잘 알려지지 않은 기능에 대한 심층적인 자체 가이드 탐색을 수행할 수 있습니다. 개인적으로 이 접근 방식을 사용하면 Windows API를 배우는 것이 쉬웠고, 불편한 순간도 있었지만 Windows 프로그램을 개발하는 것은 큰 기쁨이었습니다. 나의 열정적인 충동은 책의 어떤 부분에서 쉽게 볼 수 있는데, 사실 이것은 놀라운 일이 아닙니다. 그러나 이것이 다른 운영 체제 (OS)의 API보다 Windows API의 우수성에 무조건 동의한다는 것을 전혀 나타내지 않지만 긍정적 인 특성이 많다는 사실에 이의를 제기하는 사람은 거의 없습니다.

Windows에 대한 많은 책의 저자는 프로세스, 가상 메모리, 프로세스 간 통신, 선점형 스케줄러가 무엇인지 설명하는 데 많은 시간을 할애하지만 이 모든 것이 실제 상황에서 어떻게 사용되는지 보여주지 않습니다. UNIX, Linux, IBM MVS, Open VMS 및 기타 운영 체제에 대한 경험이 있는 프로그래머는 이미 이러한 개념에 익숙하며 이러한 기능이 Windows에서 가능한 한 빨리 구현되는 방법을 배우는 데에만 관심이 있습니다. 또한 대부분의 Windows 책은 사용자 인터페이스 프로그래밍 기술에 중점을 둡니다. 시스템에서 제공하는 가장 중요한 기본 기능에만 초점을 맞추기 위해 이 책에서는 사용자 인터페이스를 다루지 않고 간단한 콘솔 문자 I/O로 논의를 제한합니다.

이 책의 관점에 따르면 Windows는 잘 알려진 기능 집합을 제공하는 운영 체제 API일 뿐입니다. 많은 프로그래머는 경험 수준에 관계없이 Windows에 대한 빠른 학습의 필요성을 느끼고 Windows에 대한 지식이 없으면 Microsoft에서 개발한 COM(구성 요소 개체 모델)과 같은 주제를 논의하는 것은 생각할 수 없습니다. 어떤 면에서 Windows 시스템은 다른 시스템보다 우수하고 다른 면에서는 뒤떨어지거나 거의 같은 수준입니다. 이 책의 목적은 유용한 고품질 고성능 응용 프로그램을 개발하기 위해 실제 상황에서 이러한 기능을 가장 잘 사용하는 방법을 보여 주는 것입니다.

잠재 고객

경험 수준에 관계없이 응용 프로그램 개발 방법을 빠르게 배우고 싶은 사람.

UNIX용으로 특별히 작성된 기존 응용 프로그램을 Windows 플랫폼으로 이식하는 작업에 직면한 프로그래머 및 소프트웨어 개발자. 이 책은 Windows, UNIX 및 C 표준 라이브러리 사용과 관련된 기능 및 프로그래밍 모델의 상대적 기능을 보여줍니다. 프로세스 관리, 동기화, 파일 시스템 및 프로세스 간 통신을 포함한 각 일반적인 UNIX 기능은 Windows 용어로 설명됩니다. .

독자는 기존 프로그램 코드를 다른 플랫폼으로 이식해야 하므로 작업에 제한이 없는 새로운 프로젝트를 개발하기 시작합니다. 이 책은 프로그램 설계 및 구현의 여러 측면을 다루고 Windows 기능을 사용하여 유용한 응용 프로그램을 만들고 일반적인 프로그래밍 문제를 해결하는 방법을 보여줍니다.

COM 및 .NET Framework 프로그래머는 여기에서 DLL(동적 연결 라이브러리), 스레딩 모델 및 사용 방법, 인터페이스 및 동기화에 대해 배우는 데 도움이 되는 많은 유용한 정보를 찾을 수 있습니다.

컴퓨터 공학 학부생 또는 시스템 프로그래밍 또는 응용 개발과 관련된 학부 논문을 작성하는 학생. 이 책은 다중 스레드 프로그래밍을 공부하거나 네트워크 응용 프로그램을 만들어야 하는 사람들에게도 유용할 것입니다. W. Richard Stevens와 같은 출처에 대한 유용한 보충 자료로도 사용할 수 있습니다. UNIX 환경에서의 고급 프로그래밍(참고 문헌 참조), 학생들은 Windows와 UNIX의 기능을 비교할 수 있습니다. 이 책은 또한 상업적 관심을 받는 OS의 기본 기능이 어떻게 제공되는지 정확하게 보여주기 때문에 OS 과정을 수강하는 학생들에게 큰 도움이 될 것입니다.

위의 모든 내용에 내포된 유일한 가정은 독자가 C 언어로 프로그래밍한 경험이 있다는 가정입니다.

세 번째 판의 변경 사항

처음 두 판의 중요한 업데이트 및 재구성과 함께 세 번째 판은 상당한 양의 새로운 자료를 추가합니다. 이 간행물은 다음과 같은 과제를 해결하는 것을 목표로 합니다.

Windows XP, Windows 2000 및 Windows Server 2003에 도입된 새로운 기능을 다루고 Win64 플랫폼으로의 전환을 고려하십시오.

Windows 95, Windows 98 및 Windows ME 관련 자료("Windows 9x" 제품군)는 현재 제공되는 개인용 시스템이 Windows XP를 실행하고 있고 Windows 9x의 제한 사항이 더 이상 관련이 없기 때문에 폐기하십시오. 샘플 프로그램은 현재에만 포함된 도구를 예약 없이 사용합니다. Windows 버전, 일부 프로그램은 결과적으로 Windows 9x에서 작동하지 않습니다.

성능, 확장성 및 안정성 관련 측면을 포함하여 스레딩 및 동기화 주제에 대한 보다 포괄적인 범위를 제공합니다. 9장과 10장의 일부 예는 새로운 것입니다.

Windows 2000 및 Windows Server 2003과 여기에 포함된 새로운 도구가 고성능의 확장 가능한 다중 스레드 서버 응용 프로그램 기능에 미치는 영향이 커지고 있음을 강조합니다.

동기화가 있는 다중 스레드 프로그램과 대칭 다중 프로세서(Symmetrical Multiprocessor, SMP) 시스템 조건에서 이러한 프로그램의 작동 기능에 특별한 주의를 기울이면서 구성 원칙에 대한 프로그램 성능의 의존성을 조사합니다.