OS - Dead Lock(교착상태)

itonse·2024년 4월 30일
0

CS 스터디

목록 보기
30/56

👀 해당 주제 질문 리스트 미리보기

Q1. 데드락이란 무엇이며 언제 발생하나요?
Q2. 교착상태의 해결방법에 대해 설명해보세요.

1. 데드락 이란?

무한 대기 상태: 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 작업을 하지 못하게 되고, 무한히 다음 자원을 기다리는 상태


2. 데드락이 발생하는 4가지 조건

1. 상호 배제 (Mutual exclusion)

  • 자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다.

2. 점유 대기 (Hold and wait)

  • 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.

3. 비선점 (No preemption)

  • 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.

4. 순환 대기 (Circular wait)

  • 프로세스의 집합에서 P0은 P1이 점유한 자원을 대기하고 P1은 P2가 점유한 자원을 대기하고, P2..Pn-1은 Pn이 점유한 자원을 대기하며 Pn은 P0이 점유한 자원을 요구해야 한다.

3. 데드락 해결방법

1. 예방

  • 데드락이 발생할 수 있는 요구조건을 만족시키지 않게 함으로써 데드락을 방지한다.
  • 데드락 발생 4가지 조건 중 어느 하나를 제거함으로써 수행된다.
  • 자원 낭비가 가장 심한 기법이다.

2. 회피

  • 데드락 발생 가능성을 배제하지 않고 데드락이 발생하면 적절히 피해나가는 방법이다.
  • 리소스 할당의 측면에서, 데드락이 발생할 가능성이 있는 자원 할당을 하지 않는다.
  • 주로 은행원 알고리즘이 사용된다.

3. 탐지

  • 시스템에 데드락이 발생했는지 점검하여 데드락 상태에 있는 프로세스와 자원을 발견한다.
  • 교착상태 발견 알고리즘과 자원 할당 그래프 등을 사용한다.

4. 회복

  • 데드락을 발견했다면 회복기법을 진행한다.
  • 데드락을 일으킨 프로세스를 종료하거나 데드락 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복한다.



4. 데드락 관련 기술 면접 질문


Q1. 데드락이란 무엇이며 언제 발생하나요?

데드락은 여러 프로세스가 서로의 자원을 기다리는 상태에서 더 이상 진행할 수 없게 되는 상황을 말합니다. 이는 상호 배제, 점유 대기, 비선점, 순환 대기 이 4가지 조건이 동시에 충족될 때 발생합니다.


Q2. 교착상태의 해결방법에 대해 설명해보세요.

1. 락킹 코드의 위치 변경

락을 거는 코드의 위치 조정으로 락 획득 순서를 변경하여 데드락 가능성을 줄일 수 있습니다. 예를 들어, 모든 프로세스가 리소스를 동일한 순서로 요청하도록 코드를 조정함으로써 순환 대기 상태를 방지할 수 있습니다.

2. 크리티컬 리소스 분리

데드락 방지를 위해 각 프로세스가 독립적으로 리소스를 사용하도록 코드를 재구성합니다. 이 방식은 각 프로세스가 서로 경쟁하는 리소스에 동시에 접근하는 것을 방지하여 데드락의 위험을 감소시킵니다.


ref.
[운영체제] 교착상태 4가지 조건
교착상태와 교착상태 해결방법
[OS/운영체제] Deadlock(데드락) - 정의, 발생 조건, 해결 방법

0개의 댓글