[운영체제 스터디] - 6. 병행 제어Ⅱ

Ader(아더)·2022년 3월 12일
0

OS

목록 보기
6/11
post-thumbnail

[6주차] - 병행 제어Ⅱ


1. Deadlock and Starvation

  • Deadlock
    • 둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 event를 무한히 기다리는 현상
    • 자원을 획득하는 순서를 조정해주면 Deadlock 해결 가능
  • Starvation
    • 특정 프로세스들만 자원을 공유하는 경우 다른 프로세스를 깨우지 않고 자기들끼리만 작업을 진행하는 현상

2. 동기화와 관련된 문제 3가지

  • Bounded-Buffer Problem
  • Readers-Writers Problem
  • Dining-Philosophers Problem

3. 모니터

  • 세마포어의 문제점
    • 코딩하기 힘들다
    • 정확성의 입증이 어렵다
    • 자발적 협력이 필요하다
    • 한 번의 실수가 모든 시스템에 치명적 영향을 미친다
  • 모니터
    • 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct
    • 모니터는 공유자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간에 동기화를 시킨다.
    • 모니터의 작동원리
      • 임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 P()나 V()를 사용하지 않고 모니터에 작업 요청을 한다
      • 모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에 알려준다
      • 객체지향 느낌과 비슷하다

4. 교착상태(Deadlock)

  • 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 교착상태라고 함
  • Deadlock 발생의 4가지 조건
    • Mutual Exclusion
      • 매 순간 하나의 프로세스만이 자원을 사용할 수 있음
    • No Preemption
      • 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음
    • Hold and wait
      • 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음
    • Circular wait
      • 자원을 기다리는 프로세스간에 사이클이 형성되어야 함

5. 자원할당 그래프

  • 자원할당 그래프는 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것이다
  • 자원할당 그래프를 사용하면 어떤 프로세스에 자원이 할당되어 있는지 혹은 어떤 프로세스가 자원을 기다리고 있는지를 한눈에 파악할 수 있다
  • 그래프에 싸이클이 없으면 데드락이 아니다

6. Deadlock의 처리 방법

  • Deadlock Prevention
    • 자원 할당 시 Deadlock의 4가지 필요 조건 중 어느 하나가 만족되지 않도록 하는 것
  • Deadlock Avoidance
    -자원 요청에 대한 부가적인 정보를 이용해서 deadlock의 가능성이 없는 경우에만 자원을 할당
    • 시스템 state가 원래 state로 돌아올 수 있는 경우에만 자원 할당
  • Deadlock Detection and recovery
    • Deadlock 발생은 허용하되 그에 대한 detection 루틴을 두어 deadlock 발견 시 recover
  • Deadlock Ignorance
    • Deadlock을 시스템이 책임지지 않음
    • UNIX를 포함한 대부분의 OS가 재택

본 포스팅은 반효경 교수님의 2017 운영체제 강의를 바탕으로 제작되었습니다.

profile
하루하루 성장하는 개발자

0개의 댓글