티스토리 뷰

Race Condition : 여러 프로세스가 같은 데이터에 동시에 접근하며 조작하고 프로세스의 실행의 결과가 프로세스 실행 순서에 의존하는 상황

Critical Section : 공유 자원에 여러 프로세스가 접근하여 race condition을 야기할 수 있는 공유 데이터를 접근하는 코드의 일부분

Process Synchronization : 레이스 컨디션의 발생을 막기 위한 방법


Synchronization의 Desired Solution(완벽한 동기화를 위한 세 가지 조건)
-Mutual Exclusion : 오직 프로세스 1개만 CS에 접근 가능하다.
-Progress : CS에 있는 프로세스가 없고 한 프로세스만 CS에 진입하려 한다면 바로 진입
-Bounded Waiting : 유한시간 대기 후 CS에 진입

Synchronization 방법
-Peterson's Solution
-Hardware support
-Semaphore
-Monitor

(1)Peterson's solution
 turn : CS에 들어가는 프로세스 누구의 turn인지 명시
 flag[2] : flag[i]의 의미는 task i가 CS 들어가기 위해 대기중

Mutual Exclusion : turn이 1개의 process만 CS에 들어가도록 한다 
Progress : flag가 false이면 loop를 돌지 않으므로 T0이 CS에 없다면 T1이 CS에 들어가는 것을 막지 못한다.
Bounded Waiting : 위와 같다.

(2)
기본적인 TestandSet과 Swap은 mutual exclusion은 만족하지만 progress와 bounded waiting은 만족하지 않는다.

(3) 세마포어
busy-waiting으로 세마포어 구현 시 time slice만큼 프로세스에서 돌기 때문에 성능 저하를 가져온다.
=>block()과 wakeup()을 이용한다.
레디큐에 넣고 block().
signal()함수에서는 wakeup()으로 깨운다. 

'Computer Science' 카테고리의 다른 글

[Algorithms] KMP 알고리즘  (0) 2011.04.30
운영체제 동기화 부분(2)  (0) 2011.04.01
[자료구조] AVL 트리  (0) 2011.03.30
운영체제 10장 File System Mounting  (2) 2011.03.25
운영체제 9장 나머지랑 10장 조금  (0) 2011.03.24
댓글