728x90
이름 있는 뮤텍스 기반의 프로세스 동기화
- 동기화 하고 싶은 쓰레드가 다른 프로세스에 있을 때 사용
- 프로세스 A에서 생성한 뮤텍스는 프로세스 A의 쓰레드는 접근이 가능하지만 프로세스 B의 쓰레드는 접근이 불가능
- 뮤텍스 핸들 값은 프로세스 A에서만 고유한 값이기 때문에 핸들 값을 넘겨준다 해도 의미가 없음
- 동기화를 위해서는 프로세스 A 핸들 테이블에 저장된 뮤텍스의 정보를 등록해야 함
- 프로세스 내의 쓰레드 간의 동기화를 위해서는 핸들을 이용했지만 다른 프로세스에는 뮤텍스의 핸들 정보가 등록이 되어 있지 않기 때문에 뮤텍스에 설정된 이름을 통해 접근
뮤텍스 소유와 WAIT_ABANDONED
- 소유의 관점에서 세마포어와 뮤텍스의 차이점
-> 뮤텍스 : 열쇠를 얻은 쓰레드가 반환을 해야함
-> 세마포어 : 열쇠를 여러개 가지고 공유를 하기 때문에 얻은 쓰레드가 꼭 반환하지 않아도 됨
- WAIT_ABANDONED
-> A 쓰레드가 열쇠를 얻고 임계영역에 들어가 있고 B 쓰레드가 WaitForSingleObject 호출 후 대기하고 있을 때 열쇠를 가지고 있는 쓰레드가 열쇠를 반환하지 않고 사라지는 경우 B 쓰레드가 반환값으로 WAIT_ABANDONED 값을 얻게 됨
-> A 쓰레드의 비정상적 종료로 인해 뮤텍스 반환이 적절치 이루어지지 않았기 때문에 열쇠를 OS 가 B 쓰레드에 열쇠를 넘겨준다는 의미
728x90
'Programming > System Programming' 카테고리의 다른 글
윈도우즈 시스템 프로그래밍 - 14. 쓰레드 동기화 기법2(2) (0) | 2020.08.09 |
---|---|
윈도우즈 시스템 프로그래밍 - 14. 쓰레드 동기화 기법2(1) (0) | 2020.08.09 |
윈도우즈 시스템 프로그래밍 - 13. 쓰레드 동기화 기법1(3) (0) | 2020.08.04 |
윈도우즈 시스템 프로그래밍 - 13. 쓰레드 동기화 기법1(2) (0) | 2020.08.03 |
윈도우즈 시스템 프로그래밍 - 13. 쓰레드 동기화 기법1(1) (0) | 2020.08.03 |