책정리/윈도우 API 정복2 8

51장 서비스

01 서비스가. 서비스서비스(Service)는 윈도우즈에서 실행되는 많은 프로그램들의 종류 중 하나이다. 그러나 다른 프로그램과는 다른 아주 특별한 성질들을 가지고 있으며 사용용도나 개발 방법도 다르다. 서비스를 한마디로 문장화해서 정의 내리자면 "백그라운드에서 실행되는 프로그램"이라고 할 수 있는데 배경에 숨어서 사용자를 위한 어떤 작업을 하는 프로그램이다. 이름 그대로 사용자에게 서비스를 한다. 도스식으로 표현한다면 램상주 프로그램쯤 되며 유닉스식으로 표현하면 데몬(Daemon)이라고 할 수 있다.Win32 환경에서 서비스는 Win32서비스와 드라이버 서비스로 크게 구분된다. 이 중 드라이버 서비스는 하드웨어 인터페이스를 담당하는 일종의 디바이스 드라이버를 의미하는데 이는 일반적인 SDK의 영역이 아..

42장 동기화

01 동기화 가. 멀티 스레드의 문제점 멀티 스레드는 동시에 여러 가지 작업을 매끄럽게 수행할 수 있는 아주 멋진 메커니즘이다. 운영체제의 지원도 무척 안정적이며 우선 순위 관리가 아주 지능적이어서 여타의 방법보다 훨씬 더 매끄럽게 동시 작업을 할 수 있다. 게다가 고성능 CPU 덕분에 웬만큼 스레드를 생성해도 성능상 문제가 거의 없다. 그러나 멀티 스레드만큼 잘못 사용하면 위험한 것도 드물다. 동시에 복수 개의 코드가 같은 주소공간에서 실행됨으로써 서로 간섭하고 영향을 주는 경우가 빈번하여 주소 공간 분리의 이점이 없다. 또한 스레드간의 실행 순서를 전혀 예측할 수 없다는 점도 문제가 된다. 물론 운영체제는 이런 문제를 해결할 수 있는 방법을 제공하기느 ㄴ하지만 아주 사소한 부분에서도 민감한 문제가 발..

41장 멀티 스레드

