본문 바로가기

운영체제

4. 데드락

인프런의 [그림으로 쉽게 배우는 운영체제] 강의를 듣고 정리한 내용이다.

간단하게 들은 내용을 정리한 것으로, 더 자세한 내용을 원한다면 위 강의를 구매하는 것을 추천한다.

짧은 강의 형태로 단시간에 운영체제를 배우고 싶은 사람, 쉽게 운영체제를 배우고 싶은 사람에게 적합하다고 생각한다.

 

 

✏️ 데드락이란? (feat. 식사하는 철학자)

  • 교착 상태 - 여러 프로세스가 서로 다른 프로세스의 작업이 끝나기를 기다리다가 아무도 작업을 진행하지 못하는 상태
  • 식사하는 철학자
  • 교착 상태의 필요조건 - 이 중 하나라도 충족하지 않는다면 교착 상태는 발생하지 않음
    1. 상호배제 - 한 리소스가 점유당했다면, 그 리소스는 다른 프로세스에게 공유가 되면 안됨
    2. 비선점 - 프로세스는 다른 프로세스는 자원을 뺏을 수 없음
    3. 점유와 대기 - 어떤 프로세스가 리소스 A를 가진 상태에서 리소스 B를 원하는 상태
    4. 원형 대기 - 점유와 대기를 하는 프로세스들의 관계가 원형을 이룸

 

✏️ 데드락 해결(feat. 은행원 알고리즘)

  • 교착상태 회피(Deadlock avoidance) - 프로세스들에게 자원할당 시 교착상태가 발생하지 않는 수준의 자원 할당
    • 전체 자원의 수와 할당된 자원의 수에 따라 안정 상태(Safe state)와 불안정 상태(Unsafe State)로 나뉨
    • 운영체제는 최대한 안정상태를 유지하려고 자원 할당을 함
    • 불안정 상태에 있다고 무조건 교착 상태에 빠지는 것은 아님 (교착 상태에 빠질 확률이 높음)
  • 은행원 알고리즘 - 교착상태를 피하는 좋은 방법이지만 비용이 비싸고 비효율적
  • 교착 상태 검출
    • 가벼운 교착 상태 검출 - 타이머 이용해 프로세스가 일정시간 동안 작업을 하지 않는다면 교착상태가 발생했다고 간주하고 교착상태 해결(일정 시점마다 체크포인트를 만들어 작업 저장하고 타임아웃 시 마지막으로 저장했던 체크포인트로 롤백; 롤백 & 빽섭과 같은 맥락)
    • 무거운 교착 상태 검출 - 자원 할당 그래프를 이용. 지속적으로 자원할당그래프를 검사해야 하기에 오버헤드 발생 가능. 가벼운 교착 상태에서의 갑작스런 프로세스 종료는 발생하지 않음

'운영체제' 카테고리의 다른 글

8. 입출력 장치  (0) 2022.05.21
6. 메모리  (0) 2022.05.14
3. 프로세스 동기화  (0) 2022.05.14
2. CPU 스케줄링  (0) 2022.05.07
1. 프로세스와 쓰레드  (0) 2022.05.06