티스토리 뷰
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()으로 깨운다.
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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바
- android
- Discrete Mathematics
- 머신러닝
- 기계학습
- Reverse Engineering
- 안드로이드
- 통계학습
- Machine Learning
- 카타르
- reversing
- java
- operating systems
- Data Science
- 운영체제
- 리버스엔지니어링
- 알고리즘
- Data Structure
- Algorithms
- 데이터 과학
- 대학원
- 리버싱
- 리눅스
- 카타르 음주
- 개발
- 이산수학
- 데이터 사이언스
- linux
- statistical learning
- 자료구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함