[system operate] 10. 교착상태 deadlock

mainxjuju·2022년 6월 13일
0

운영체제

목록 보기
3/5
post-thumbnail

deadlock
자원을 소유한 스레드들 사이에서 각 스레드는 다른 스레드가 소유한 자원을 요청하여 무한정 대기하고 있는 현상
deadly embrace;풀지 못하는 포옹

위치는 어디서? 사용자가 작성한 멀티스레드 응용프로그램에서 주로 발생
커널 내에서도 발생
교착상태를 막도록 운영하는 컴퓨터 시스템은 거의 없는 실상 무.적.권 일어남
발생하도록 냅두고 교착상태가 발생한 것 같으면, 시스템 재시작, 혹은 의심스러운 몇몇 프로그램 종료

교착상태 유발시키는 잠재적 요인

  • 자원
    교착상태의 발생지
    컴퓨터 시스템에는 많은 자원 존재
  • 자원과 스레드
    한 스레드가 여러자원을 동시에 필요로 하는 상황이 요인
  • 자원과 운영체제
    한번에 하나씩 자원을 할당하는 운영체제 정책이 요인
  • 자원 비선점
    할당된 자원은 스레드가 자발적으로 내놓기 전에 강제로 뺏지 못하게하는 요인

교착상태는 여러 자원 형태 중 대부분 선점 불가능하며, 배타적 할당 방식을 사용하고, 순차적 재사용이 가능한 자원들을 대상으로 발생

교착상태와 유사한 문제

  • 무한 연기 indefinite postponement
  • 시스템의 자원 스케줄링 정책의 편중성 때문에 발생
  • 우선순위가 낮은 프로세스가 무한정 기다리는 현상이 발생
    해결책) 에이징 ; 어떤 자원을 기다린 시간에 비례하여 프로세스에게 우선순위를 부여하는 기법

교착상태 조건

  • 상호배제(Mutual Exclusion)
    프로세스들은 자원에 대해 배타적인 사용을 요구
    적어도 하나의 자원은 반드시 비공유 되는 상태에서 점유
  • 점유와 대기(Hold and Wait)
    시스템 내부에 어떤 프로세스가 적어도 하나의 자원을 공유
  • 비선점(No preemption)
    자원을 점유하고 있는 프로세스는 그 작업의 수행이 끝날때 까지 해당 자원을 반환하지 않을 경우 교착 상태 발생
  • 환형대기(Circular wait)
profile
나 개발자가 맞을까....?

0개의 댓글