본문 바로가기

취약점 분석/windbg

(임계영역) CriticalSection API 함수 정리

반응형

(임계영역) 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