김원빈 개발 블로그

교착상태 본문

시험공부/운영체제

교착상태

GAMBALL 2018. 11. 27. 20:58

교착상태


교착상태 조건


1. 상호 배제 조건 : 한 프로세스에 의해 점유된 자원을 다른 프로세스들이 접근할 수는 없다.


2. 점유 대기 : 이미 자원을 보유한 프로세스가 다른 자원을 요청하며 기다리고 있다.


3. 비선점 : 프로세스에 의해 점유된 자원을 다른 프로세스가 강제적으로 빼앗을 수 없다.


4. 환영 대기 : 프로세스들 간에 닫힌 연결이 존재한다. 즉 자원 할당 그래프가 환영 상태 이다.



교착상태 예방


- 상호 배제



- 점유 대기


- 자신이 사용할 자원을 미리 다 할당받는다.

- 이 또한 문제가 있다.

- 첫째 : 모든 자원 할당받기 위해 오랜 시간 기다릴 수 있다.

- 둘째 : 할당 받은 자원중 마지막에 사용될 수 도 있다.

- 샛째 : 미래에 사용될 모든 자원을 미리 알기는 어렵다.



- 비선점


- 첫째 : 자원을 점유한 프로세스가 다른 자원을 요청했을 때 할당받을 수 없다면

자원을 반납하고 이후 원래자원과 새 자원을 다시 요청한다.

- 둘째 : 한 프로세스에서 다른 프로세스가 점유한 자원을 원하면, 운영체제는 다른 프로세스가 점유한 자원을 강제적으로 반납시키고 그 것을 원하는 프로세스에게 할당할 수 있다.



- 환영대기


- 자원 할당 순서를 정한다.



교착상태 회피


회피는 위에 나온 예방 조건 1~3 가지는 허용한다.

또한 자원 할당 순서를 미리 정하지도 않는다.

그 대신 자원을 할당할 때 교착상태가 발생 가능한 상황으로 진행하지 않도록 고려한다.

따라서 회피 방법은 예방 방법에 대해 더 많은 병행성을 제공한다.



이를 위한 방법으로는


프로세스가 시작할 때 요구하는 자원 할당이 교착상태 발생의 가능성이 있으면 프로세스를 시작시키지 않는것.


또다른 방법으로는 수행 중인 프로세스가 요구하는 추가적인 자원 할당이 교착상태 발생의 가능성이 있으면, 자원을 할당하지 않는다.


이 방법들은 동적으로 조사하는데 이때 가용 개수와 프로세스 자원 요구량을 미리 알아야 한다.



교착상태 발견


1. 할당 행렬에서 행의 값이 모두 0인 프로세스를 우선 표시한다.

2. 임시 벡터 W를 만든다. 그리고 현제 가용 벡터의 값을 백터 W의 초기 값으로 설정한다.

3. 표시되지 않은 프로세스들 중에서 요청 행렬 Q의 특정 행의 값이 모두 W보다 작은 프로세스를 찾는다. 그리고 프로세스 i를 표시한다. 이러한 프로세스가 없으면 종료한다.

4. 단계 3의 조건을 만족하는 행을 q에서 찾으면, 할당 행렬에서 그 행에 대응도는 값으로 w를 갱신한다. 그리고 다시 단계 3을 수행한다.





'시험공부 > 운영체제' 카테고리의 다른 글

가상메모리  (0) 2018.11.28
메모리 관리 기법  (0) 2018.11.28
자원 할당 그래프  (0) 2018.11.27
모니터  (0) 2018.11.27
세마포어  (0) 2018.11.27