면접 질문 정리 - OS(운영체제) [교착상태]

코난·2024년 2월 20일
0

CS 면접 정리

목록 보기
28/67

교착상태(데드락)이란?

둘 이상의 프로세스들이 다른 프로세스가 차지하고 있는 자원을 서로 무한정 기다리고 있어 프로세스의 진행이 중단된 상태를 의미한다.

교착상태의 발생조건

  • 상호 배제
    • 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다.
  • 점유 대기
    • 자원을 최소 하나 보유하고 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다.
  • 비선점
    • 이미 할당된 자원은 강제로 빼앗을 수 없다.
  • 순환 대기
    • 대기 프로세스의 집합이 순환 형태로 자원을 대기하기 있어야 한다.

교착상태의 해결 방법

1. 예방

  • 상호배제 제거 : 모든 자원에 대해서 공유를 허용한다.
  • 점유와 대기 제거 : 필요한 자원을 한 번에 모두 할당한다. (자원 낭비가 발생하고 무한 대기가 발생할 가능성이 있다.)
  • 비선점 제거 : 모든 자원에 대해 선점을 허용한다.
  • 환형대기 제거 : 자원들에게 순서를 부여하고 프로세스는 순서의 증가 방향으로만 자원 요청이 가능하게 한다.

(예방 방법은 심각한 자원 낭비의 발생으로 주로 회피, 발견, 회복을 이용한다.)

2. 회피

시스템의 상태를 지속적으로 감시하고 교착상태가 될 가능성이 있는 자원 요청은 보류한다. 시스템을 안전상태로 유지하는 것이다.
대표적인 알고리즘으로 은행원 알고리즘이 있다.

3. 탐지, 회복

교착상태 방지를 위한 사전 작업은 하지 않고 주기적으로 교착 상태 발생을 확인하고 회복시킨다.

  • 회복 방법
    • 프로세스 종료 : 교착 상태에 있는 프로세스를 종료시킨다.(이후 재시작된다.)
    • 자원 선점 : 선점할 자원을 선택하고 선정된 자원을 가지고 있는 프로세스에서 자원을 가져온다.
    • 복귀 : 프로세스를 강제 종료한 후, 가장 최근의 체크포인트에서 시작한다.

참고

https://chanhuiseok.github.io/posts/cs-2/
https://yj-something.tistory.com/32
https://dev-coco.tistory.com/162

profile
몸은 커졌어도, 머리는 그대로... 하지만 불가능을 모르는 명탐정 현아! 진실은 언제나 하나!

0개의 댓글