티스토리 뷰
동기화에서의 전통적 문제.
(1) Bounded Buffer Problem
(2) Readers and Writers Problem
(3) Dining Philosophers Problem
(1) Bounded Buffer Problem
Producer-Consumer Process로 Producer는 버퍼에 데이터를 넣고 Consumer는 읽어온다. 동기화를 사용하지 않을 경우 한번씩 실행되는 것을 보장할 수 없으므로 버퍼가 넘칠 수 있다. 동기화 메커니즘을 이용해 해결 가능하다.
semaphore mutex : 값 1
(1) Bounded Buffer Problem
(2) Readers and Writers Problem
(3) Dining Philosophers Problem
(1) Bounded Buffer Problem
Producer-Consumer Process로 Producer는 버퍼에 데이터를 넣고 Consumer는 읽어온다. 동기화를 사용하지 않을 경우 한번씩 실행되는 것을 보장할 수 없으므로 버퍼가 넘칠 수 있다. 동기화 메커니즘을 이용해 해결 가능하다.
semaphore mutex : 값 1
semaphore full : 값 0
semaphore empty : 값 N
-Producer Process
do{
semaphore empty : 값 N
-Producer Process
do{
// produce
wait(empty);
wait(mutex);
// item 버퍼에 넣음
signal(mutex);
signal(full);
wait(empty);
wait(mutex);
// item 버퍼에 넣음
signal(mutex);
signal(full);
}while(TRUE);
-Consumer Process
do{
-Consumer Process
do{
wait(full);
wait(mutex);
// 버퍼에서 item 가져옴
signal(mutex);
signal(empty);
// item 사용
wait(mutex);
// 버퍼에서 item 가져옴
signal(mutex);
signal(empty);
// item 사용
}while(TRUE);
(2) Readers-Writers Problem
Readers : data set을 읽기만 하고 업데이트 하지 않음
Writers : 읽고 쓰고 다함
문제점-->여러 Reader들이 동시에 읽고 1 Writer만 공유 데이터 접근하도록!
Semaphore mutex-1
Semaphore wrt-1
-Writer Process
do{
(2) Readers-Writers Problem
Readers : data set을 읽기만 하고 업데이트 하지 않음
Writers : 읽고 쓰고 다함
문제점-->여러 Reader들이 동시에 읽고 1 Writer만 공유 데이터 접근하도록!
Semaphore mutex-1
Semaphore wrt-1
-Writer Process
do{
wait(wrt);
// 읽고 쓴다
siganl(wrt);
// 읽고 쓴다
siganl(wrt);
}while(TRUE);
-Readers Process
do{
-Readers Process
do{
wait(mutex);
readcount++;
if(readcount==1)
readcount++;
if(readcount==1)
wait(wrt);
signal(mutex);
// 읽는다
wait(mutex);
readcount--;
if(readcount==0)
// 읽는다
wait(mutex);
readcount--;
if(readcount==0)
signal(wrt);
signal(mutex);
}while(TRUE);
(3) Dining Philosophers 문제
<Priority Inversion>
우선순위는 해당 프로세스의 importance나 urgency를 나타내는데 Priority Inversion은 그러한 principle of priority based scheduling을 위반하는 것으로 낮은 우선순위의 태스크가 높은 우선순위의 태스크 실행을 block하는 것을 말한다. 일반적으로 그리 중요하지 않을 수 있지만 어떠한 경우에 있어서 큰 문제를 가져올 수 있다.
해결책 -> Priority Inheritance : 공유 자원을 가지고 있는 낮은 우선순위의 태스크의 우선순위를 공유 자원을 요청하는 높은 순위의 태스크만큼 높인다.
(3) Dining Philosophers 문제
<Priority Inversion>
우선순위는 해당 프로세스의 importance나 urgency를 나타내는데 Priority Inversion은 그러한 principle of priority based scheduling을 위반하는 것으로 낮은 우선순위의 태스크가 높은 우선순위의 태스크 실행을 block하는 것을 말한다. 일반적으로 그리 중요하지 않을 수 있지만 어떠한 경우에 있어서 큰 문제를 가져올 수 있다.
해결책 -> Priority Inheritance : 공유 자원을 가지고 있는 낮은 우선순위의 태스크의 우선순위를 공유 자원을 요청하는 높은 순위의 태스크만큼 높인다.
'Computer Science' 카테고리의 다른 글
PL Ch 3. 정리 (0) | 2011.05.16 |
---|---|
[Algorithms] KMP 알고리즘 (0) | 2011.04.30 |
운영체제 동기화 부분(1) (2) | 2011.03.31 |
[자료구조] AVL 트리 (0) | 2011.03.30 |
운영체제 10장 File System Mounting (2) | 2011.03.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- android
- statistical learning
- reversing
- 자료구조
- Machine Learning
- 리버스엔지니어링
- 기계학습
- 알고리즘
- 안드로이드
- java
- 데이터 사이언스
- 리눅스
- 이산수학
- 자바
- operating systems
- 대학원
- 통계학습
- linux
- Data Science
- 데이터 과학
- 카타르 음주
- 운영체제
- 머신러닝
- 리버싱
- Algorithms
- 개발
- Discrete Mathematics
- 카타르
- Data Structure
- Reverse Engineering
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함