Linux에서 상호배제 질문입니다~

athxue의 이미지

지금 구현하려고 하는 프로그램이 여러개의 프로세스가 각각 쓰레드들을 만들고 시스템에 딱 하나만 있는 자원을 공유해서 사용하려고 합니다.
이때 상호배제를 하기 위해서 semop를 통해 상호 배제를 하면 상호배제가 가능할까요?
가령 pthread로 만든 쓰레드를 위해 추가적으로 mutex를 한번 더 잡아주어야 되는건지 궁금합니다.

그리고 한 프로세스가 세마포어를 잡고 있다 죽었을때 잡았던 세마포어가 자동으로 풀리는건가요? 아니면 잡은상태로 유지되어서 다른 프로세스가
세마포어를 잡을때 데드락이 발생할 수 있을까요?