operating system...

27
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 Operating System 9 주차 - IPC( InterProcess Communication) - Real-Time Computing and Communications Lab. Hanyang University [email protected] [email protected] [email protected]

Upload: others

Post on 27-Dec-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Operating System 9주차- IPC(InterProcess Communication) -

Real-Time Computing and Communications Lab.

Hanyang University

[email protected]

[email protected]

[email protected]

Page 2: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Contents

About IPC

Shared Memory

Mutex

Semaphore

Quiz #1

과제 4

Page 3: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

About IPC

프로세스간통신(Inter Process Communication, IPC)이란프로세스들사이에서로데이터를주고받는행위또는그에대한방법이나경로를뜻한다.

IPC를 통해프로세스들은다음이수행가능하다.

Data transmission

Data sharing

Event Alarm

Resource sharing

Page 4: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

About IPC

Signal

Pipe

Shared Memory

Message Queue

Page 5: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Memory Space

모든프로세스는동작에필요한자료를저장하기위한메모리공간을가지고있음

프로세스는동작시작시혹은실행중에이러한메모리공간을 Kernel에 요구하여공간을할당받아사용

Page 6: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

프로세스들이공통으로접근, 사용할수있는메모리

메모리영역을공유해서사용함으로써프로세스간통신이가능

데이터가메모리에계속유지되어있기때문에, 여러번접근할수있다.

같은값에대해서여러프로세스가값을공유해야될때사용하면효과적이다.

Process 1 Process 2 Process n…

Shared

Memory

Page 7: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

Shared Memory 구조 Shared memory 구조를관리하기위한자료구조

세그먼트의크기, creator 프로세스 ID, attach time 등과같은여러정보가저장된다.

include/uapi/linux/shm.h에 struct shmid_ds로정의되어있다.

Page 8: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

Shared Memory 구조 struct shmid_ds

• shm_perm : 공유메모리퍼미션

• shm_segsz : 세그먼트의크기 (bytes)

• shm_atime : 마지막으로접근한시간

• shm_dtime : 마지막으로제거된시간

• shm_ctime : 마지막으로변경된시간

• shm_cpid : 공유메모리를만든프로세스 ID

• shm_lpid : 마지막으로작동한프로세스 ID

• shm_nattch : 현재접근한프로세스수

Page 9: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

Shared Memory 리소스확인 Maximum number of segments

• $ cat /proc/sys/kernel/shmmni

Maximum size of a single shared memory segment

• $ cat /proc/sys/kernel/shmmax

The sum of all shared memory segments on the whole

system

• $ cat /proc/sys/kernel/shmall

Page 10: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmget

공유메모리의 ID를반환하는함수

Def : int shmget(key_t key, int size, int shmflg)

Parameters

• key : 생성되는공유메모리를식별하기위한값

• size : 생성할공유메모리의크기

• shmflg : 공유메모리생성옵션으로 IPC_CREAT, 파일접근권한등…

Page 11: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmget

Handler function (ipc/shm.c)

Page 12: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmat

생성된공유메모리에물리적주소를자신의프로세스가할당하는가상메모리와연결시켜주는함수

Def : void *shmat(int shmid, const void *shmaddr, int shmflg);

Parameters

• shmid : shmget가반환하는값

• shmaddr : 프로세스의메모리주소로 0을넣으면커널이자동으로빈공간을찾아서할당해줌.

• shmflg : 공유메모리옵션으로 0을설정하면읽기/쓰기모드

Page 13: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmat

Handler function (ipc/shm.c)

Page 14: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmat

Handler function (ipc/shm.c)

Page 15: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmdt

프로세스와공유메모리의연결을분리하는함수

Def : int shmdt (const void *shmaddr)

Parameter

• shmaddr : 분리할공유메모리주소

shmdt함수는 shmid_ds구조체의정보를갱신

• shm_dtime : detach time을 shmdt함수가호출된시간으로갱신

• shm_lpid : 호출한프로세스의 ID로 갱신

• shm_nattach : 1 감소 (0이되어 shmctl에의해삭제표시가되면공유메모리는삭제됨)

Page 16: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmdt

Handler function (ipc/shm.c)

Page 17: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmctl

공유메모리에대한정보를구하거나변경또는제거하는함수

Def : int shmctl(int shmid, int cmd, struct shmid_ds *buf)

Parameters

• shmid : 공유메모리번호 (shmget이반환하는값)

• cmd : 제어명령

IPC_STAT : 공유메모리 공간에 관한 정보를 가져옴

