운영체제
교착상태
- 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 떄문에 결과적으로 아무것도 못하는 상태
- 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제이다.
다중 프로그래밍 : CPU작업과 입출력 작업을 병행하는 것(메모리에 여러개의 프로그램을 상주시켜 하나의 CPU로 연산과 처리를 중첩시켜 CPU유휴시간을 감소하기 위한 기법
교착상태의조건
1. 자원점유와 대기
프로세스가 자신이 가질 수 있는 자원은 가지고 있으면서 다른 자원이 오기를 기다리는 것
2. 비선점
다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없다.
3. 순환대기
프로세스의 자원 할당에서 첫 번째 프로세스와 마지막 프로세스의 자원할당이 겹치게 되어 원형에 있는 모든 프로세스가 자원 할당을 받고자 기다리는 형태
4. 상호배제
한번에 한개의 프로세스만이 공유자원을 사용할 수 있어야 한다.
예방
1. 자원점유와 대기
프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.
2. 비선점
자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 한다.
3. 순환대기
자원을 선형 순서로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 한다.
4. 상호배제
한번에 여러개의 프로세스가 공유자원을 사용할 수 있도록 한다.
회피
교착상태가 발생하면 적절히 피하는 방법
각 프로세스의 요청과 방출에 대한 순서를 파악하고 있다면 우리는 각 요청에 대해서 가능한 미래의 교착상태를 피하기위해 프로세스가 대기해야하는 지를 결정할 수 있다는 점에 착안하여 나온 방법
즉, 어떤 프로세스가 요청을 할 때 미래에 대한 분석을 통해 나의 요청을 늦추는 방법으로 교착상태를 피할 수 있다.
'STUDY > 운영체제' 카테고리의 다른 글
[컴퓨터 구조] 캐시이론 Locality (0) | 2021.09.23 |
---|