-
교착 상태Computer Science/Operating System 2021. 1. 14. 00:56
질문
8.3 교착 상태 특성
- 교착 상태가 일어나는 필요조건들에는 어떤 것이 있나요?
- 상호 배제 : 최소한 하나의 자원이 비공유 모드로 점유되어야 합니다. 다른 스레드가 그 자원을 요청하면, 요청 스레드는 자원이 방출될 때까지 반드시 지연되어야 합니다.
- 점유하며 대기 : 스레드는 최소한 하나의 자원을 점유한 채, 현재 다른 스레드에 의해 점유된 자원을 추가로 얻기 위해 반드시 대기해야 합니다.
- 비선점 : 자원들은 강제적으로 방출될 수 없고, 점유하고 있는 스레드가 태스크를 종료한 후 그 스레드에 의해 자발적으로만 방출될 수 있습니다.
- 순환 대기 : 대기하고 있는 스레드들이 서로 연쇄적으로 서로의 자원을 대기합니다.
8.4 교착 상태 처리 방법
- 교착 상태를 처리하는 방법은 어떤 것이 있나요?
- 문제를 무시합니다
- 교착 상태를 예방하거나 회피하는 프로토콜을 사용합니다
- 교착 상태가 일어난 뒤에 복구시킵니다
- 교착 상태 예방은 어떻게 하나요?
- 교착 상태가 일어나는 필요 조건들 중 적어도 하나가 성립하지 않도록 만듭니다
- 교착 상태 회피는 어떻게 하나요?
- 스레드가 평생 요구하고 사용할 자원에 대한 부가적인 정보를 미리 제공받습니다
8.5 교착 상태 예방
- 교착 상태의 필요 조건 중 순환 대기가 일어나지 않도록 하는 방법은 무엇인가요?
- 모든 자원 유형에 전체적인 순서를 부여하여, 각 프로세스가 열거된 순서대로 오름차순으로 자원을 요청하도록 요구합니다.
8.6 교착 상태 회피
- 은행원 알고리즘이란 무엇인가요?
- 스레드가 시작할 때 스레드가 가지고 있어야 할 자원의 최대 개수를 자원 종류마다 미리 신고합니다
- 스레드가 자원들을 요청하면 시스템은 그것을 들어주었을 때 시스템이 계속 안전 상태에 머무르는지 판단하고 계속 안전하다면 그 요청을 들어줍니다. 안전하지 않다면 이 스레드의 요청은 허락이 안 된 채 다른 스레드가 끝날 때까지 기다리게 됩니다.
요약
- 집합의 모든 프로세스가 같은 집합의 다른 프로세스에서만 발생할 수 있는 이벤트를 기다리는 경우 프로세스 집합에서 교착 상태가 발생합니다.
- 교착상태의 필요 조건으로는 상호 배제, 점유하며 대기, 비선점, 순환대기가 있습니다.
- 교착 상태에 필요한 4가지 조건 중 하나가 발생하지 않도록 하여 예방할 수 있습니다.
- 은행원 알고리즘을 사용하여 교착 상태를 회피할 수 있습니다.
'Computer Science > Operating System' 카테고리의 다른 글
가상 메모리 (0) 2021.01.14 메모리 관리 (0) 2021.01.14 동기화 도구들 (0) 2021.01.10 CPU 스케줄링 (0) 2021.01.10 스레드와 병행성 (0) 2021.01.10 - 교착 상태가 일어나는 필요조건들에는 어떤 것이 있나요?