본 게시물은 운영체제 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시물입니다.
교착상태 문제
# 교착상태
- 한 프로세스가 자원을 요청하였으나, 그 자원을 필요로 하는 시간에 사용할 수 없다면 대기 상태로 진입하고, 그 필요 자원이 또 다른 자원의 할당을 위해 대기 중인 다른 프로세스에 의해 점유되어 있고 이런 형태의 대기가 꼬리에 꼬리를 물어 환형을 이루게 되면, 대기에 참여한 프로세스들은 영원히 대기 상태에서 벗어날 수 없다.
→ 교착 상태 발생
교착상태 특징
- 다음의 4가지 조건이 동시에 만족될 때 교착상태 발생
1. 상호 배제 : 할당 후 반환까지 한 프로세스만 사용하는 자원이어야 함
2. 점유하며 대기 : 적어도 각 프로세스가 하나의 자원을 보유하고 현재 다른 프로세스에게 점유된 자원을 추가로 얻기 위해 반드시 대기해야함
3. 비선점 : 자발적으로만 방출될 수 있다.
4. 환형 대기
# 자원 할당 그래프
- 정점 : 프로세스와 자원의 집합으로 분할
- 유향 에지
- P -> R : 요청
- R -> P : 할당 - 사이클 없다면 교착상태 x
- 사이클 있을 경우
- 각 자원 유형마다 하나씩의 자원밖에 없으면 반드시 교착상태 발생
- 각 자원 유형마다 여러 개의 자원이 있으면, 교착상태 발생할 가능성 o
교착상태 예방
- 상호배제 조건을 부정
-일반적으로 상호 배제를 부인하여 교착 상태를 방지하는 것은 불가능 - 점유하며 대기 조건을 부정
- 대기없음 : 자원의 활용도 낮음
- 점유없음 : 기아 상태의 발생 가능성 증가 - 비선점 조건을 부정
- 대기상태로 돌아가면서 현재 할당 받은 것을 강제로 반환토록 함 - 환형대기 조건을 부정
- 번호가 증가하는 순서대로만 자원을 요청하도록 강제
# 식사하는 철학자 문제
- 포크의 번호가 증가하는 순으로만 포크를 집도록 함
교착상태 회피
- 안정 순열
- 안정 상태
- 회피 : 자원 할당 시 시스템이 항상 안정상태에 있도록 유지하는 것
- Banker's 알고리즘
- safty 알고리즘
교착상태 탐지
- 교착상태를 검사하는 알고리즘을 주기적으로 수행
교착상태 복구
- 프로세스를 종료하고 자원을 회수
- 교착상태 프로세스를 모두 중지 또는 교착상태가 제거될 때까지 한 프로세스씩 중지 - 교착상태에 있는 하나 이상의 프로세스들로부터 자원을 선점
- 교착상태에 있는 프로세스가 갖고 있는 자원을 계속적으로 선점하여 다른 프로세스에게 주는 방식
- 후퇴 필요
- 기아 발생 고려
'LECTURE > [2021-1] 운영체제' 카테고리의 다른 글
[운영체제] 8. 가상메모리 (Virtual Memory) (0) | 2021.06.17 |
---|---|
[운영체제] 7. 메모리 경영 (0) | 2021.06.17 |
[운영체제] 6. 상호작용 프로세스와 동기화 (0) | 2021.06.17 |
[운영체제] 5. 실시간 스케쥴링 (0) | 2021.06.17 |
[운영체제] 4. 프로세스 스케쥴링 (0) | 2021.06.17 |