[OS] Deadlock 없애는 방법1 - prevent deadlock

2023. 2. 26. 15:32·CS/OS

Prevent deadlock: 앞선 글의 Deadlock의 필요충분조건 중 1개를 없앤다.

- Indirect:

mutualExclusion / holdAndWait / noPreemtion 중 하나를 없애는 방식

- Direct

circular wait을 없애는 방식


Indirect방식을 먼저 살펴보자.

1. MutualExclusion을 없애기

즉, 한 번에 1개의 프로세스만 자원 접근이 가능하게 한다는 것이다.

다르게 생각해보면 이 말은 자원 공유가 불가능해진다는 얘기이다.

따라서 MutualExclusion을 없애기는 어렵다.

 

2. Hold-and-wait를 없애기

모두 hold시키거나 / 모두 wait 시킨다.

즉, 한꺼번에 모든 자원을 할당하거나 / 놓는 방식

=> 아무 연산도 못하고 대기하게될 수 있으므로(Starvation) 효율이 떨어짐. (한편, circular wait은 자연히 사라질 것이다.)

 

3. No preemtion을 없애기(= Preemption을 허용하기)

강제로 자원을 뺏는다는 뜻. wait될 것 같으면 강제로 뺏는다. (hold-and-wait도 자연히 방지된다)

그러나 이 방식은 중간에 끝내버리니 작업 손실 등 많은 문제 발생

 

Direct방식으로는 Circular wait를 없애는 방식이 있다.

4. circular wait를 없애기

자원을 할당받아가는 순서를 같게 하면 된다.

P1이 a,b순서로 요청했다면 P2도 a,b 순서로 요청하도록 하는 것이다.

그럼 circular wait이 생길 일은 없다.

=> 하지만 P2는 a가 아닌 b부터 필요한 경우도 있다. 결국은 문제가 발생.

 

 

그러므로 데드락을 피하는 2번째 방법인 Avoid deadlock이 있다.

다음 글에서 이어 Avoid deadlock을 알아본다.

'CS > OS' 카테고리의 다른 글

[OS] Deadlock 탐지를 위한 Coffman Algorithm 사용법  (0) 2023.02.26
[OS] Deadlock 없애는 방법2, 3 - Avoid Deadlock, Detect Deadlock  (0) 2023.02.26
[OS] Conditions for Deadlock  (0) 2023.02.26
[OS] PCB(Process Control Block  (0) 2023.02.26
[OS] Multi-processing, Multi-programming, Multi-threading  (0) 2023.02.26
'CS/OS' 카테고리의 다른 글
  • [OS] Deadlock 탐지를 위한 Coffman Algorithm 사용법
  • [OS] Deadlock 없애는 방법2, 3 - Avoid Deadlock, Detect Deadlock
  • [OS] Conditions for Deadlock
  • [OS] PCB(Process Control Block
LOGPOSE 로그포스
LOGPOSE 로그포스
다음 섬으로 향하고자 이번 섬을 기록하는 특수한 나침반
  • LOGPOSE 로그포스
    LOGPOSE
    LOGPOSE 로그포스
  • 전체
    오늘
    어제
    • 분류 전체보기 (135)
      • [Unity] Projects & Study (27)
        • VR 멀티 항만 시뮬레이션 게임 (1)
        • HandiLab - AR 과학 실험 (10)
        • 우물 속에서 - VR 공포 게임 (2)
        • Loop - Interactive Movie (8)
        • Simple Platformer Game (4)
      • CS (67)
        • Algorithm & Data Structure (23)
        • Design Pattern (3)
        • Computer Graphics (23)
        • OS (16)
      • Java (9)
      • Cloud (3)
      • Docker (4)
      • Spring (2)
      • AWS (3)
      • LLM (3)
      • Kubernetes (6)
      • Programming Paradigm (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    VR게임
    2D
    프로그래밍 패러다임
    함수형 패러다임
    Photon
    AR
    VR
    선언형 프로그래밍
    함수형 프로그래밍
    Unity AR
    Unity
    game
    ovr
    VR멀티게임
    Unity앱개발
    개발
    함수형
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
LOGPOSE 로그포스
[OS] Deadlock 없애는 방법1 - prevent deadlock
상단으로

티스토리툴바