Over the limit
[운영체제] 뮤텍스(Mutex) vs 세마포어(Semaphore) 본문
프로세스 간 메시지를 전송하거나, 공유 메모리로 공유된 자원에 여러개의 프로세스가 동시에 접근하면 Critical Section 문제가 발생한다.
해결책으론, 데이터가 한 번에 하나의 프로세스만 접근하도록 하는 동기화 방식이 존재하고, 대표적으로 뮤텍스와 세마포어가 있다. 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는다.
뮤텍스(Mutex)
- Key를 소유한 스레드/프로세스 만이 공유 자원에 접근할 수 있는 상호 배제 기법
- Lock으로 잠궈버림, 방문 잠구듯이.. 열쇠 없이는 못 들어감
- 공유가 불가능함, 단 하나의 스레드/프로세스만 접근 가능
세마포어(Semaphore)
- 현재 공유자원에 접근할 수 있는 스레드/프로세스 수의 값을 따로 두어 상호 배제를 달성하는 기법
ex)어떤 공유 자원의 세마포어가 3이면, 해당 자원은 동시에 최대 3개의 프로세스가 접근 가능함
뮤텍스와 세마포어의 차이점
1. 동기화 대상의 갯수. Mutex는 동기화 대상이 1개일 때, Semaphore는 1 이상일 때
2. Mutex는 lock을 통해 자원을 소유할 수 있지만, Semaphore는 자원 소유 불가
3. Mutex는 소유하고 있는 스레드만이 해제할 수 있는 반면, Semaphore는 소유하지 않는 스레드가 해제하는 것이 가능함
4. Semaphore는 시스템 범위에 걸쳐있으며 파일로 존재. Mutex는 프로세스 범위
'Operation System' 카테고리의 다른 글
[OS] 운영체제와 커널 (0) | 2024.09.27 |
---|---|
[운영체제] MLFQ와 SJF (0) | 2021.10.01 |
[운영체제] System call, IDT는 무엇인가 (0) | 2021.09.22 |
[운영체제] Concurrency Problem이란? (0) | 2021.09.14 |