1. 교착 상태 예방
교착 상태 예방은 교착 상태를 유발하는 네 가지 조건 중 하나라도 발생하지 않도록 막아 교착 상태를 처리하는 방법이다.
실효성이 적어 잘 사용되지 않는 방법이다. 자원을 보호하기 위해 상호 배제와 비선점을 예방하기 어려우며 점유와 대기, 원형 대기는 프로세스 작업 방식을 제한하고 자원을 낭비하기 때문에 사용할 수 없다.
1.1 상호 배제 예방
시스템 내에 있는 상호 배타적인 모든 자원, 즉 독점적으로 사용할 수 있는 자원을 없애버리는 방법이다.
시스템 내의 모든 자원을 공유할 수 있다면 교착상태가 발생하지 않는다.
상호 배제를 통해 보호해야 하는 자원이 있기 때문에 현실적으로 불가능하다.
1.2 비선점 예방
모든 자원을 빼앗을 수 있도록 만드는 방법이다.
임계구역을 보호하기 위해 잠금을 사용할 경우 선점이 불가능하고, 상호 배제도 보장 할 수 없다. 사실상 불가능하다.
선점이 가능하다고 하더라도, 어떤 기준으로 얼마나 사용할 지 결정하는 것이 어렵고 아사 현상을 일으킨다.
에이징으로 아사 현상을 해결한다고 하더라도 몇번 반복 후에 다시 비선점 상태가 되어 교착 상태에 빠질 수 있기 때문에 에이징도 불가능하다. 즉 비선점을 예방하기 어렵다.
1.3 점유와 대기 예방
프로세스가 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 하는 방법이다.
즉, 전부 할당하거나 아예 할당하지 않는 방식을 적용
프로세스는 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 전부 반납해야한다.
상호 배제 예방과 비선점 예방의 경우 자원에 대한 제약을 풀어버리는 것이지만, 점유와 대기 예방은 자원이 아닌 프로세스의 자원 사용 방식을 변화시킨다는 점에서 의미가 있다.
점유와 대기 예방에는 다음과 같은 단점이 있다.
- 프로세스가 자신이 사용하는 모든 자원을 자세히 알기 어렵다.
: 추가로 필요한 자원이 생겼을 때 다시 확보하기가 어렵다. - 자원의 활용성이 떨어진다.
: 앞으로 필요한 자원까지 미리 선점하기 때문에 당장 필요한 다른 프로세스의 작업이 진행이 안됨.
자원 낭비가 심하다. - 많은 자원을 사용하는 프로세스가 적은 자원을 사용하는 프로세스보다 불리하다.
: 필요한 자원이 많을수록 자원을 동시에 확보하기 어려워서 아사 현상이 발생할 수 있다. - 결국 일괄 작업 방식으로 동작한다.
: 일괄 방식으로 처리되어 시스템 효율이 떨어진다.
1.4 원형 대기 예방
점유와 대기를 하는 프로세스들이 원형을 이루지 못하도록 막는 방법이다.
자원을 한 방향으로만 사용하도록 설정함으로써 원형 대기를 예방할 수 있다.
즉 모든 자원에 숫자를 부여하고 숫자가 큰 방향으로만 자원을 할당하는 것이다.(순서 부여)
원형 대기 예방에는 다음과 같은 단점이 있다.
- 프로세스 작업 진행에 유연성이 떨어진다.
- 자원의 번호를 어떻게 부여할 것인지가 문제이다.
'CS 스터디 > 운영체제' 카테고리의 다른 글
[교착 상태] 5. 교착 상태 검출 / 교착 상태 회복 (0) | 2023.08.10 |
---|---|
[교착 상태] 4. 교착 상태 회피 (0) | 2023.08.10 |
[교착 상태] 2. 교착 상태 해결 방법 (0) | 2023.08.06 |
[교착 상태] 1. 교착 상태의 정의와 필요조건 (0) | 2023.08.06 |
[프로세스 동기화] 3. 임계구역 해결 방법 (0) | 2023.08.02 |