운영체제 실습 - Introduction -

Similar documents
Abstract View of System Components

메시지큐를이용한 IPC 프로그램구현과제보고서 1. 과제의목적 1 리눅스가지원하는프로세스간통신방식중다수의프로세스사이에구조화된데이터블럭, 즉메시지를전달하는데주로사용되는메시지큐방식에대하여무엇인지, 어떻게사용하는지공부한다. 2 공부한내용을점검하기위해기작성된 epda 프로세스관

Chap06(Interprocess Communication).PDF

Microsoft PowerPoint - UnixNetProg3rd_08_완.ppt [호환 모드]

<4D F736F F F696E74202D FBDC3BDBAC5DB56C0C720C7C1B7CEBCBCBDBAB0A320C5EBBDC5205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

고급 IPC 설비

Abstract View of System Components

Chapter #01 Subject

11장 포인터

PowerPoint 프레젠테이션

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Chapter 4. LISTS

03_queue

chap 5: Trees

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

고급 IPC 설비

Lab 3. 실습문제 (Single linked list)_해답.hwp

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

PowerPoint Presentation

리눅스 프로세스 관리

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - 08-chap06-Queue.ppt

슬라이드 1

슬라이드 1

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - ch07 - 포인터 pm0415

The Pocket Guide to TCP/IP Sockets: C Version

C# Programming Guide - Types

Microsoft PowerPoint - 08-Queue.ppt

UI TASK & KEY EVENT

Frama-C/JESSIS 사용법 소개

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

6주차.key

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

11장 포인터

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

The Pocket Guide to TCP/IP Sockets: C Version

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

슬라이드 1

adfasdfasfdasfasfadf

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

untitled

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx


2002년 2학기 자료구조

슬라이드 1

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

금오공대 컴퓨터공학전공 강의자료

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap10-함수의활용.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

좀비프로세스 2

Abstract View of System Components

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint Presentation

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

untitled

1217 WebTrafMon II

Microsoft PowerPoint - additional01.ppt [호환 모드]

설계란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint APUE(Intro).ppt

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint APUE(File InO).pptx

Microsoft Word - ASG AT90CAN128 모듈.doc

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>


C 언어 강의노트

1장. 리스트

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

PowerPoint Template

PowerPoint Presentation

슬라이드 1

06장.리스트

쉽게 풀어쓴 C 프로그래밍

설계란 무엇인가?

DBMS & SQL Server Installation Database Laboratory

BMP 파일 처리

Microsoft PowerPoint - 30.ppt [호환 모드]

Chap 6: Graphs

c

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

PowerPoint Presentation

Transcription:

운영체제실습 - IPC(InterProcess Communication) - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr dhchoi@rtcc.hanyang.ac.kr beespjh@gmail.com

Introduction 조교소개 이름 : 임정택 Tel : 010-4780 - 9294 E-Mail : jtlim@rtcc.hanyang.ac.kr 이름 : 최대호 Tel : 010-9872 - 9353 E-Mail : dhchoi@rtcc.hanyang.ac.kr 이름 : 박준형 Tel : 010-2859 - 6858 E-Mail : beespjh@gmail.com 실습관련질문시제목을아래의양식에맞춰서메일을보내주세요 ex> [ 운영체제 ] 학번 _ 이름 2 2

About IPC 프로세스간통신 (InterProcess Communication, IPC) 이란프로세스들사이에서로데이터를주고받는행위또는그에대한방법이나경로를뜻한다. IPC 를통해프로세스들은다음이수행가능하다. Data Transmission Data sharing Event Alarm Resource sharing 3 3

About IPC Shared Memory Message Queue 4 4

Memory Space 모든프로세스는동장에필요한자료를저장하기위한메모리공간을가지고있다. 프로세스는동작시작시혹은실행중에이러한메모리공간을 kernel 에요구하여공간을할당받아사용한다. 5 5

Shared Memory 프로세스들이공통으로접근, 사용할수있는메모리이다. 메모리영역을공유해서사용함으로써프로세스간의통신이가능하다. 데이터가메모리에계속유지되어있기때문에, 여러번접근할수있다. 같은값에대해서여러프로세스가값을공유해야될때사용하면효과적이다. Process 1 Process 2 Process n Shared Memory 6 6

Shared Memory Shared Memory 구조 Shared memory 구조를관리하기위한자료구조 segment 크기, creator process ID, Attach time 등과같은여러정보가저장된다. include/uapi/linux/shm.h파일에 struct shmid_ds로정의되어있다. 7 7

