승환이네
로그인
승환이네
로그인
[ CS / OS ] Mutex & Semaphore
황승환
·
2022년 7월 12일
팔로우
0
CS
OS
Operation System
computer science
0
Python
목록 보기
365/498
Mutex
공유자원에 여러 개의 스레드가 접근하는 것을 막는 것
임계영역을 가진 스레드의 실행 시간을 서로 겹치지 않도록 하여 각각 단독으로 실행하도록 하는 기법
다중 프로세서들의 공유 리소스에 대한 접근을 조율하기 위해 synchronized 혹은 lock을 사용하기 때문에, Mutex 객체에 2개 이상의 스레드가 동시에 사용할 수 없음
Semaphore
공유자원에 여러 개의 프로세스가 접근하는 것을 막는 것
리소스의 상태를 나타내는 간단한 카운터라고 생각할 수 있음
OS나 커널의 지정된 저장장치 내의 값임
일반적으로 긴 시간을 확보하는 리소스에 대해 이용
유닉스 시스템 프로그래밍에서 semaphore은 운영체제의 리소스를 경쟁적으로 사용하는 다중 프로세스의 제어나 동기화를 담당하는 기술
공유 리소스에 접근할 수 있는 프로세스의 최대 허용치만큼 동시에 프로세스가 접근 가능
각 프로세스는 semaphore 값을 확인하고 변경할 수 있음
자원을 사용하는 프로세스는 semaphore값을 변경하여 다른 프로세스가 기다리도록 함
자원에 접근할 때, 다른 프로세스가 사용중이라는 사실을 알게 되면 재시도 하기 전에 일정 시간을 기다림
이진수를 사용하거나 추가적인 값을 사용
Mutex vs Semaphore
동기화 대상의 개수
Mutex는 1개의 대상에 대해서만 동기화를 수행하지만, Semaphore는 하나 이상의 대상에 대해 수행할 수 있음
Mutex is Semaphore, but Semaphore isn't Mutex
Mutex는 0과 1을 사용하는 binary semaphore라고 할 수 있음.
Semaphore는 하나 이상의 대상에 대한 동기화가 가능하기 때문에 Mutex라고 할 수 없음.
소유권
Semaphore는 소유권을 가질 수 없음.
Mutex는 소유권을 가질 수 있고, 소유주는 이에 대한 책임을 가짐 (Lock을 소유할 수 있음).
해제 권한
Mutex는 Mutex를 소유하고 있는 스레드만이 해제 가능
Semaphore는 Semaphore를 소유하지 않아도 해제 가능
범위
Semaphore은 시스템 범위에 걸쳐있기 때문에 파일 시스템 상에 파일 형태로 존재
Mutex는 프로세스 범위를 가지기 때문에 프로세스가 종료되면 자동으로 Clean up 됨
정리
Mutex는 스레드의 동시 접근 제한, Semaphore는 프로세스의 동시 접근 제한
Mutex는 binary semaphore라고 볼 수 있지만, Semaphore는 Mutex가 아님
Mutex는 동기화 대상이 하나, Semaphore는 동기화 대상이 하나 이상
Mutex는 소유권을 가져야만 해제 가능, Semaphore는 소유권을 가지지 않아도 해제 가능
Mutex는 프로세스 범위를 가지기 때문에 프로세스 종료 시 Clean up, Semaphore는 시스템 범위를 가지기 때문에 파일 시스템 상에 파일 형태로 존재
황승환
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기
팔로우
이전 포스트
[ BOJ / Python ] 13975번 파일 합치기 3
다음 포스트
[ BOJ / Python ] 9576번 책 나눠주기
0개의 댓글
댓글 작성