때는 이번주 화요일.. 저번주에 본가에 제사가 있어서 갔다온 저는 월요일날 집에 돌아왔습니다. 그런데 화요일부터 목이 칼칼해지기 시작했습니다. 그래서 혹시 몰라 학교 등교를 멈추고 다음날까지는 상황을 지켜 보려고 했죠.. 그런데 정말 다음날 목이 더 아파진겁니다. 오우 쒯.. 설마하는 마음으로 저는 편의점으로 달려가 PCR 검사기를 사왔습니다. 그리고 두근거리는 심장을 뒤로 한채 검사를 시작했죠.. 한방울.. 두방울.. 마지막 세방울이 떨어지고, 칸에 액체가 점점 채워지는 그 순간, 저는 시간이 멈추는 듯 했습니다. 정말로 두줄이 떠버린거죠. 저는 그 사실을 바로 부모님과 누나에게 알렸습니다. 정말 마음이 아팠죠..왜냐하면 그 전에는 한번도 걸린 적이 없었거든요. 친구들이 다 걸릴때도 저는 걸리지 않았습..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 우리가 흔히 말하는 Heap이란, malloc, new 등을 통해서 동적으로 생성할 수 있는 메모리 공간을 뜻합니다. 보통 malloc 등을 통해서 선언된 동적 배열 공간은, 멀티쓰레드 환경에서 쓰레드들 간의 공유하는 상황이 발생하게 됩니다. 그러다보니, 다른 쓰레드가 그 공간을 건들여서 해제를 하거나 하는 상황이 발생할 수 있습니다. 그래서 Windows에서는 쓰레드 별로 사용할 힙을 별도로 할당해줄 수 있습니다. 이것을 Dynamic Heap이라고 합니다. 다이나믹 힙같은 경우에는 해제할 경우 힙에 있는 모든 데이터가 해제되므로 링크드 리스트 같은 자료구조 형에서도 유용합니다. - 디폴트 힙(Default Heap) : 공유하고 있는 기본적인 힙 - 힙..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 1 ) 이름있는 뮤텍스(NamedMutex) 동기화 - 원래 선언된 Mutex는 하나의 프로세스에서 내부 쓰레드들만 사용할 수 있는데, 이름있는 뮤텍스를 사용하면 다른 프로세스들이 그 뮤텍스를 사용할 수 있습니다. 코드를 예시로 확인해 보겠습니다. if 1 -> 이름있는 뮤텍스를 생성하는 코드 else -> 외부 프로세스에서 뮤텍스 접근하여 사용하는 코드 예제 더보기 #include #include #include #include HANDLE hMutex; DWORD dwWaitResult; void ProcessBaseCriticalSection() { dwWaitResult = WaitForSingleObject(hMutex, INFINITE); swi..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 1 ) 뮤텍스(Mutex) 기반 동기화 - 뮤텍스 생성 hMutex = CreateMutex( NULL, // 디폴트 보안관리자. FALSE, // 누구나 소유 할 수 있는 상태로 생성. //(TRUE일 경우, 뮤텍스를 생성하는 쓰레드가기회를 얻음) NULL // numaned mutex ); - Mutex 사용 WaitForSingleObject(hMutex, INFINITE); /********************* 임계영역 *********************/ ReleaseMutex(hMutex); 예제 더보기 #include #include #include #include #define NUM_OF_GATE6 LONG gTotalCount = ..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 1 ) 임계영역(Critical Section) 동기화 - 크리티컬 섹션 오브젝트 변수 선언 CRITICAL_SECTION hCriticalSection; - 오브젝트 초기화 InitializeCriticalSection(&hCriticalSection); - 임계영역 지정 EnterCriticalSection(&hCriticalSection); //임계영역 지정 /************* 임계영역 *************/ LeaveCriticalSection(&hCriticalSection); //임계영역 탈출 - 임계영역 삭제 DeleteCriticalSection(&hCriticalSection); 예제 더보기 #include #include #in..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 커널 레벨(Kernel Level) 쓰레드 : 프로그래머 요청에 따라 쓰레드를 생성 및 스케줄링하는 주체가 커널 인 경우, 이럴 경우에는 쓰레드를 생성해주고, 스케줄링하는 대상이 커널이 된다. 커널 영역 : 유저 영역을 제외한 나머지 영역 유저 영역 : 프로세스의 산하 쓰레드들이 가지고 있는 코드 영역, 데이터 영역, 스택 및 힙 영역을 가리킴. 장점 : 커널에서 직접 제공하기 때문에 안전성과 다양한 기능성이 제공된다. 단점 : 커널에서 제공해 주는 기능이기 때문에 유저 모드에서 커널 모드로의 전환이 빈번하게 일어난다. 따라서 이는 성능의 저하로 이어지게 된다. 유저 레벨(User Level) 쓰레드 : 커널이 쓰레드 모델을 지원하지 않을 경우(혹은 커널이..
책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 파이프에는 두가지 종류가 있는데 이름없는 파이프(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..
- Total
- Today
- Yesterday
- 워셜알고리즘
- 야경
- 컨퍼런스
- 자료구조
- 레지스터
- 링크드 리스트
- 고양이
- 더블버퍼링
- 알고리즘
- 인제대학교
- STL
- 정보보안
- c++
- 보안
- 멀티쓰레드
- 시스템보안
- 학교
- queue
- 스레드풀
- 지뢰찾기
- Select모델
- 드림핵
- 백준
- Dreamhack
- 개발
- BFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |