[OS] 데드락

2021. 11. 6. 15:26·OS
728x90

데드락 (교착상태)

  • 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황
  • 모든 스레드가 락이 풀리기를 기다리고 있기 때문에, 무한 대기 상태에 빠지게 되며 이런 스레드를 교착상태라 함 

데드락 (교착상태)의 4가지 조건

  1. 상호배제 : 자원에 대해서 여러 프로세스가 동시에 접근 불가한 것을 뜻함
  2. 점유대기 : 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가, 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근 권한을 요구하는 것 
  3. 비선점 : 한 프로세스가 다른 프로세스의 자원 접근 권한을 가져 올 수 없음을 뜻함
  4. 순환대기 : 두 개 이상의 프로세스가 자원 접근을 기다리는데, 그 관계에 사이클이 존재하는 것을 뜻함

데드락 (교착상태) 방지 

  • 데드락 (교착상태) 4가지 조건중 하나만 제거하면 됨
  • 공유 자원 중 많은 경우가 한 번에 한 프로세스만 사용할 수 있기 때문에(예를 들어, 프린트) 상호배제는 제거하기 어려움
  • 대부분의 교착상태 방지 알고리즘은 순환대기를 제거하는 것, 즉 대기 상태의 사이클이 발생하는 일을 막는 데 초점이 맞춰져 있음
저작자표시

'OS' 카테고리의 다른 글

[OS] 멀티프로세스 대신 멀티쓰레드 사용이유  (0) 2021.11.06
[OS] Thread Safe  (0) 2021.11.06
[OS] Thread (쓰레드)  (0) 2021.10.03
[OS] Process (프로세스)  (0) 2021.07.11
[OS] 뮤텍스 / 세마포어  (0) 2021.06.13
'OS' 카테고리의 다른 글
  • [OS] 멀티프로세스 대신 멀티쓰레드 사용이유
  • [OS] Thread Safe
  • [OS] Thread (쓰레드)
  • [OS] Process (프로세스)
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    클린코드
    Kafka
    자바
    AWS
    엘라스틱서치
    ElasticSearch
    cleancode
    splunk
    Elk
    docker
    SQL
    IntelliJ
    java
    이펙티브코틀린
    코틀린
    Spring
    go
    이펙티브 코틀린
    프로그래머스
    JPA
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[OS] 데드락
상단으로

티스토리툴바