본문 바로가기

공부/c언어

크리티컬 섹션, 뮤텍스, 세마포어 차이점

반응형
1. 크리티컬 섹션

유저 객체입니다. 커널에서 제공되는 객체가 아니라는 말입니다.

커널 객체가 아니므로 가볍고 빠릅니다.

그러나 한 프로세스 내의 쓰레드 사이에서만 동기화가 가능합니다.

보통의 경우 가볍고 쉽게 쓸 수 있는 동기화 객체입니다.


2. 뮤텍스

크리티컬 섹션과 다르게 커널 객체입니다.

그러므로 크리티컬 섹션보다 무겁습니다.

크리티컬 섹션이 한 프로세스 내의 쓰레드 사이에서만 동기화가 가능한 반면,

뮤텍스는 여러 프로세스의 스레드 사이에서 동기화가 가능합니다.

뮤텍스를 가장 흔히 사용하는 예가 프로세스 다중 실행을 막을 때입니다.

이런 기능은 크리티컬 섹션으로는 불가능합니다.


3. 세마포어

세마포어 역시 커널 객체입니다.

위의 크리티컬 섹션, 뮤텍스는 동기화 함에 있어서 동시에 하나의 쓰레드만

실행되게 합니다.

이에 반해, 세마포어는 지정된 수만큼의 쓰레드가 동시에 실행되도록 동기화하는 것이 가능합니다.

지정된 수보다 작거나, 같을 때까지 쓰레드의 실행을 허용하고,

지정된 수를 넘어서 쓰레드가 실행되려 하면 실행을 막습니다.



반응형