티스토리 뷰

운영체제/이론

(30) Critical Section(임계구역)

geonwoopaeng@gmail.com 2020. 9. 23. 00:09

### Critical Section(임계구역) ###

while (true){
	//entry section 
    	
        critical section 
        
    // exit section 
    
    	remainder section
	}

 

 

< Critical section > 

: 각 process 별로 포함하고 있는 code 집합(다른 process와 같이 접근 가능한 code영역)

=> 여러개 process가 공통의 data에 접근하기 때문에 data inconsistency 발생

: data inconsistency같은 문제 막기위한 제약조건

=> process 1개가 critical section에 진입을 하여 code 수행하면 다른 process들은 critical section에 접근 불가

(2개 이상의 process가 critical section에 접근 불가)

< Entry section >

: process가 critical section에 접근하기 전에 가능 여부 확인 구간

< Exit section >

: critical section에서 작업이 끝난 후 process가 나왔다는 것을 다른 process에게 알려주는 영역

< Remainder section >

: data inconsistency를 일으키지 않는 영역

: process code중 critical section, entry section, exit section이외의 영역

 

### Critical Section Solution ###

1. < Mutual exclusion(상호배제) >

: process가 critical section에서 실행중인 경우 다른 process는 critical section에서 실행 될 수 없게 하는 것

=> single core인 경우 해결 가능

2. < Progress(진행) >

: critical section에 process가 없는 경우 & 일부 process가 critical section에 들어가기를 원하는 경우

=> process가 나머지 section에서 실행되고 있지 않으면 process는 critical section에 들어가야 한다. (선택을 무기한 연기 할 수 없습니다.)

==>>critical section에 들어가 다음 process를 선택 해야만 한다.

3. < Bounded waiting(한정된 대기) >

: process가 critical section에 들어가도록 요청한 후 요청이 승인되기 전 상황

: 다른 process가 critical section에 들어갈 수 있는 횟수에 제한이 있어야 합니다.

(요청하고 요청이 받아들이는 총 대기 시간이 유한해야 한다

 

=> 대기하는 process는 꼭 critical section에 들어가야 한다.)

==>> critical section에 들어가기 위해 대기중인 process에 starvation이 발생하면 안된다.

### Interrupt based Solution ###

1. < Disabling / enabling Interrupts(interrupt 비활성화/활성화) >

1. Entry section -> critical section: disable interrupt

(interrupt가 발생하지 못하게 한다)

=> critical section에서 process가 실행되는 중간에 interrupt가 발생해서 다른 process로 cpu점유가 넘어가지 않는다.

(실행 중간에 다른 process가 껴들지 못하게 하여 data inconsistency발생을 막는다)

2. Critical section -> exit section: enable interrupt

(interrupt가 다시 되게 한다)

2. < Disadvantages(단점) >

: Critical section에 대한 instruction code가 1시간 동안 실행되면 다른 process가 들어오지 못한다.

: starvation (일부 process가 고갈될 수 있다(never enter their critical section))

: cpu가 여러개인 경우에도 다른 process에게도 disable interrupt를 명령하여 critical section 진입 시간이 길어진다.

반응형

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

(32) Mutex Lock & Semaphore  (0) 2020.09.23
(31) Hardware Support Synchronization  (0) 2020.09.23
(29) Synchronization Tools - 2  (0) 2020.09.21
(28) Synchronization Tools - 1  (0) 2020.09.21
(27) Multilevel Queue (CPU scheduling)  (0) 2020.09.20
공지사항
최근에 올라온 글