API 프로세스와 스레드 1. 프로세스 실행중인 프로그램을 말한다. 메모리에 적재되면 프로세스가 된다. OS는 실행된 프로그램을 프로세스 단위로 관리한다. 프로세스가 종료될때 프로세스가 소유한 모든 자원은 OS에 의해 파괴된다. 프로세스 각각 4GB의 주소공간, 파일, 메모리, 스레등 등의 객체를 소유 스레드 윈도우, 메시지큐, 스택만 소유 윈도우 - 프로세스는 실행중인 프로그램이지만 실제로 작업은 프로세스 내의 스레드가 담당한다. 프로세스는 단지 메모리상에 존재하기만 할 뿐이며 실행과 동시에 스레드(Primay Thread)를 하나 만들고 스레드를 호출함으로써 스레드에게 모든 작업을 맡긴다. 결국, 프로세스는 스레드를 담는 껍데기이며 실제 일하는 것은 스레드이다. CreateProcess()는 그러지 ..
메일슬롯 (우편함) 우편함에 편지를 넣어두면 우편함 주인이 편지를 받을 수 있는 것처럼 두 프로세스가 메일슬롯을 통해 메시지를 주고받을 수 있다. 우편함은 본질적으로 수신을 위한 장치이므로 메시지를 받는 쪽이 서버가 되고 메시지를 보내는 쪽이 클라이언트가 된다. 서버는 메일슬롯을 만들고 메일슬롯을 통해 메시지를 받는 프로세스이다. CraeteMailSlot()로 메일슬롯을 만들면 메일슬롯 핸들을 리턴 받는데 이 핸들을 사용하여 메시지를 받을 수 있다. 클라이언트는 메일슬롯에 메시지를 쓰는 프로세스이다. 메시지를 한번에 여러개를 보낼 수 있으며 이진 스트림이므로 어떠한 형태의 메시지든 주고받을 수 있다. 단 메시지의 크기는 64K까지만 가능하다. 메일슬롯 이름은 두 프로세스가 서로 인지할 수 있어야 하므로..
API 아톰 ATOM 아톰 테이블 시스템이 유지하는 문자열 테이블 응용프로그램이 아톰 테이블에 문자열을 보관해 놓으면 저장된 문자열을 대표하는 16비트 정수값을 돌려주는데 이 핸들을 아톰이라고 한다. (32비트 환경에서 모든 핸들이 32비트로 업그레이드 되었지만 아톰만은 아직 16비트이다.) 아톰 테이블이 등록되면 응용 프로그램은 언제든지 아톰으로부터 문자열을 얻을 수 있다. 핸들은 단순한 정수값이며 메시지를 통해 응용 프로그램끼리 교환할 수 있으므로 아톰은 기초적인 IPC의 수단으로 사용 가능하다. 응용 프로그램이 아톰을 직접 사용하는 경우는 드물며 주로 DDE에서 아이템, 토픽 이름 문자열 교환을 위해 내부적으로 사용된다. 또한 윈도우 클래스나 클립보드 포맷도 내부적으로 아톰 테이블에 저장된다. 종류..
API IPC - WM_COPYDATA Win32 환경은 프로세스간 메모리 공간이 격리되어 사용자 정의 메시지 전달로는 안되고 WM_COPYDATA 메시지를 이용한다. wParam 정보를 보내는 윈도우의 핸들 지정 lParam COPYDATA 구조체의 포인터 지정 1 2 3 4 5 typedef struct tagCOPYDATASTRUCT { ULONG_PTR dwData; DWORD cbData; _Field_size_bytes_(cbData) PVOID lpData; } COPYDATASTRUCT, *PCOPYDATASTRUCT; cs dwData : 교환하고자 하는 정수값, WM_COPYDATA 메시지가 다른 여러곳에서 오는 경우 구분자로 이용 가능할듯 lpData : 교환하고자 하는 문자열(또는 ..