-
뮤텍스와 세마포어CS 지식/운영체제 2020. 10. 21. 19:39반응형
뮤텍스와 세마포어
2020/08/17 - [CS 기초 지식] - 멀티 스레드의 임계 구역과 뮤텍스, 세마포어
- 뮤텍스
- 쓰레드의 동시 접근을 허용하지 않고, Mutex를 이용해서 특정 변수로 접근하는 쓰레드를 차단하면, 나머지 쓰레드는 대기줄에 기다리게하는 기법
- 뮤텍스를 사용한 쓰레드가 뮤텍스를 반환하면, 대기줄에 있는 순서대로 쓰레드가 뮤텍스를 생성해서 잠금 ~> 순환
- 뮤텍스 잠금 후에 해제를 하지 않으면, 잠금 함수는 블로킹 상태에서 빠져나가지 못함
- ~> 데드락 발생(무한대기)
- 뮤텍스 잠금, 해제 함수 호출은 오랜 시간이 걸리기 때문에 최소화 해야함
- 쓰레드가 소유해서 동기화를 관리함
- 세마포어
- 리소스 상태를 나타내는 카운터로 프로세스의 동시 접근을 허용하지 않는다.
- 카운팅 세마포어와 바이너리 세마포어가 있음
- 카운팅 세마포어
- 초기값은 가능한 자원 수로 정해지며, 범위는 정해지지 않음
- 해당 자원에 접근할 때, 자원 수를 줄이면서 대기줄을 관리
- 카페의 한정적인 테이블에 자리가 꽉 찬 경우, 밖에서 대기하는 경우를 생각하면 된다.
- 뮤텍스로 임계구역에 동시에 접근하는 것 방지 + 공유 변수를 사용하는 것을 제어
- 바이너리 세마포어
- 0과 1값만 가지는 세마포어
- 함수 블록킹 해제의 방식(뮤텍스), 드라이브 쓰루를 생각하면 된다.
- 카운팅 세마포어
- 쓰레드가 소유할 수 없음
반응형'CS 지식 > 운영체제' 카테고리의 다른 글
1. 운영체제 개요 (1) 2020.11.07 Deadlock & Starvation (0) 2020.10.21 프로세스와 스레드 (0) 2020.10.21 멀티 스레드의 임계 구역과 뮤텍스, 세마포어 (0) 2020.08.17 프로세스와 스레드 (0) 2020.08.17