IPC_SET : 공유 메모리 공간에 대한사용자 권한 변경

IPC_RMID : 공유 메모리공간을 삭제 (shm_nattach가 0일 때까지 기다렸다가 삭제됨)

• buf : 공유메모리정보를구하기위한버퍼포인터

Page 18: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory

함수 shmctl

Handler function (ipc/shm.c)

Page 19: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를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

Shared Memory 실습 – server

Page 20: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory 실습 - client

Page 21: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Shared Memory 실습 -실행화면

두개의프로그램을각각의터미널에서실행시키면, 아래그림과같이메시지를번갈아가면서주고받는것을확인할수있습니다.

Page 22: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

Quiz #1

Shared Memory를통한채팅프로그램구현 앞에서소개한공유메모리API와 pthread를통해구현

각각의프로세스들은공유메모리를통해자신이입력한값을서로주고받을수있어야함

프로세스는Reader thread와Writer thread를생성

• Reader thread : 공유메모리의내용을읽어사용자화면으로출력

똑같은 Data를 2번이상읽지않음.

같은프로세스내Writer thread가작성한 Data는읽지않는다.

• Writer thread : 공유메모리에사용자로부터입력받은내용을기록

동기화문제는발생하지않는다고가정한다.

• 11주차이후에다룰예정입니다.

Page 23: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

과제 #4

1. 구현되어있는Message Queue커널코드를수정하여특정PID를검사하여출력하는Message Queue 함수를구현

Test Program

• Sender : 사용자로부터 Message를 보내고자 하는 Process ID를입력 받는 프로그램(Sender_PID), 일반적으로 보내는 프로그램 (Sender)로 구성

• Receiver : MessageQueue에서 데이터를 검사하는 도중 PID의값이 0보다 큰데이터를 찾을 경우 커널프린트를 사용하여 출력

Edited (or New) Functions

• msgsnd : ‘pid’ parameter를 추가, 새로운 시스템 콜로생성 혹은 수정

• msgrcv : 메시지 큐에서 pid값이 있는데이터를 받을 경우 커널프린트로 PID가존재하는 데이터를 찾았다는 메시지를 출력

Page 24: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

과제 #4

Example

IPC Pid Insert Success : msgsnd에서 Insert 에성공했을 경우

Do_msgrcv success :

msgrcv에 접근이 성공할 경우

Find QueueMessage : Pid가 0이상인 데이터를 찾을 경우

PID Data is Not NULL !!:

PID 데이터가 NULL이 아닐 경우

Message queue success : msgrcv에서 메시지를 정상적으로 꺼내올 경우

Page 25: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

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

http://rtcc.hanyang.ac.kr

과제 #4

Due : 2015/05/06 실습수업시간

보고서

• 표지

• 과제내용요약

• User 프로그램에서 Kernel 부분으로들어가서전체적으로어떻게흐름이돌아가는지간단하게설명

• Kernel Code 수정한부분에대한설명 (스크린샷첨부할것)

• 추가한시스템콜이있다면전체적인수정위치를스크린샷으로찍어첨부할것

• 최종결과스크린샷및분석

Page 26: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

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

http://rtcc.hanyang.ac.kr

과제4

문의사항 이름 : 임정택

Tel : 010 - 4780 - 9294

E-Mail : [email protected]

이름 : 최윤식

Tel : 010 - 7970 - 0906

E-Mail : [email protected]

이름 : 박성현

Tel : 010 - 6612 - 8957

E-Mail : [email protected]

실습관련질문시제목을아래의양식에맞춰서메일을보내주세요

• ex> [운영체제] 학번_이름

지연제출에대해서는감점이있을수있음.

Page 27: Operating System 9주차osdc.hanyang.ac.kr/sitedata/2016_Under_OS/OS_Practice_09_IPC_02.pdf프로세스는Reader thread와Writer thread ... 똑같은Data를2번이상읽지않음

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

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

http://rtcc.hanyang.ac.kr

과제4 -힌트

Linux-해당버전 / ipc / msg.c <- do_msgsnd_xxx 추가및 pid parameter 추가

Do_msgsnd에 있는코드를복사하여붙여넣기

System call ( 3 ~ 4장 ) 참고하여시스템콜추가

Linux-해당버전 / include / linux / msg.h의 msg_msg 구조에 pid 추가및위의함수추가

Msgrcv는 pid를검사하여스크린샷과같이나올수있도록수정만할것

기타문의사항은 [email protected]로 문의할것