교착 상태 발생 조건과 해결 방안을 말해주세요.

Jit Hoon·2023년 7월 26일
3

OS

목록 보기
3/4
post-thumbnail

들어가기 전, OS 공부 위치와 오늘의 핵심은?

  • OS의 핵심 서비스 세 가지 중 프로세스 관리 서비스인 교착 상태 해결을 배우고 있다.

💡 OS 핵심 서비스 3
1. 프로세스 관리

	- 프로세스와 스레드, 프로세스 동기화, 교착 상태 해결

2. 자원 접근 및 할당

	- CPU 스케줄링, 메모리 페이징, 스와핑, 입출력장치 인터럽트 서비스 루틴

3. 파일 시스템 관리

	- 관련 정보를 묶어 파일 단위와 파일을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관

오늘의 핵심

자원과 프로세스 간에 일어나는 현상이며, Deadlock 발생 조건 4개와 해결방법 4개를 꼭 알아가자.


[교착 상태란 뭘까]

  • 아래 그림 처럼, 프로세스가 서로의 자원을 기다리며 무한정 대기 상태에 빠지는 상황


[교착 상태는 왜 일어날까]

  • 상호 배제, 점유와 대기, 비선점, 원형 대기 조건이 동시에 만족할 때

위의 애매한 용어들은 자원 할당 그래프로 이해하면 편하다.

아래 네 가지 조건을 동시에 만족

1. 상호 배제 (mutual exclusion) (프로세스 서로를 자원에서 제외하는)

	자원을 동시에 공유 할 수 없는 상태

    → 다른 프로세스가 자원을 사용하려면 자원이 방출될 때까지 기다려야 합니다.


2. 점유와 대기 (hold-and-wait)

	자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태


3. 비선점 (no preemption) (우선권이 없는)

	다른 프로세스가 사용 중인 자원을 강제로 빼앗지 못하는 상태


4. 원형 대기 (circular wait)

	프로세스들이 원의 형태로 서로의 자원을 대기하는 상태

교착 상태 = 상호 배제 + 점유와 대기 + 비선점 + 원형 대기 = 자원 할당 그래프의 형태가 원


[교착 상태는 어떻게 해결할까]

  • 예방, 회피, 검출 후 회복, 무시를 통해 해결할 수 있다.

  1. 예방 방식

    교착 상태의 4가지 발생 조건중 하나가 성립하지 않게 하는 방법 (네 가지 조건을 각각 반대로 해결)

    1. 상호 배제 해결하기

      자원을 동시에 공유 할 수 없는 상태 ↔ 자원을 동시에 공유 할 수 있게 해준다. (원하는 결과를 얻기 힘듦 (프린터 동시 사용))

    2. 점유와 대기 해결하기

      자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태 ↔ 특정 프로세스에만 자원을 점유시켜 대기를 없앤다. (자원을 효율적으로 사용하기 힘듦)

    3. 비선점 해결하기

      어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태 ↔ 선점형으로 프로세스 관리한다. (모든 자원이 선점 가능한 것은 아님)

    4. 원형 대기 해결하기

      프로세스들이 원의 형태로 서로의 자원을 대기하는 상태 ↔ 모든 자원에 번호를 부여해 할당 받은 자원의 번호보다 낮은 번호의 자원은 대기할 수 없게 한다. (번호를 붙이는 작업이 어려움)

  2. 회피 방식

    한정된 자원을 무분변하게 할당했다고 간주 → 안전 상태임을 확인하면서 자원 배분하기 (은행원 알고리즘)

    • 안전 순서열 : 안전하게 자원을 할당 할 수 있는 순서
      • 안전 상태 : 안전 순서열이 있는 상태
      • 불안전 상태 : 안전 순서열이 없는 상태
  3. 검출 후 회복 방식

    시스템 검사를 통해 deadlock 발생을 탐지하고, 이를 회복시키는 방법

    1. 선점을 통한 회복

      교착 상태가 해결 될 때까지 한 프로세스씩 자원을 몰아 주기

    2. 프로세스 강제 종료를 통한 회복

      • 모두 강제 종료 시 → 작업 내역을 잃을 수 있다.
      • 하나 씩 강제 종료 시 → 잦은 확인으로 오버헤드 가능성 높다.
  4. 무시

    deadlock 발생 확률이 낮은 시스템에서 주로 사용하며, 아무런 조치도 취하지 않고 deadlock을 무시하는 방법


예상 면접 질문은?

  • 면접에서의 deadlock 질문의 의도는, deadlock 발생 조건과 해결방법을 묻는 것이다.

  1. 교착상태(Deadlock)란 무엇이며, 어떻게 방지하거나 해결할 수 있나요?

    • 교착상태는 프로세스가 서로의 자원을 기다리며 무한정 대기 상태에 빠지는 상황을 말합니다. 예방, 회피, 검출 및 회복 기법을 사용하여 교착상태를 방지하거나 해결할 수 있습니다.

  1. 교착상태(Deadlock)는 언제 발생하나요?

    • 상호 배제, 점유 대기, 비선점, 순환 대기 이 4가지 조건이 동시에 성립할 때 발생할 수 있습니다.

  1. 교착상태(Deadlock)는 어떻게 해결할 수 있나요?

    • deadlock 문제를 해결하는 방법에는 예방, 회피, 탐지-회복, 무시 4가지 방법이 있습니다.
profile
최지훈_FE_최최최최종.log

0개의 댓글