세마포어와 뮤텍스는 동기화 기법으로, 여러 프로세스 또는 스레드 간의 자원 공유를 관리하기 위해 사용된다.
뮤텍스 (Mutex): 뮤텍스는 상호배제를 제공하여 여러 스레드 간의 임계 영역(공유 자원에 대한 접근이 일어나는 부분)에 대한 동기화를 달성한다. 뮤텍스는 임계 영역에 들어가기 전에 해당 자원에 대한 락(lock)을 획득하고, 사용이 끝나면 언락(unlock)을 통해 다른 스레드가 해당 자원에 접근할 수 있도록 한다.
뮤텍스의 특징:
- 상호배제: 한 번에 하나의 스레드만이 임계 영역에 접근 가능하다.
- 데드락 방지: 뮤텍스는 데드락을 방지하기 위한 기능을 제공한다.
세마포어 (Semaphore): 세마포어는 정수형 변수로, 상호배제뿐만 아니라 스레드 간의 특정 자원의 개수를 나타내기도 한다. 세마포어는 두 가지 연산, P (wait)와 V (signal),을 통해 동작한다. P 연산은 세마포어 값을 감소시키고, 만약 값이 0보다 작다면 해당 스레드는 대기 상태로 전환된다. V 연산은 세마포어 값을 증가시키고, 대기 중인 스레드가 있다면 하나를 깨워준다.
세마포어의 특징:
- 상호배제: 뮤텍스와 마찬가지로 임계 영역에 대한 접근을 조절한다.
- 동기화: 스레드 간의 특정 자원의 개수를 나타내어 동기화를 달성한다.
세마포어와 뮤텍스의 차이: 뮤텍스는 주로 임계 영역에 대한 상호배제를 위해 사용되고, 세마포어는 자원의 개수를 통한 동기화에 사용된다. 세마포어는 여러 스레드 간의 특정 자원의 개수를 통제하는 데 유용하며, 뮤텍스는 임계 영역의 상호배제에 중점을 둔다.
'운영체제(OS) > keyword' 카테고리의 다른 글
(Project1-Threads) 컨텍스트 스위칭(Context Switching) (0) | 2023.12.15 |
---|---|
(Project1-Threads) 데드락(Deadlock) (0) | 2023.12.15 |
(Project1-Threads) 경쟁 상태(Race Condition) (0) | 2023.12.15 |
(Project1-Threads) CPU Scheduling 알고리즘 (0) | 2023.12.15 |
(Project1-Threads) 프로세스와 스레드(Process, Thread) (0) | 2023.12.15 |