1. 프로세스 관리
- 프로세스와 스레드, 프로세스 동기화, 교착 상태 해결
2. 자원 접근 및 할당
- CPU 스케줄링, 메모리 페이징, 스와핑, 입출력장치 인터럽트 서비스 루틴
3. 파일 시스템 관리
- 관련 정보를 묶어 파일 단위와 파일을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관
자원과 프로세스 간에 일어나는 현상이며, Deadlock 발생 조건 4개와 해결방법 4개를 꼭 알아가자.
위의 애매한 용어들은 자원 할당 그래프로 이해하면 편하다.
아래 네 가지 조건을 동시에 만족
1. 상호 배제 (mutual exclusion) (프로세스 서로를 자원에서 제외하는)
자원을 동시에 공유 할 수 없는 상태
→ 다른 프로세스가 자원을 사용하려면 자원이 방출될 때까지 기다려야 합니다.
2. 점유와 대기 (hold-and-wait)
자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태
3. 비선점 (no preemption) (우선권이 없는)
다른 프로세스가 사용 중인 자원을 강제로 빼앗지 못하는 상태
4. 원형 대기 (circular wait)
프로세스들이 원의 형태로 서로의 자원을 대기하는 상태
예방 방식
교착 상태의 4가지 발생 조건중 하나가 성립하지 않게 하는 방법 (네 가지 조건을 각각 반대로 해결)
상호 배제 해결하기
자원을 동시에 공유 할 수 없는 상태 ↔ 자원을 동시에 공유 할 수 있게 해준다. (원하는 결과를 얻기 힘듦 (프린터 동시 사용))
점유와 대기 해결하기
자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태 ↔ 특정 프로세스에만 자원을 점유시켜 대기를 없앤다. (자원을 효율적으로 사용하기 힘듦)
비선점 해결하기
어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태 ↔ 선점형으로 프로세스 관리한다. (모든 자원이 선점 가능한 것은 아님)
원형 대기 해결하기
프로세스들이 원의 형태로 서로의 자원을 대기하는 상태 ↔ 모든 자원에 번호를 부여해 할당 받은 자원의 번호보다 낮은 번호의 자원은 대기할 수 없게 한다. (번호를 붙이는 작업이 어려움)
회피 방식
한정된 자원을 무분변하게 할당했다고 간주 → 안전 상태임을 확인하면서 자원 배분하기 (은행원 알고리즘)
검출 후 회복 방식
시스템 검사를 통해 deadlock 발생을 탐지하고, 이를 회복시키는 방법
선점을 통한 회복
교착 상태가 해결 될 때까지 한 프로세스씩 자원을 몰아 주기
프로세스 강제 종료를 통한 회복
무시
deadlock 발생 확률이 낮은 시스템에서 주로 사용하며, 아무런 조치도 취하지 않고 deadlock을 무시하는 방법
교착상태(Deadlock)란 무엇이며, 어떻게 방지하거나 해결할 수 있나요?
교착상태(Deadlock)는 언제 발생하나요?
교착상태(Deadlock)는 어떻게 해결할 수 있나요?