책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 파이프에는 두가지 종류가 있는데 이름없는 파이프(anonymous_pipe)와 이름있는 파이프(named_pip)가 있습니다. anonymous_pipe 같은 경우에는 프로세스에서 내부 즉, 자식 프로세스나 부모 프로세스와 통신을 할때 사용하는 것으로, 외부 프로세스와는 통신 할 수 없습니다. named_pipe 같은 경우에는 이름이 존재하기 때문에, 이름을 통하여 외부의 프로세스와 통신을 할 수 있다. 통신 방법은 아래와 같습니다. 아래는 서버와 클라이언트 코드입니다. 서버 더보기 #pragma warning(disable:4996) #include #include #include #include #define BUF_SIZE 1024 int CommTo..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 일단 echo와 start를 구현하라는 미션이 주어졌습니다. 그래서 단순 echo와 start만 구현했는데, 책에서는 다른것도 구현이 되어있어서 코드가 상당히 달랐습니다.. 그래도 주어진 미션 부분은 비슷했어서 잘 구현된 거 같습니다. 내가 구현한 코드 더보기 #pragma warning(disable:4996) #include #include #include #define STR_LEN 256 #define CMD_TOKEN_NUM 10 TCHAR ERROR_CMD[] = _T("'%s'은(는) 실행할 수 있는 프로그램이 아닙니다.\n"); int CmdProcessing(int); TCHAR* StrLower(TCHAR*); void ECHO(TCHAR..
프로세스 실행 함수 CreateProcessW( 1) LPCWSTR lpApplicationName, 2) LPWSTR lpCommandLine, 3) LPSECURITY_ATTRIBUTES lpProcessAttributes, 4) LPSECURITY_ATTRIBUTES lpThreadAttributes, 5) BOOL bInheritHandles, 6) DWORD dwCreationFlags, 7) LPVOID lpEnvironment, 8) LPCWSTR lpCurrentDirectory, 9) LPSTARTUPINFOW lpStartupInfo, 10) LPPROCESS_INFORMATION lpProcessInformation ); 1 : 생성할 프로세스의 실행파일 이름을 인자로 전달한다. 경로..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 시스템프로그래밍에서 가장 중요하면서도 기초인, 프로세스에 대해서 한번 얘기해보겠습니다. 일단 프로세스란, 실행되고 있는 프로그램을 의미합니다. 말 그대로 우리가 크롬이나 인터넷, 워드, 게임등의 프로그램을 실행한 상태가 바로 프로세스입니다. 이렇게 실행된 프로그램들은 CPU에 의해서 실행되게 되는데, 여기서 보통 우리는 하나의 프로그램만 실행하지 않기 때문에 멀티 프로세스 환경에서 실행하게 됩니다. 멀티 프로세스란, 하나의 프로세스만 처리하는 것이 아닌, 다른 프로세스의 일도 함께 처리하는 방식을 말합니다. 단, 여기서 주의해야 할 점은 하나의 CPU가 여러개의 프로세스를 함께 처리하는 것이지 한개의 CPU가 동시에 두개의 프로세스를 실행하는 것은 아닙니다..
책) 뇌를 자극하는 윈도우즈 시스템 프로그래밍 SBCS(single Byte Character Set) 문자를 표현하는데 1byte만 사용하는 방식 아스키코드가 대표적인 SBCS 방식이다. MBCS(Multi Byte Character Set) 다양한 바이트수를 사용해서 문자를 사용하는 방식 어떤 문자는 1바이트, 어떤 문자는 2바이트로 표현한다. 단 프로그램을 구현하는데 있어서 세심한 주의가 필요 WBCS(Wide Byte Character Set) 모든 문자를 2byte로 처리하는 방식 유니코드가 해당된다. WBCS 기반의 프로그래밍 [char을 대신하는 wchar_t] typedef unsigned short wchar_t; ["ABC"를 대신하는 L"ABC"] wchar_t str[] = L"AB..
책) TCP/IP 윈도우 소켓 프로그래밍 의 마지막장인 채팅 프로그램을 제작하여 봤습니다. 모델은 Select모델이지만 추후에 IOCP 라던지, Overlapped 모델로도 한번 변화시켜볼려고 합니다. 제작할때 오류도 많았지만.. 굉장이 재밌었네요. IPv6 버전은 아쉽게도 안되서 일단 IPv4만 구현해놨습니다! 클라이언트 같은 경우에는 코드가 굉장히 길고 WINAPI로 만들어져 있어서 길이 긴 점 양해 부탁드리겠습니다. 먼저 작동 형태입니다. 아래의 사진과 같이 여러개의 클라이언트가 접속했을때, 서버는 클라들이 입력하는 값을 접속한 클라에게 모두 전송하여 나타내는 형태입니다. 먼저 서버 코드입니다. Select ㅡ 모델로 구현되어있고, Select모델에 올렸던 코드와 굉장히 흡사합니다. 더보기 코드 서..
Select 모델 - 장점) 윈도우/리눅스 공통으로 사용할 수 있기 때문에 이식성이 높다. - 단점) 성능 최하 (매번 등록 비용), 64개 제한 WSAEventSelect 모델 - 장점) 비교적 뛰어난 성능, MFC 소켓 클래스에서 내부적으로 사용하는 모델이므로, 학습해두면 MFC 소켓 클래스의 내부 동작을 이해하고자 할 때 도움이 된다. - 단점) 64개 제한, 단일 윈도우 프로시저에서 일반 윈도우 메시지와 소켓 메시지를 처리해야 하므로 성능 저하의 요인이 된다. Overlapped (이벤트 기반) - 장점) 성능 - 단점) 64개 제한 Overlapped (콜백 기반) - 장점) 성능 - 단점) 모든 비동기 소켓 함수에서 사용 가능하진 않음 (accept). 빈번한 Alertable Wait으로 인..
입출력 모델중에서 가장 뛰어난 성능을 제공합니다. 핵심은 **입출력 완료 포트(I/O completion port)**라는 윈도우 운영체제가 제공하는 구조를 이해하고 활용하는 것입니다. 이것은 비동기 입출력 결과와 이 결과를 처리할 스레드에 관한 정보를 담고 있는 구조로, Overlapped 모델(콜백)에서 소개한 APC 큐와 비슷한 개념입니다. 실행 함수 CreateIoCompletionPort 처음 CP 생성시 HANDLE 반환 등록할 소켓 생성된 CP HANDLE key값 사용 코어 갯수(0) GetQueuedCompletionStatus WSARecv WSASend CP 결과 처리를 GetQueuedCompletionStatus APC → Completion Port로 변환(쓰레드마다 있지 않고 ..
- Total
- Today
- Yesterday
- 드림핵
- 지뢰찾기
- 백준
- BFS
- queue
- 정보보안
- STL
- 컨퍼런스
- 멀티쓰레드
- 링크드 리스트
- 개발
- 보안
- 시스템보안
- Dreamhack
- 알고리즘
- 레지스터
- c++
- Select모델
- 워셜알고리즘
- 고양이
- 학교
- 자료구조
- 더블버퍼링
- 야경
- 인제대학교
- 스레드풀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |