티스토리 뷰
### 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 |