01 스레드 가. 고전적인 다중 작업 보통 CPU가 하나뿐인 컴퓨터는 한 번에 하나의 일만 할 수 있다. 동시에 작업 수행이 되는 것처럼 보이게 하기 위하여 어떤 방법들이 사용되었는지 알아보고 장단점을 논해본다. 긴 작업은 시간을 잘게 잘라서 매 시간마다 조금씩 나누어서 해야한다. 즉 WM_TIMER 메시지를 사용할 수 있다. LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static BYTE blue; HBRUSH hBrush, hOldBrush; switch (iMessage) { case WM_CREATE: SetTimer(hWnd, 1, 20, NULL..

39장 메모리

01 Win32 메모리 구조 가. 16비트 환경의 메모리 구조 응용 프로그램들은 예외없이 메모리 상에서 실행되며 또한 응용 프로그램이 다루는 데이터도 메모리에 존재한다. 메모리 관리는 운영체제의 고유 권한이자 가장 중요한 임무중 하나이다. 그래서 운영체제가 메모리를 관리하는 방법에 대한 기초적인 이해는 아주 중요하다. Win32의 메모리 체계는 무척 복잡한 편이지만 그래도 Win16에 비해서는 훨씬 더 깔끔해졌다. 32비트의 메모리 체계를 공부하기 전에 이전의 환경인 Win16의 메모리는 어떤 문제점이 있었는지부터 정리해보자. 용량상의 문제 메모리가 부족하게 된 근본적인 원인은 여러 개의 프로그램을 동시에 실행하는 멀티 태스킹 환경의 도래이며 또한 멀티 미디어는 이런 상황을 가속화했다. 구조적인 문제 8..

40장 프로세스

01 프로세스 가. 프로세스와 스레드 프로세스(Process) 실행 중인 프로그램, 실행파일이 실행되어 메모리에 적재된 상태 실행중인 프로그램의 한 인스턴스 운영체제는 실행된 프로그램을 프로세스 단위로 관리함 프로세스는 각각 4GB의 주소 공간과 파일, 메모리, 스레드 등의 객체들을 소유하며 프로세스가 종료될 때 프로세스가 소유한 모든 자원은 운영체제에 의해 파괴됨 모든 것은 프로세스에 의해 소유되며 스레드는 윈도우와 메시지 큐, 스택만 소유함 객체간의 소유 관계는 프로세스 > 스레드 > 윈도우 로 정리 할 수 있다 프로세스는 실행중인 프로그램이지만 실제로 작업하는 주체는 스레드(Thread)가 담당함 프로세스는 메모리상에 존재하기만 할 뿐이며 실행과 동시에 스레드를 하나 만들고 스레드를 호출함으로써 스..

39장 메모리

01 Win32 메모리 구조 가. 16비트 환경의 메모리 구조 응용 프로그램들은 예외없이 메모리 상에서 실행되며 또한 응용 프로그램이 다루는 데이터도 메모리에 존재한다. 메모리 관리는 운영체제의 고유 권한이자 가장 중요한 임무중 하나이다. 그래서 운영체제가 메모리를 관리하는 방법에 대한 기초적인 이해는 아주 중요하다. Win32의 메모리 체계는 무척 복잡한 편이지만 그래도 Win16에 비해서는 훨씬 더 깔끔해졌다. 32비트의 메모리 체계를 공부하기 전에 이전의 환경인 Win16의 메모리는 어떤 문제점이 있었는지부터 정리해보자. 용량상의 문제 메모리가 부족하게 된 근본적인 원인은 여러 개의 프로그램을 동시에 실행하는 멀티 태스킹 환경의 도래이며 또한 멀티 미디어는 이런 상황을 가속화했다. 구조적인 문제 8..

34장 시스템 정보

01 시스템 정보 가. 시스템 정보 조사 프로그램은 자신이 실행되는 환경을 조사한 후 환경에 맞게 실행되야 함. 응용 프로그램이 제대로 실행되기 위해서, 그리고 다른 프로그램이나 운영체제와 매끄러운 조화를 이루기 위해서는 여러 가지 다양한 시스템 저보들이 필요하다. 이 장에서는 시스템 정보를 조사하여 정보에 따라 적절히 동작하는 호환성 높은 프로그램을 작성하는 방법에 대해 다룬다. 시스템의 정보를 조사하는 함수들 중 가장 기본이 되는 함수는 다음 함수이다. VOID GetSystemInfo(LPSYSTEM_INFO lpSystemInfo); 이 함수는 시스템의 구성 정보를 조사하여 인수로 전달된 구조체에 채워 리턴함. typedef struct _SYSTEM_INFO { union { DWORD dwOe..

목차

29장 비트맵 01 DDB 가. 비트맵의 종류 나. DDB의 구조 다. DDB의 생성 02 비트맵 출력 가. BitBit 나. 확대 및 축소 다. 투명 비트맵 출력 03 DIB 가. DIB의 구조 나. DIB 출력 다. DDB로 변환 라. DIB 섹션 마. DIIB로 변환 04 비트맵의 활용 가. 가상 화면 나. 돋보기 다. 화면 캡처 라. 그래픽 라이브러리 30장 더블버퍼링 01 화면 깜박임 가. 깜박임의 원인 나. 더블 버퍼링 다. 스크롤 처리 02 게임 제작 가. 자연스러운 움직임 나. 팡팡 게임 다. 벽돌 깨기 31장 메타 파일 01 메타 파일 가. 메타 파일 나. 32비트 메타 파일 다. 16비트 메타 파일 02 메타 파일의 구조 가. 16비트 메타 파일 분석 나. 32비트 메타 파일 분석 다...