Abstract View of System Components - RTCC...

24
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 [email protected] [email protected] [email protected]

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

[email protected]

[email protected]

[email protected]

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초동안동작시킨모습이다.

각각의철학자들은현재자신의상태를출력한다.

최종적으로주어진동작시간동안식사한총횟수를출력해준다.

24Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 24Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

과제

Due: 2017/05/16 23:59:59

▪ 보고서

• 과제내용요약

• 코드작성부분에대한스크린샷과설명

• 최종결과스크린샷(터미널창에서의결과화면)

▪ Code 전문은 git에올려야함