[OS]운영체제_9

Updated:

교착상태 (Deadlocks)

  • 프로세스는 실행을 위해 여러 자원을 필요로 한다.
    • CPU,메모리,파일,프린터, ..
    • 어떤 자원은 갖고 있으나 다른자원을 갖지 못할때
    • 다른 프로세스 역시 다른 자원을 가지려고 대기할때 교착상태 가능성
  • 교착상태 필요조건
    • Mutual exclusion (상호베타)
    • Hold and wait (보유 및 대기)
    • No Preemption(비선점)
    • Circular wait(환형대기)

교착상태처리

  • 교착상태 방지
  • Deadlock Prevention
  • 교착상태 4가지 필요조건중 하나라도 만족 안되게해야함
  • 상호베타를 깨는방법
    • 자원을 공유 가능하게, 원천적으로 불가능 하다 (CPU , MEMORY , DESC )등을 공유하는것은 불가능에 가깝다
  • 보유 및 대기를 깨는 방법
    • 자원을 가지고 있으면서 다른 자원을 기다리지 않게
    • 자원이 없는 상태에서 모든 자원대기 , 일부 자원만 가용하면 보유자원을 모두 놓아주기
    • 단점 : 자원활용률 저하 , 기아
  • 비선점
    • 자원을 강제로 뺏어서 선점가능하게 , 원천적불가능 하다(예: 프린터)
  • 환형대기
    • 자원에 번호부여 , 번호 오름차순으로 자원 요청
    • 단점 : 자원활용률 저하
  • 교착상태 회피
  • Deadlock avoidance
    • 교착상태 = 자원 요청에 대한 잘못된 승인
  • 예제
    • 12개의 magnetic tape 및 3개의 process
    • 안전한 할당(Safe allocation)
Process Max needs Current needs
p0 10 5
p1 4 2
p2 9 2
  • 불안정한 할당(Unsafe allocation)
Process Max needs Current needs
p0 10 5
p1 4 2
p2 9 3
  • 불안전 할당 > 교착상태
  • 대출전문 은행과 유사 : Banker’s Algorithm

  • 교착상태 검출 및 복구
    • 교착상태가 일어나는것을 허용
    • 주기적 검사
    • 교착상태 발생시 복구
    • 검출 : 검사에 따른 추가부담(overhead): 계산 , 메모리
    • 복구 : 프로세스 일부강제종료, 자원선점하여 일부 프로세스에게 할당
  • 교착상태 무시
    • 실제로는 잘 안일어나기 떼문에 대비책을 따로 조치 하지않음

정리

컴퓨터에서 제일 중요한 자원은 CPU이다. CPU자원을 관리하는 부서가 OS에서 Process Management 부서! CPU시간 제어 : CPU Scheduler OS안에서 CPU 동기화 관리: Process synchronization > 교착상태를 어떻게 해결하는가?

모니터

  • 모니터 (Monitor)
    • 세마포 이후 프로세스 동기화 도구
    • 세마포 보다 고수준 개념
  • 구조
    • 공유자원 + 공유자원 접근함수
    • 2개의 queues: 배타동기 + 조건동기
    • 공유자원 접근함수에는 최대 1개의 쓰레드만 진입
    • 진입 쓰레드가 조건동기로 블록되면 새 쓰레드 진입가능
    • 새 쓰레드는 조건동기로 블록된 쓰레드를 깨울 수 있다.
    • 깨워진 쓰레드는 현재 쓰레드가 나가면 재진입할 수 있다

자바 모니터

  • 자바의 모든 객체는 모니터가 될 수 있다.
    • 배타동기 : 공통변수에 한 쓰레드만 접근가능하다.synchronized 키워드 사용하여 지정
    • 조건동기 : wait() , notify() : 하나만깨움 , notifyAll() : 모두다깨움 메소드 사용
class C {
    private int value, ;
    synchronized void f() {
    ... }
    synchronized void g() {
    ... }
    void h() {
    ... }
}

Tags: ,

Categories: ,

Updated:

Leave a comment