[운영체제]2006년 응용 운영체제 개념 연습문제 8장
*성*
다운로드
장바구니
소개글
2006년 1학기에 작성한 레포트입니다. 정성껏 작성하였고 Java문제는 제외하였습니다.목차
8.1 컴퓨터 시스템 환경과 관련되지 않은 교착 상태의 예를 세 개만 열거하시오.8.2 단지 한 개의 프로세스만 포함하는 교착 상태도 존재 가능한가? 당신의 답을 설명하시오.
8.3 [그림 8.11]에 보인 교통의 교착 상태를 생각해 보자.
8.4 시스템이 불안전 상태에 있다고 가정하자. 프로세스들이 교착 상태로 되지 않고 실행을 종료하는 것이 가능함을 보이시오.
8.5 교착상태를 예방하는 가능한 한 해결안은 다른 모든 자원보다 반드시 먼저 요구되어야 하는 하나의 높은 순위의 자원을 갖는 것이다. 예를 들면, 만일 다수의 스레드가 다섯 개의 Java 객체 A...,E를 위한 락에 접근하려고 시도한다면, 교착상태가 가능하다. 우리는 여섯 번째 객체F를 추가함으로써 교착상태를 예방할 수 있다. 한 스레드가 객체 A...,E중의 객체를 위한 락을 획득하기를 원한다면, 그 스레드는 반드시 먼저 객체 F를 위한 락을 획득해야 한다. 이 해결안은 봉쇄(containment)라고 알려져 있다. 객체 A...,E를 위한 락은 객체 F를 위한 락에 포함되어 있다. 이 기법을 8.4.4 절의 순환-대기 방법과 비교해 보시오.
8.8 세 개의 프로세스에 의해 공유되는 동일한 타입의 네 개의 자원으로 구성된 시스템을 고려해 보자. 이들 각 프로세스는 최대 두 개의 자원을 필요로 한다. 시스템에 교착상태가 발생하지 않음을 보이시오.
8.9 n개의 프로세스들이 공유하는 동일한 타입의 자원 m개로 구성한 시스템을 고려해 보자. 자원들은 단지 한 번에 한 개씩 프로세스들에 의해 요청되고 방출될 수 있다. 다음의 두 조건이 성립하면, 시스템이 결코 교착 상태가 될 수 없음을 설명하시오.
8.10 시스템이 자신의 프로세스 중 일부가 기아 상태인 것을 탐지할 수 있는가? 만일 당신의 답이 “예”이면 그 이유를 설명하시오. 만일 답이 “아니오”이면, 어떻게 시스템이 기아 문제를 처리할 수 있는지 설명하시오.
8.11 다음의 자원 할당 정책을 고려해 보자. 자원에 대한 요청과 할당은 언제나 가능하다. 자원이 사용 가능하지 않아서 자원에 대한 요청이 충족될 수 없다면, 우리는 자원을 기다리며 봉쇄된 프로세스들을 검사한다. 만약 이들이 원하는 자원을 가지고 있으면, 이들 자원들을 회수해 요청 프로세스에게 공급한다. 대기 프로세스가 기다리는 자원들의 벡터가 회수된 자원을 포함하기 위해 증가된다.
예를 들어, 3개의 자원 타입과(4, 2, 2,)로 초기화된 벡터 가용(Available)을 가진 시스템을 고려해 보자. 프로세스 P0가 (2, 2, 1)을 요청하면, 이들을 즉시 얻을 수 있다. 만약 P1이 (1, 0, 1)을 요청하면, 이들을 얻을 수 있다. 그 후 P0가 (0, 0, 1)을 요청하면, 이용 가능한 자원이 없기 때문에 봉쇄된다. 만약 P2가 이제 (2, 0, 0)을 요청하면, 가용한 (1, 0, 0)과 P0에 할당된 것 하나를 획득한다(P0가 봉쇄되어 있으므로). P0의 할당(Allocation) 벡터는 (1, 2, 1)로 내려가고, 이것의 요구(Need) 벡터는 (1, 0, 1)로 올라간다.
본문내용
8.1 컴퓨터 시스템 환경과 관련되지 않은 교착 상태의 예를 세 개만 열거하시오.- 철수가 영희에게 만원을 갚으라고 하는데 영희는 민철이가 만원 갚으면 갚는다고 하고 민철이는 철수가 만원 갚으면 된다고 서로 주지 않고 있을 때
- 외길에서 사람 둘이 만나 서로 비켜주기만을 바라고 있는 상태
- 지하철에서 타려는 사람 마음이 급해서 내리는 사람 안 비켜주고 서있을 때
8.2 단지 한 개의 프로세스만 포함하는 교착 상태도 존재 가능한가? 당신의 답을 설명하시오.
- 존재할 수 없다. 한 개의 프로세스로부터 한 가지의 요구밖에 들어오지 않으므로 다른 요구와 교착 상태를 만들어 낼 수 없다.
8.4 시스템이 불안전 상태에 있다고 가정하자. 프로세스들이 교착 상태로 되지 않고 실행을 종료하는 것이 가능함을 보이시오.
.
- 불안전 상태에 있으면 교착 상태가 일어날 수 있으므로 불안전 상태의 프로세스 중 하나를 중지 시키고 그 메모리에 다른 프로세스가 대기를 해제하고 메모리로 올려 교착 상태로 빠지는 것을 막을 수 있다.
8.5 교착상태를 예방하는 가능한 한 해결안은 다른 모든 자원보다 반드시 먼저 요구되어야 하는 하나의 높은 순위의 자원을 갖는 것이다. 예를 들면, 만일 다수의 스레드가 다섯 개의 Java 객체 A...,E를 위한 락에 접근하려고 시도한다면, 교착상태가 가능하다. 우리는 여섯 번째 객체F를 추가함으로써 교착상태를 예방할 수 있다. 한 스레드가 객체 A...,E중의 객체를 위한 락을 획득하기를 원한다면, 그 스레드는 반드시 먼저 객체 F를 위한 락을 획득해야 한다. 이 해결안은 봉쇄(containment)라고 알려져 있다. 객체 A...,E를 위한 락은 객체 F를 위한 락에 포함되어 있다. 이 기법을 8.4.4 절의 순환-대기 방법과 비교해 보시오.
- 순환-대기 방법은 모든 자원 타입들에게 전체적인 순서를 부여하여, 각 프로세스가 열거된 순서대로 오름차순으로 자원을 요청하도록 하여 교착상태를 예방하는 방식이지만 봉쇄는 락을 얻기 위한 추가 객체 하나를 생성함으로써 락을 얻어 자원을 할당하는 방식으로 둘다 순차적인 접근을 하도록 하여 교착상태를 예방하도록 하는 방법들이다