Shared Memory(ipc/shm.c) 함수 shmget 공유메모리의 ID 를반환하는함수 Def : int shmget(key_t key, int size, int schflg) Parameters key: 생성되는공유메모리를식별하기위한값 size: 생성할공유메모리의크기 shmflg: 공유메모리생성옵션으로 IPC_CREAT, 파일접근권한등의작업을함 IPC_CREAT: key 에해당하는공유메모리가없다면새로생성한다. 만약메모리가있다면무시하며생성을위해접근권한을지정해주어야한다. IPC_EXCL: 공유메모리가이미있다면실패로반환하며공유메모리에접근하지못한다. 이옵션이없어야기존공유메모리에접근할수있다. 8 8

Shared Memory 함수 shmat 생성된공유메모리에물리적주소를자신의프로세스가할당하는가상메모리와연결시켜주는함수 Def: void *shmat(int shmid, const void *shmaddr, int shmflg) Parameters shmid: shmget가반환하는값 shmaddr: 프로세스의메모리주소로 0을넣으면커널이자동으로빈공간을찾아할당해줌 shmflg: 공유메모리옵션으로 0을설정하면읽기 / 쓰기모드 9 9

Shared Memory 함수 shmctl 공유메모리에대한정보를구하거나변경또는제거하는함수 Def: int shmctl(int shmid, int 층, struct shmid_ds *buf) Parameters shmid: 공유메모리번호 (shmget이반환하는값 ) cmd: 제어명령 IPC_STAT: 공유메모리공간에관한정보를가져옴 IPC_SDT: 공유메모리공간에대한사용자권한변경 IPC_RMID: 공유메모리공간을삭제 (shm_nattach가 0일때까지기다렸다가삭제됨 ) buf: 공유메모리정보를구하기위한버퍼포인터 10 10

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에의해삭제표시가되면ㅁ공유메모리는삭제됨 ) 11 11

Shared Memory 실습 - server 12 12

Shared Memory 실습 - client 13 13

Message Queue Message Queue 란 IPC 에서 메시지단위 의송수신을가능하게해주는큐이다. Linux kernel 에서전역적으로관리되며, 모든프로세스에서접근이가능하도록구현이되어있다. 14 14

Message Queue 프로세스가생성한메시지는 IPC 메시지큐에저장되고, 다른프로세스가메시지를읽으면큐에서제거된다. 15 15

Message Queue Message Queue 구조 Message: 메시지큐에서메시지는고정된크기의헤더 (header) 와가변적인크기를가지는문자 (text) 로이루어진다. 메시지의헤더 (header) 부분에는메시지유형 (type) 을나타내는값이붙을수있다. 이값을이용해선택적으로메시지를읽는것이가능하다. include/linux/msg.h 에 struct msg_msg 로정의되어있다. 16 16

Message Queue Message Queue 구조 Message Queue: 시스템에서각각의메시지큐는 msg_queue 라는 structur 를가지게된다. msg_queue structur 는 permission 정보외에현재큐의 bytes 수, message 의개수, queue 의최대 bytes 수등의정보를가지고있다. include/linux/msg.h 에 struct msg_queue 로정의되어있다. 17 17

Message Queue Message Queue 구조 struct msg_queue 는각각의메시지와 linked list 의구조로연결되어있다. msg_queue 의 q_messages 는메시지큐의가장앞쪽의메시지와연결이되고, 각각의메시지는 m_list 를통해연결을이룬다. 18 18

Kernel s linked list 일반적인 linked list 보통의 linked list 는구현하고자하는구조체에해당구조체를가리키는포인터변수를삽입하여구현한다. 보통의 linked list 는구현할때마다여러구조체에대해해당되는 linked list 를동적으로생성해야한다는번거로움이있다. 19 19

Kernel s linked list Linux kernel 에서는일반적인방식을쓰지않고 linked list node 를 data 안에넣는방식으로구현한다. include/linux/list.h 에해당매크로들이선언되어있다. 20 20

Message Queue Message Queue 구조 Message Queue 객체 : 메시지큐가생성될때마다메시지큐에대한정보를가진객체가생성된다. 마지막으로송수신한프로세스 ID, 송수신시간, 큐의최대바이트수등여러정보가저장된다. include/uapi/linux/msg.h 에 struct msqud_ds 로정의되어있다. 21 21

Message Queue msgget function 메시지큐를생성하거나기존의메시지큐를참조하는함수 Def: int msgget(key_t key, int msgflg) Parameters key: 메시지큐를구분하기위한고유키 msgflg: 메시지큐를생성할때옵션을지정 IPC_CREAT: key에해당하는큐가있다면큐의식별자를반환하며, 없으면큐를생성한다. IPC_EXCL: key에해당하는큐가없다면생성하지만큐가있다면 -1을반환하고복귀한다. 22 22

