Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University."— Presentation transcript:

1 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 yjuly0708@hanyang.ac.kr rooterby@gmail.com

2 2 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 2 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Contents  About IPC  Shared Memory  Quiz #1

3 3 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 3 Real-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

4 4 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 4 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr About IPC  Signal  Pipe  Shared Memory  Message Queue

5 5 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 5 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Memory Space  모든 프로세스는 동작에 필요 한 자료를 저장하기 위한 메모 리 공간을 가지고 있음  프로세스는 동작 시작 시 혹은 실행 중에 이러한 메모리 공간 을 Kernel 에 요구하여 공간을 할당 받아 사용

6 6 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 6 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory  프로세스들이 공통으로 접근, 사용할 수 있는 메모리  메모리 영역을 공유해서 사용함으로써 프로세스 간 통신이 가능  데이터가 메모리에 계속 유지되어 있기 때문에, 여러 번 접근할 수 있 다.  같은 값에 대해서 여러 프로세스가 값을 공유해야 될 때 사용하면 효과 적이다. Process 1 Process 2 Process n … Shared Memory Shared Memory

7 7 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 7 Real-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 로 정의되어 있다.

8 8 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 8 Real-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 : 현재 접근한 프로세스 수

9 9 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 9 Real-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

10 10 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 10 Real-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, 파일접근권한 등 …

11 11 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 11 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory  함수 shmget  Handler function (ipc/shm.c)

12 12 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 12 Real-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 을 설정하면 읽기 / 쓰기 모드

13 13 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 13 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory  함수 shmat  Handler function (ipc/shm.c)

14 14 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 14 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory  함수 shmat  Handler function (ipc/shm.c)

15 15 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 15 Real-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 에 의해 삭제표시가 되면 공유 메모리는 삭제됨 )

16 16 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 16 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory  함수 shmdt  Handler function (ipc/shm.c)

17 17 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 17 Real-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 : 공유 메모리 정보를 구하기 위한 버퍼 포인터

18 18 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 18 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory  함수 shmctl  Handler function (ipc/shm.c)

19 19 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 19 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory 실습 – server

20 20 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 20 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory 실습 - client

21 21 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 21 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Shared Memory 실습 - 실행화면  두 개의 프로그램을 각각의 터미널에서 실행시키면, 아래그림과 같이 메시지를 번갈아 가면서 주고 받는 것을 확인할 수 있습니다.

22 22 Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 22 Real-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 주차 이후에 다룰 예정 입니다.


Download ppt "Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University."

Similar presentations


Ads by Google