(리눅스) 뮤텍스와 세마포어 차이점

2022. 11. 10. 02:19리눅스

728x90

가장 큰 차이점은 동기화 대상의 개수 이다.

*Mutex는 동기화 대상이 오직 1개일 때 사용하며, Semaphore는 동기화 대상이 1개 이상일 때 사용한다.

*Mutex는 자원을 소유할 수 있고, 책임을 가지는 반면 Semaphore는 자원 소유가 불가하다.

*Mutex는 상태가 0, 1 뿐이므로 Lock을 가질 수 있고, 소유하고 있는 스레드만이 이 Mutex를 해제할 수 있습니다. 반면 Semaphore는 Semaphore를 소유하지 않는 스레드가 Semaphore를 해제할 수 있다. (정신 나간 사람의 유무)
즉, 세마포어는 Signaling 메커니즘으로 락을 걸지 않은 스레드/프로세스도 signal을 사용해 락을 해제할 수 있는 말이다.

*Semaphore는 시스템 범위에 걸쳐 있고, 파일 시스템 상의 파일로 존재한다. 반면, Mutex는 프로세스의 범위를 가지며 프로세스 종료될 때 자동으로 Clean up 된다.

*Semaphore는 Mutex가 될 수 있지만 Mutex는 Semaphore가 될 수 없다.

728x90

'리눅스' 카테고리의 다른 글

어셈블리어 -1  (0) 2022.12.12
(리눅스) Makefile  (0) 2022.11.29
gdb 명령어 모음  (0) 2022.11.28
디버깅  (0) 2022.11.26
(리눅스) nslookup명령어-도메인의 아이피 주소 확인  (1) 2022.11.24