[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() {
... }
}
Leave a comment