[OS] Ch7. 연습문제
2. 동기화 하기 위해 오직 reader-writer 락만을 사용하는 다중스레드 응용을 가정하자. 교착상태가 발생하기 위한 4가지 조건을 적용할 때, 다중 reader-writer 락이 사용되는 경우에도 여전히 교착상태가 발생할 수 있는가?
- 발생할 수 있다.
- 상호 배제는 writer가 공유할 수 없기 때문에 지속된다.
- 점유 대기는 스레드가 reader/writer 락을 대기하면서 소지할 수 있으므로 일어난다.
- 락을 뺏을 수 없기 때문에 비선점이 일어난다.
- 스레드들끼리 환형 대기가 일어날 수 있다.
5. 순환 대기 기법과 다양한 교착상태 회피 기법(은행원 알고리즘 같은)을 다음 측면에서 비교하시오.
a. 실행 시간 오버헤드
- 교착상태 회피 기법은 현재 자원들의 상태를 체크 하기 때문에 오버헤드를 발생 시킨다. b. 시스템 처리율
- 교착 상태에 들어가는 상태를 피할 수 있기 때문에 시스템 처리율이 증가한다.
6. 은행원 알고리즘으로 교착상태를 관리하고 있다면 아래 중 어떠한 것이, 그리고 어떠한 조건에서 안전하게 변경될 수 있을까?
a. Available 증가
- 자원의 양은 안전하게 변경될 수 있다.
b. Available 감소
- 데드락을 유발할 수 있다.
c. 한 프로세스의 Max 증가
- 데드락을 유발할 수 있다.
d. 한 프로세스의 Max 감소
- 안전하게 변경 될 수 있다.
e. 프로세스의 수를 증가
- 불안정상태가 될 수 있다.
f. 프로세스의 수를 감소
- 안전하게 변경 될 수 있다.
7. 세 개의 프로세스에 의해 공유되는 동일한 유형의 네 개의 자원으로 구성된 시스템을 고려해 보자. 이들 각 프로세스는 최대 두 개의 자원을 필요로 한다. 시스템에 교착상태가 발생하지 않음을 보이시오.
- 3개의 프로세스가 각각 1개의 자원을 가지고 있다고 가정 해 보자. 각 프로세스는 1개의 자원을 더 필요로 한다. 남은 자원은 1개이므로, 세 개의 프로세스 중 어떤 프로세스에 할당이 되더라도 해당 프로세스는 작업을 끝낼 수 있다. 작업을 끝낸 프로세스가 자원을 반납 하면, 다음 프로세스들도 자원을 가질 수 있기 때문에 교착 상태는 발생하지 않는다.
9. 젓가락이 테이블의 중앙에 있고 철학자에 의해 그 중 2개가 사용될 수 있는 식사하는 철학자 문제를 고려하자. 젓가락에 대한 요청은 한 번에 하나씩 이루어진다고 가정하자. 현재 젓가락이 할당된 상태에서 특정 요청이 교착상태를 유발하지 않고 만족될 수 있는 지를 판단하는 간단한 규칙을 설명하시오.
- 어느 철학자가 첫 번째 젓가락을 요청 할 때, 두 개의 젓가락을 가진 철학자가 없거나, 1개의 젓가락만 남았다면 요청을 수락하지 않는다.
10. 위의 문제와 똑같은 환경을 고려하자. 이제는 각 철학자가 식사하기 위해서는 3개의 젓가락이 필요하고 자원 요청은 역시 한 번에 하나씩 이루어진다고 가정하자. 현재 젓가락이 할당된 상태에서 특정 요청이 교착상태를 유발하지 않고 만족될 수 있는지 판단하는 간단한 규칙들을 설명하시오.
-
- 적어도 한 개의 젓가락이 남아있고, 2개 이상을 가진 철학자가 있다.
-
- 적어도 두 개의 젓가락이 남아있고, 1개를 가진 철학자가 있다.
-
- 아무도 젓가락을 가지지 않고, 2개의 젓가락이 남아있으며, 2개의 젓가락을 가진 철학자가 있다.
14. 교착상태 탐지는 어떤 낙관적인 가정을 하고 있는가? 이 가정은 어떻게 어긋날 수 있는가?
- 프로세스가 작업을 마치기까지 더 이상의 추가적인 자원을 필요로 하지 않는다는 가정을 한다.
- 즉, 프로세스는 종료가 될 시점에 문맥 저장, 파일 입출력 등을 이용하지 않는다는 가정이다.
- 현재 프로세스의 문맥이 다음 프로세스에 필요하거나, 현재 프로세스의 결과물을 저장한다거나 하면 예외가 발생할 수 있다.