Operation System - 8. 데드락(Dead Lock) 편

Perdy·2023년 7월 30일
0

CS

목록 보기
8/20

데드락(Dead Lock)

교착상태라고도 하며, 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태입니다.

교착상태의 원인
1. 상호 배제 : 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근이 불가능합니다.
2. 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태입니다.
3. 비선점 : 다른 프로세스의 자원을 강제적으로 가져올 수 없습니다.
4. 환형 대기 : 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스B는 프로세스 A의 자원을 요구하는 등 서로의 자원을 요구하는 상황을 말합니다.

교착 상태의 해결 방법
1. 자원을 할당할 때, 애초에 조건이 성립되지 않도록 설계하기. 자원 낭비가 가장 심한 방법입니다.
2. 교착 상태 가능성이 없을 때만 자원을 할당하고, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 알고리즘(은행원 알고리즘) 쓰기.
3. 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한 개씩 지우기
4. 교착 상태가 발생하는 경우가 매우 드물게 일어나기 때문에 처리하는 비용이 더 커져서, 교착 상태가 발생하면 사용자가 작업을 종료합니다. 현대 운영체제가 채택하는 방법은 이쪽입니다.

  • 은행원 알고리즘
    총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 안정 상태로 가도록 자원을 할당하는 알고리즘

자원 선점시 고려사항
자원을 선점할 프로세스 선택 문제 : 최소의 피해를 줄 수 있는 프로세스를 선택합니다.
자원을 자원을 선점한 프로세스 복귀 문제 : 자원이 부족한 상태이므로, 대부분 일시 중지시키고 다시 시작하는 방법을 사용합니다.
기아 현상 문제 : 한 프로세스가 계속하여 자원 선점 대상이 되지 못하도록 고려해야 합니다.

profile
영원한 뉴비. 꾸준히 한다면 언젠가는 높은 곳에 도달할지도?

0개의 댓글