Message Queue msgsnd function 메시지큐에해당데이터를전송하는함수 Def: int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg) Parameters msqid: 메시지큐 ID msgbuf structure 데이터전송시에사용되는메시지구조 msgbuf 의첫 4bytes 는반드시 long 타입이어야하며, 값은 1 이상이어야한다 mtext 는문자열이나 binary 등임의의데이터로사용이가능하다. msgflg: 메시지전송의옵션을지정 0: 큐에공간이생길때까지기다린다. IPC_NOWAIT: 큐에여유공간이없다면바로 -1 로복귀한다. struct msgbuf{ long mtype; // 메시지타입 > 0 chat mtext[1]; // 메시지데이터 } 23 23

Message Queue msgrcv function 메시지큐로부터데이터를수신하는함수 Def : ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtype, int msgflg) Paramters msqid : 메시지큐 ID msgp : 메시지큐에서읽은메시지를저장하는공간 msgsz : 메시지저장공간의크기 msgflg : 메시지가없는경우의옵션을지정 IPC_NOWAIT: 메시지큐에메시지가없다면기다리지않고 -1 로복귀한다. MSG_NOERROR: 메시지큐에있는자료가준비된데이터크기보다크다면초과부분을잘라내고읽어들일수있는부분만담아온다. 이옵션이없다면메시지큐에자료가있어도 -1 이반환되어실패한다. 24 24

Message Queue msgrcv function parameters msgtyp: 메시지큐에있는자료중어떤자료를읽을지에대한옵션을지정 0: 큐에자료가있다면첫번째의자료를읽어들인다. 양수 : 양수로지정한값과같은 data_type 의자료중첫번째를읽어들인다. 음수 : 음수값을절댓값으로변경하고, 이절댓값과같거나보다제일작은 data_type 의자료를구한다. 메시지큐에 data_type 이 1, 5, 15 이고 -10 을지정했다면 1 의데이터를구하게된다. 25 25

Message Queue msgctl function 메시지큐의현재상태정보를보거나변경, 삭제등을수행하는함수 Def: int msgctl(int msqid, int cmd, struct msqid_ds *buf) Parameters msqud: 메시지큐의 ID cmd: 메시지큐에대한제어명령 IPC_STAT: 메시지큐의현재상태를 buf 에저장한다. IPC_SET: 메시지큐의상태를 buf 값으로변경한다. 그러나모든정보는안되고 msg_perm 과 msg_qbytes 내용만변경할수있다. IPC_RMID: 메시지큐를삭제한다. 이때는 buf 가필요없으므로 buf 를 0 으로지정한다. buf: cmd 명령에따라동작하는메시지큐객체구조 (structure) 26 26

Message Queue_Receiver 27 27

Message Queue_Sender 28 28

과제 1. 현재구현되어있는 Message Queue 의의미구조를파악하고커널코드를수정하여 Priority 기반의새로운 Message Queue 를구현한다. Priority 는해당 task 의 Priority 를참조 Message structure 에 Priority 개념을추가하여, 우선순위가높은 task 가보낸메시지가큐의앞쪽에배치되도록변경 Test Program : 총 3 개의프로그램을통해테스트 Normal sender : nice value = 0 의우선순위를가지고메시지큐에메시지를보내는프로그램 Priority sender : 0 이아닌다른 nice value 를가지고메시지큐에메시지를보내는프로그램 Receiver : 메시지큐의전체메시지를모두출력하는프로그램 ( 모든메시지는같은메시지타입을가지고있다고가정 ) 2. Test 두개의 terminal 에서 Normal sender 와 Priority sender 가 1 초의간격을가지고각각메시지큐에메시지를보낸다. 전송이모두끝나면 Receiver 를통해메시지큐의전체메시지를모두출력 29 29

과제 Hint1 : ipc/msg.c 를참조하여기존 msgsnd, msgrcv 함수의동작을파악 Hint2 : Kernel 에서사용되는연결리스트인 struct list_head 의구조와동작을참조 Hint3 : 메시지데이터구조는실습예제의구조를참조하며, 메시지데이터의순서와우선순위에따른메시지의구별이이루어져야함 30 30

과제 Hint <linux/include/linux/msg.h> -> prio 변수를추가 31 31

과제 Hint <linux/ipc/msg.c> current task 의 prio 값을저장, enqueue 할때우선순위높은메시지가앞쪽으로오도록코드작성 32 32

과제 Hint priority sender application -> setpriority 함수사용 33 33

과제 Due: 2017/05/09 23:59:59 보고서 과제내용요약 Kernel Code 작성부분에대한설명 ( 스크린샷첨부 ) 최종결과스크린샷 ( 터미널창에서의결과화면 ) 34 34