Abstract View of System Components - RTCC...
Transcript of Abstract View of System Components - RTCC...
Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
운영체제실습- Synchronization -
Real-Time Computing and Communications Lab.
Hanyang University
2Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 2Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Introduction
조교소개▪ 이름 : 임정택
▪ Tel : 010 - 4780 - 9294
▪ E-Mail : [email protected]
▪ 이름 : 최대호
▪ Tel : 010 - 9872 - 9353
▪ E-Mail : [email protected]
▪ 이름 : 박준형
▪ Tel : 010 - 2859 - 6858
▪ E-Mail : [email protected]
▪ 실습관련질문시제목을아래의양식에맞춰서메일을보내주세요
• ex> [운영체제] 학번_이름
3Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 3Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
실습계획
주차 내용 과제
1주차 실습소개, 환경구성
2주차 시스템콜추가, 과제설명 ★
3주차 시스템콜분석(fork 분석), 과제설명 ★
4주차 스케줄러 ★
5주차 스케줄러
6주차 프로세스통신 ★
7주차 프로세스통신
8주차 중간고사휴강
9주차 Syncronization ★
10주차 Syncronization ★
11주차 메모리관리 ★
12주차 메모리관리
13주차 파일시스템 or 디바이스 드라이버 ★
14주차 파일시스템 or 디바이스 드라이버
15주차 휴강대비
16주차 기말고사휴강
4Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 4Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Contents
Process Synchronization
Mutex
Semaphore
과제
5Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 5Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Process Synchronization
데이터의일관성을위해 shared data에대한동시접근을제어하는것
일관성을유지하기위해서는관련된프로세스들이순차적으로실행되는보장하는방법이요구됨
6Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 6Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
The Critical-Section Problem
N개의프로세스들은서로 shared data를사용하기위해경쟁한다.
shared data에접근하는코드부분을 critical section이라고한다.
critical section은한번에하나의프로세스만접근가능하다.
7Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 7Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
The Critical-Section Problem
시스템은동시에두개의프로세스가 critical section 코드부분을수행하지않게해야함.
각각의프로세스들은동기화를위해사용하기위한변수를공유한다.
General process Pi
▪ entry section : critical section에
들어가기위한요청을수행
▪ exit section : critical section의수
행이끝난후출구부분
▪ remainder section :코드의나머
지부분
8Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 8Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Mutex
Critical section으로들어가기위한하나의키.
어떤 thread가키를얻어서 critical section에진입하면, 다른 thread는키를얻을때까지기다리게됨.
9Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 9Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Mutex
Mutex mechanism
10Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 10Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Mutex functions
Header File : pthread.h
Mutex초기화▪ int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
▪ mutex : 초기화할mutex의 pointer
▪ mutexattr : mutex의특성을설정할때사용 (사용하지않을경우 NULL)
Mutex lock
▪ int pthread_mutex_lock(pthread_mutex_t *mutex);
Mutex unlock
▪ int pthread_mutex_unlock(pthread_mutex_t *mutex);
Mutex제거▪ int pthread_mutex_destory(pthread_mutex_t *mutex);
▪ 사용하고난뒤 mutex와 resource 해제
모든함수는성공시 0을 return
11Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 11Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Mutex
12Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 12Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Mutex
pthread compile
▪ gcc command에서 -lpthread옵션을추가
13Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 13Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Semaphore
Mutex와같이 critical section에대한접근을제한하는키로활용됨
integer variable S를가지며, 2개의 atomic operation을통해접근제어가수행됨▪ P(S) : wait function
▪ V(S) : signal function
14Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 14Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Semaphore functions
Header file : semaphore.h
Semaphore 초기화▪ int sem_init(sem_t *sem, int pshared, unsigned int value);
▪ sem : 초기화할 semaphore 객체
▪ pshared : 0이아니면프로세스들간에 semaphore를공유. 0이면프로세스내부에서만 semaphore를사용
▪ value : semaphore 초기값
Semaphore value 감소▪ int sem_wait(sem_t *sem);
▪ int sem_trywait(sem_t *sem);
▪ sem_wait : semaphore 값이 0보다크면프로세스는 semaphore를얻은뒤감소시키고즉시리턴값을반환한다.
semaphore 값이 0이면 0보다커지거나 signal이발생할때까지대기한다.
▪ sem_trywait : sem_wait과기본적으로같지만, 즉시 semaphore를감소시키고리턴값을반환한다는점이다르다.
15Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 15Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Semaphore functions
Semaphore value 증가▪ int sem_post(sem_t *sem);
Semaphore value 저장▪ int sem_getvalue(sem_t *sem, int *sval);
▪ sval이가리키는위치에 sem의현재값을저장
Semaphore 삭제▪ int sem_destory(sem_t *sem);
▪ semaphore를포함해관련된 resource를모두해제
16Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 16Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Semaphore
Example
17Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 17Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Semaphore
Example 결과
18Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 18Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
The Dining Philosopher Problem
여러프로세스가동시에돌아갈때교착상태가나타나는원인을직관적으로보여주는문제
다섯명의철학자가앉아있고, 철학자의양옆에는젓가락이하나씩놓여져있음
최대네명의철학자가동시에식사를할수있다
양쪽젓가락이모두사용가능할때에만젓가락을잡을수있다.
철학자가식사를하기위해서는양옆의 2개의젓가락을동시에들어야함
19Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 19Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
과제
주어진 Skeleton Code와 Semaphore API를이용하여, Dining Philosopher Problem을해결
앞에나온해결책들이외에 Deadlock을해결하면서더효율적인알고리즘이있다면그것을사용해도무방
▪ 철학자들이균등하게식사한다.
각각의철학자는 HUNGRY, EATING, THINKING 상태를가진다.
초기상태는 THINKING이다.
젓가락을놓는순간, THINKING 상태로돌입한다.
THINKING -> HUNGRY, EATING -> THINKING 의상태변화는 10~100msec 후일어난다.
20Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 20Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
과제
Skeleton Code>
21Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 21Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
과제
Skeleton Code>
22Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 22Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
과제
잘못된알고리즘으로이문제를해결하려고하면아래와같이 Deadlock이발생할수있다.
23Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 23Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
과제
Example>
오른쪽그림은 10초동안동작시킨모습이다.
각각의철학자들은현재자신의상태를출력한다.
최종적으로주어진동작시간동안식사한총횟수를출력해준다.