전공/운영체제

7장

twoweeks-within 2025. 4. 13. 14:43

system modeling

 

system : with resource (with instance)

ex) CPU,메모리,I/O device 라는 리소스에 process,메모리영역 과같은 인스턴스

 

CS : 그 Resource를 접근하려는 code의 영역!

 

process의 resource활용

  1. request > 2.use > 3. release 

 

Deadlock with semaphore

공유변수) Data S1 =1 ,s2=2 (binary sema) 

process) P1,P2

P1]
wait(s1) // 1. s1 : 실행 > C/S
wait(s2) // 3. P2에 의해 wait


[p2]
wait(s2) // 2. s2 : 실행 > C/S
wait(s1) // 4. P1 에 의해 wait
>> 교착상태 Deadlcok발생!

 

Deadlock의 발생조건 !! 

 1. Mutual exclusion : 1Process에서  1개의 Resource 사용

 2. Hold and Wait      : 1Process 가 1Resource 사용할때(Hold) 다른걸 요청시 wait

 3. No preeption        : 우선순위에 의한 뺏기 X

 4. Circular wait         :  서로가진채 서로의 것을 요구 > wait  

> 4가지가 동시에 발생되어야함

 

Allocation Graph

 

 

둘다 Cycle 존재 O , 리소스안에 있는 동그라미 : instance

그림1) Deadlock 발생!

그림2) Deadlock 발생X !

 

그림1의 경우 Deadlock 발생 가능성 있음! ㅁ많이

그림 2의 경우 일시적 Deadlock 발생 하더라도 ex) R2에서 T3가 자원할당 해제시 Deadlock 해제!

  > P가 2개라면 자원의 instance도 2개여야함

//

//Process    -> Resource :: request  요청하는것

//Recource  -> Process   :: Assignment 할당된것

//

 

실제 사용은.. 데드락을 생겨도 OK 함  

  > 프로그래머의 잘못인 경우가 많으므로..

 

데드락이 안생기게 하려면? 

   > 위의 4가지 조건중 한개만이라도 발생하지 못하도록하자

1. CS 를 사용X(공유자원 update X) -> ReadOnly file만 사용

2. P1 -> R1 사용중이면 R2, R3에 접근못하도록함 or R1,R2,R3,, 모든 R을 한번에 사용할때만 허용

    or 잡고있던 R을 놓고 가도록함

3. 우선순위가 높은 놈이 요청하면 내어줌 > preemption 허용

4. cycle 이존재하지않도록함 > 리소스에 순서를 매기고 , process들이 R을 순서대로 사용 

 

Cuircular wait conditon 만족 X

first mutex = 1

second mutex =5 

  > 이런식으로 순서대로 하도록 해줘야함

 

safe state : 모든 프로세스에 대해 실행 완료할 수 있는 순서(sequence)가 존재하는 상태

process -> Available resource 요청

  > 시스템이 줘도 유지가능한지 확인

     > 가능 하면 OK

 단점) 각 P가 리소스를 얼마나 요구하는지를 미리 알고있어야함    

      > resolve_allocation state 

 

시스템은 P가 요청을 했을때도 시스템이 safe state를 유지해야함

     > 유지가능하면 허용 <> 대기

>>

sequence (pi~pn)

pi 리소스가 즉시이용X > pi는 대기

or 허용 받아 pi 리소스 사용끝나면 반납후 끝냄

   > pi + 1 이용가능

 

system in safe state : No dead lock

    "        unsafe         :  Dead lock 가능성 있음!

Avoidence : 시스템 All safe state 

 

R당 instance 1개      : Resource allocation graph

R당 instance 여러개 : Banker's Algorithm

 

 Resource allocation graph ( p==t)

1. clame edge :  Pi -> Ri <- pj

    (사용할거야)  // T - - - > R : 점선

2. request edge  : Pi -> Ri

    ( 사용할래 //지금) // T ---->R : 실선

3.  assignment edge : R --->T  

    ( 할당될때)

>>

2. -> 3. 으로 갈때 사이클이 없으면 허용함

 즉, R한개를 한개의 P 만 사용하는 상황일때

   > 사이클 생성 X

단점) 얼만큼 리소스를 Process하는지 알고있어야함

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

8장  (0) 2025.04.15
6장-2  (0) 2025.04.10
6장  (0) 2025.04.05
4장  (0) 2025.03.31
3장  (0) 2025.03.31