운영체제 

교착상태

-  두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 떄문에 결과적으로 아무것도 못하는 상태

- 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제이다.

 

다중 프로그래밍 : CPU작업과 입출력 작업을 병행하는 것(메모리에 여러개의 프로그램을 상주시켜 하나의 CPU로 연산과 처리를 중첩시켜 CPU유휴시간을 감소하기 위한 기법

 

교착상태의조건

1. 자원점유와 대기

프로세스가 자신이 가질 수 있는 자원은 가지고 있으면서 다른 자원이 오기를 기다리는 것

 

2. 비선점

다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없다.

 

3. 순환대기

프로세스의 자원 할당에서 첫 번째 프로세스와 마지막 프로세스의 자원할당이 겹치게 되어 원형에 있는 모든 프로세스가 자원 할당을 받고자 기다리는 형태

 

4. 상호배제

한번에 한개의 프로세스만이 공유자원을 사용할 수 있어야 한다.

 

예방

1. 자원점유와 대기

프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.

 

2. 비선점

자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 한다.

 

3. 순환대기

자원을 선형 순서로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 한다.

 

4. 상호배제

한번에 여러개의 프로세스가 공유자원을 사용할 수 있도록 한다.

 

회피

교착상태가 발생하면 적절히 피하는 방법

 

각 프로세스의 요청과 방출에 대한 순서를 파악하고 있다면 우리는 각 요청에 대해서 가능한 미래의 교착상태를 피하기위해 프로세스가 대기해야하는 지를 결정할 수 있다는 점에 착안하여 나온 방법

즉, 어떤 프로세스가 요청을 할 때 미래에 대한 분석을 통해 나의 요청을 늦추는 방법으로 교착상태를 피할 수 있다.

 

 

 

 

 

 

학습참고 :

1. https://coding-factory.tistory.com/311

2. https://frontalnh.github.io

반응형

'STUDY > 운영체제' 카테고리의 다른 글

[컴퓨터 구조] 캐시이론 Locality  (0) 2021.09.23

+ Recent posts