Chapter 12 프로세스 동기화 문제 - goorm-6th-Als/for_study_Algorithm GitHub Wiki
난알쓰조가 프로세스 동기화에 대해 공부하기로 한 날 수지는 강원도와 제주도와..더보기 여행을 가느라 참석하지 못했다.
현빈이 조장으로서 난알쓰조의 장부를 관리하기로 했는데, 조원들 기념품을 깜빡한 수지가 미안한 마음에 장부 정리를 돕기로 하였다.
다음 장부관리표엔 문제가 있는데, 그 이유를 설명하시오.
정답
장부 정리(프로세스 동기화) 과정에서 상호 배제가 지켜지지 않아서이다.* 상호 배제: 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘
현빈과 수지가 '잔액'이라는 데이터를 동시에 사용하는데, 현빈의 기록이 끝나기도 전에 수지가 잔액을 확인해 버렸기 때문이다.
올바른 장부 정리를 위해서는 한 명이 장부를 정리하고 있을 때 나머지 사람은 기다려야 한다.
acquire 함수는 임계 구역이 잠겨 있는지를 반복적으로 확인한다고 했습니다.
아래 빈칸에 알맞은 답을 말하시오.
정답
whileacquire 함수는 임계 구역 진입 전, 구역이 잠겨 있을 경우 반복적으로 lock을 확인합니다.
봄 맞이 옷 쇼핑을 간 난알쓰조... 수연의 "옷은 입어보고 사야지!" 발언에 탈의실을 이용하기로 한다.
아래 그림 속 에이랜드 탈의실과 무신사 탈의실을 동기화 도구로 비유하면 무엇인지 고르시오.
<보기>
뮤텍스 락, 세마포, 모니터
정답
에이랜드 탈의실: 뮤텍스 락무신사 탈의실: 세마포
* 뮤텍스 락: 하나의 공유 자원(동시에 접근해서는 안 되는 자원)의 동시 접근을 막는 동기화 도구
* 세마포: 뮤텍스 락과 비슷하지만, 공유 자원이 여러 개 있는 상황에서도 적용이 가능한 동기화 도구
빈칸에 들어갈 알맞은 말을 보기에서 고르시오.
<보기>
실행 순서 제어, 상호 배제, 입출력장치
세마포를 이용하면 동시에 실행되는 프로세스 혹은 스레드 간에 [ ]
를 위한 동기화와 [ ]
를 위한 동기화를 할 수 있습니다.
정답
상호 배제, 실행 순서 제어조건 변수 x와 y가 있다고 가정해보겠습니다. 스레드 A는 실행 과정에서 x.wait을 호출하였고 스레드 B는 y.wait을 호출했습니다. 스레드 C가 y.signal을 호출했을 때 스레드 A와 B 중 실행이 재개되는 스레드는 무엇일까요?
정답
스레드 B스레드 B가 조건 변수 y에 대해 대기 상태(wait)에 있으므로 y.signal을 호출하면 스레드 B가 실행됩니다.