728x90
정의
- 여러 프로세스나 쓰레드가 공유자원에 접근하는 것을 제어하는 방법
- 병행처리를 위한 동기화 기법
뮤텍스
- 공유된 자원 데이터를 여러쓰레드가 접근하는 것을 막는 것
- 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 하는 상호배제 기법
- Critical Section을 가진 스레드의 Running time이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술
- 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 synchronized 또는 lock을 사용
세마포어
- 공유된 자원 데이터를 여러프로세스가 접근하는 것을 막는 것
- 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스를 나타내는 수를 나타내는 값을 두어 상호배제를 달성하는 기법
차이점
- 뮤텍스는 동기화대상이 하나일 경우, 세마포어는 동기화 대상이 하나이상일 경우 사용
- 세마포어는 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없음
정리
뮤텍스 | 세마포어 |
공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는것 | 공유하는 자원의 데이터를 여러 프로세스가 접근하는 것을 막는것 |
뮤텍스는 lock,unlock 두가지의 값만 가진다 | 세마포어는 1개이상의 스레드가 접근할 수 있다 |
프로세스의 범위(프로세스 존재시만 효력) | 파일시스템 상 파일 형태로 존재 |
소유 가능 | 소유 불가능 |
뮤텍스를 소유하고 있는 쓰레드가 이 뮤텍스를 해제 할 수 있다. | 세마포어를 소유하고 있지 않는 쓰레드도 이 세마포어를 해제 할 수 있다. |
'OS' 카테고리의 다른 글
[OS] Thread Safe (0) | 2021.11.06 |
---|---|
[OS] 데드락 (0) | 2021.11.06 |
[OS] Thread (쓰레드) (0) | 2021.10.03 |
[OS] Process (프로세스) (0) | 2021.07.11 |
[OS] PCB(Process Control Block) (0) | 2021.06.12 |