(임계영역) CriticalSection API 함수 정리
뮤텍스와 비슷한 개념이지만, 임계영역은 '같은' 프로세스 내부의 스레드를 동기화 한다. (속도 더 빠름)
당연히 공유자원 사용에서 발생하는 문제를 유발하지 않으려면 한번에 하나의 스레드만 진입 해야한다.
관련 API 함수를 알아보자.
출처 : https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-tryentercriticalsection
[ 임계 영역 사용 흐름 ]
1) 임계영역 초기화
InitializeCriticalSection
InitializeCriticalSectionAndSpinCount
2) 임계영역 소유권 획득/반환 --- 상호 배타적 접근을 만족하며 프로세스 내의 스레드끼리 자원을 공유.
(소유권 획득)
EnterCriticalSection
TryEnterCriticalSection
(소유권 반환)
LeaveCriticalSection
3) 임계영역 할당 메모리 반환
DeleteCriticalSection
[ EnterCriticalSection, TryEnterCriticalSection 함수의 차이 ]
msdn에서 가져온 자료에서 확인할 수 있듯이,
1) EnterCriticalSection
: 임계영역 진입 소유권을 획득할 때까지 작업을 block
2) TryEnterCriticalSection
: 소유권 획득이 가능하던 아니던 결과를 즉시 반환.
- 이미 현재 스레드에서 소유권을 가지고 있거나, 새롭게 소유권을 획득한 경우 return nonzero
- 다른 스레드에서 소유권을 가지고 있어 당장 획득이 불가한 경우 return zero
'취약점 분석 > windbg' 카테고리의 다른 글
FS 레지스터를 알아보자. (0) | 2019.02.26 |
---|---|
Mutex 뮤텍스 API 함수 정리 (0) | 2019.02.23 |
windbg 포인터 참조하기 (0) | 2018.09.06 |
Trace 명령어 (0) | 2018.09.03 |
Windbg LFH 동작시킨 상태로 디버깅하는 방법 (0) | 2018.07.19 |