윈도 비동기 이벤트 기반 네트워크 프로그래밍

윈도 비동기 이벤트 기반 네트워크 프로그래밍입출력 다중화 기술은 유닉스 운영체제(윈도는 BSDint select( __in int nfds, __inout fd_set readfds, __inout fd_set writefds, __inout fd_set exceptfds, __in const struct timeval timeout);몇 가지 다른 점은...

Overlapped I/O 모델

Overlapped I/O 모델소켓은 기본적으로 봉쇄/동기로 만들어진다. 이 모델은 데이터 입출력 부분에서 봉쇄(blocked)된다는 문제점을 가진다.이 모델로는 하나의 쓰레드에서 두 개 이상의 소켓을 다루기가 힘들다. 이 모델을 바꾸지 않고 두개 이상의 소켓을 처리하려면 "멀티 쓰레드" 기술을 함께 사용하는 수 밖에 없다. 윈도 운영체제(이 문제는 입출...

윈속 프로그래밍 기본

윈속 프로그래밍 기본윈속(winsock)은 windows Socket API의 줄임말로, 윈도 운영체제(BSD Socket API의 거의 전부를 그대로 사용할 수 있지만 다음과 같은 몇 가지 차이점이 있다. dll 로드 소켓 지정 번호 BSD 소켓과 동일 해서 문서를 참고하면 된다. 윈속 레퍼런스 문서는 아니지만 문제 없을 것이다. 윈속함수 대부분이 B...

windows 시스템 프로그래밍

windows 시스템 프로그래밍그래 이왕 하게 된게 윈도우즈 시스템 프로그래밍도 해보자. 뭐 별다를 거 있겠어 ?? 라고 위안을 삼아본다. 대략 다음과 같은 내용들을 다루면 되지 않을까 싶다.일단 기본으로 해야 할 것들. 1. 파일 다루기 1. 프로세스 1. 쓰레드 1. 메모리 관리 1. IPC 프로세스간이든 쓰레드간이든지 간에 내부통신 메커니즘이 ...

윈도 시스템 프로그래밍 개념들 정리

윈도 시스템 프로그래밍 개념들 정리 윈도 환경에서 개발이 처음이다 보니 생소한 용어와 개념들이 여기저기에서 등장한다. 좀 정리 해야 겠다. 리눅스(커널 객체란 운영체제가 자원을 관리하기 위해서 사용하는 데이터 블럭이다. 여기에서 자원은 세마포어(커널 객체를 만드는 함수는 모두 Create라는 접두사를 가지는 명명 규칙을 따른다. || CreateMutex...

윈도 파일 프로그래밍

윈도 파일 프로그래밍뭐니 뭐니 해도 시스템 프로그래밍의 핵심은 파일. 리눅스 프로그래밍에 익숙한 관계로 리눅스(윈도에서 파일은 커널 Object로 관리된다. 파일을 포함한 모든 커널 Object는 Create로 시작하는 함수로 handle을 얻을 수 있다. 핸들은 커널 Object를 가리킨다. 파일외에 관리하는 커널 객체로는 아래와 같은 것들이 있다. 1...

윈도 IPC 프로그래밍

윈도 IPC 프로그래밍Inter Process Communication의 줄임말로, 내부 프로세스간 통신을 말한다. 내부 프로세스 혹은 thread간 통신을 위해서는 IPC 설비들이 필요하다. IPC(...

이벤트 객체

이벤트 객체윈도 네트워크 프로그래밍을 하다 보니 이벤트를 다루어야 하는 경우가 생겼다. 그래서 이벤트 객체에 대해서 공부해볼려고 위키페이지를 만들었다.유닉스와 리눅스는 시그널을 이용해서 상태 정보를 전달하고 사건을 동기화 시킬 수 있다. 윈도는 시그널 시스템을 제공하지 않는다. 대신 이벤트 객체를 이용해서 동기화를 달성한다.이벤트 객체는 독립적인 객체로써...

윈도 익명 파이프

윈도 익명 파이프와 동일한 특성을 가지며, 사용방법 역시 유사하다. 즉 부모 프로세스와 자식 프로세스간의 통신 읽기전용과 쓰기전용의 두개의 파이프로 전 이중 통신의 구현 다른 프로세스는 참조할 수 없음.(참조할 이름이 없기 때문에)리눅스에 pipe(2)가 있다면 윈도는 CreatePipe(BOOL WINAPI CreatePipe( __out PHAN...

윈도 시스템 프로그래밍 : named pipe

윈도 시스템 프로그래밍 윈도 역시 named 1. 이름을 가진다. 1. 이름을 가지므로 어디에서든 (이름으로)접근할 수 있다. 1. 원격의 프로세스와 통신이 가능하다는 점이 리눅스와 다른 특징이다. 이를 위해서 "Universal Name Convention"형식으로 파이프 이름을 생성한다. (형식 1. 리눅스는 네임드 파이프와 파일 기술자가 1 1....