[운영체제] 교착상태

Wuchang·2023년 7월 18일
0

운영체제

목록 보기
7/9

교착상태란?

교착상태(Deadlock)란, 두개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다.

예를들면 프로세스A가 프로세스B의 어떤 자원을 요청할 때, 프로세스 B도 프로세스A가 점유하고 있는 자원을 요청한 것이다.

교착상태의 원인

  • 상호배제: 한 프로세스가 자원을 독점하고 있으며, 다른 프로세스들이 접근 불가능함
  • 점유 대기: 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
  • 비선점: 다른 프로세스의 자원을 강제적으로 가져올 수 없음
  • 환형 대기: 프로세스A는 프로세스B의 자원을 요구하고, 프로세스B는 프로세스A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황을 말함

교착상태의 해결 방법

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

은행원 알고리즘이란?
-> 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고, 안정 상태로 가도록 자원을 할당하는 알고리즘

profile
우창의 개발일지🐈

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

유익한 정보를 제공해주셔서 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

글 잘 봤습니다, 감사합니다.

답글 달기