▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기
대기 중인 프로세스 중 한 프로세스에 의해서만 발생할 수 있는 사건을 두 개 이상의 프로세스들이 무한정 대기할 때 교착상태가 발생한다. 근본적으로, 교착상태를 처리하는데는 세 가지 방식이 있다.
- 시스템이 결코 교착상태가 되지 않도록 보장하기 위하여 교착상태를 예방하거나 회피하는 프로토콜을 사용한다.
- 시스템이 교착상태가 되도록 허용한 다음에 회복시키는 방법이 있다.
- 문제를 무시하고, 교착상태가 시스템에서 결코 발생하지 않는 척 한다.
세 번째 해결안이 UNIX와 Windows를 포함해 대부분의 운영체제가 사용하는 방법이다. 교착상태는 네 가지 필요조건들이 동시에 시스템 내에서 충족될 때, 그 때에만 발생한다.
이 조건들은 상호 배제, 점유 및 대기, 비 선점, 순환 대기이다. 교착상태를 예방하려면, 우리는 필요한 조건들 중에서 최소한 하나가 성립되지 않도록 조치해야 한다.
교착상태를 예방하는 것이 아니라 회피하는 방법은 운영체제가 각 프로세스가 자원을 활용하는 방법에 대해 사전 정보를 갖는 것이다. 예를 들어, 은행원 알고리즘은 각 프로세스마다 각 종류의 자원을 최대 몇 개까지 요청하는 지를 사전에 알아야 한다. 우리는 이러한 정보를 이용해 교착상태 회피 알고리즘을 정의할 수 있다.
만일 시스템이 교착상태가 결코 발생하지 않는 프로토콜을 채택하지 않으면, 탐지와 회복 방법을 반드시 적용해야 한다. 교착상태가 발생하였는지 결정하려면 교착상태 탐지 알고리즘을 반드시 호출해야 한다. 교착상태가 탐지되면, 시스템은 반드시 교착상태인 프로세스들 중 몇몇을 중지시키거나, 교착상태인 프로세스들로부터 자원을 선점해 회복해야 한다.
자원 선점을 이용해 교착상태를 제거하려면 희생자 선택, 롤백, 그리고 기아 현상의 세 가지 사항을 고려해야 한다. 비용 요인을 가장 중요시하여 롤백시킬 희생자를 선택하는 시스템에서는 기아 상태가 발생할 수 있다. 그 결과, 선택된 프로세스들은 자신의 태스크를 결코 종료하지 못한다.
연구자들은 이 기본적인 방법 중 어느 것도 단독으로는 운영체제에서의 자원 할당 문제 전 범위를 처리하는 데에는 적절하지 못하다고 주장한다. 그렇지만 시스템의 자원 클래스 각각에 최적인 해결책을 선택하는 데 이 기본적인 방법들을 조합하여 쓸 수 있다.
'컴퓨터 구조' 카테고리의 다른 글
가상메모리에 대해서 (0) | 2022.04.17 |
---|---|
메모리 관리 전략은 이렇게.. (0) | 2022.04.17 |
프로세스 동기화에 대해서 (0) | 2022.04.16 |
cpu 스케줄링 (0) | 2022.04.16 |
다중 스레드 프로그래밍 (0) | 2022.04.16 |