Abstract View of System Components

Similar documents
운영체제 실습 - Introduction -

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

리눅스 프로세스 관리

Chapter #01 Subject

Chap06(Interprocess Communication).PDF

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

PowerPoint 프레젠테이션

11장 포인터

Chapter 4. LISTS

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

좀비프로세스 2

chap 5: Trees

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

03_queue

슬라이드 1

고급 IPC 설비

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

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

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

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint Presentation

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

6주차.key

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

10.

슬라이드 1

Microsoft PowerPoint - 10_Signal

Microsoft PowerPoint - 08-chap06-Queue.ppt

1장. 유닉스 시스템 프로그래밍 개요

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

Frama-C/JESSIS 사용법 소개

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

Microsoft PowerPoint - 08-Queue.ppt

슬라이드 1

슬라이드 1

The Pocket Guide to TCP/IP Sockets: C Version

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

untitled

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

슬라이드 1

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

슬라이드 1

PowerPoint 프레젠테이션

11장 포인터

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FBDC3BDBAC5DB56C0C720C7C1B7CEBCBCBDBAB0A320C5EBBDC5205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - ch07 - 포인터 pm0415

untitled

Abstract View of System Components

본 강의에 들어가기 전

Chap04(Signals and Sessions).PDF

BMP 파일 처리

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

슬라이드 1

UI TASK & KEY EVENT

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

ABC 11장

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

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

화판_미용성형시술 정보집.0305

윤성우의 열혈 TCP/IP 소켓 프로그래밍

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

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

Microsoft PowerPoint APUE(Intro).ppt

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

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

2009년 상반기 사업계획

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의

Homework 2 SNU , Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리

c

Microsoft Word - ASG AT90CAN128 모듈.doc

adfasdfasfdasfasfadf

PowerPoint Template

PowerPoint 프레젠테이션

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

강의10

1217 WebTrafMon II

제11장 프로세스와 쓰레드

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

Abstract View of System Components


Microsoft PowerPoint - Java7.pptx

KEY 디바이스 드라이버

쉽게 풀어쓴 C 프로그래밍


<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

C# Programming Guide - Types

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Visual Basic 반복문

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

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

UI TASK & KEY EVENT

제1장 Unix란 무엇인가?

SRC PLUS 제어기 MANUAL

- 코드로읽는리눅스디바이스드라이버 강남용

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

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

Transcription:

Operating System 10 주차 - IPC(InterProcess Communication) - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr yschoi@rtcc.hanyang.ac.kr shpark@rtcc.hanyang.ac.kr

Contents About IPC Message Queue Quiz #1 과제 #5 2 2

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

About IPC Signal Pipe Message Queue 4 4

Signal 시그널이란메시지형식이아닌신호형식의통신방법이며, 이벤트가발생했음을알리기위해 Process 에전달되는소프트웨어인터럽트다. 프로세스의수행시점과관계없이임의로발생하는비동기적인특성을가지고있다. 5 5

Signal Signal 을발생시키는 Event 4 가지 System Call ( Kill 등 ) 사용자입력 ( ^c, ^z 등 ) Hardware Exception ( 나누기 0 등 ) Software Condition ( alarm 시간등 ) 시그널명 SIGKILL SIGALARM SIGSTP SIGCONT SIGINT SIGSEGV 의미프로세스를죽여라알람발생프로세스멈춤멈춰진프로세스동작프로세스인터럽트발생프로세스가다른메모리영역을침범 6 6

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

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

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

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

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

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

Message Queue msgget function 메시지큐를생성하거나기존의메시지큐를참조하는함수 Def : int msgget(key_t key, int msgflg) Parameters key : 메시지큐를구분하기위한고유키 msgflg : 메시지큐를생성할때옵션을지정 13 13

Message Queue msgsnd function 메시지큐에해당데이터를전송하는함수 Def : int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg) Parameters msqid : 메시지큐 ID msgbuf structure 데이터전송시사용되는메시지구조 msgbuf 의첫 4 bytes 는반드시 long 타 입이어야하며, 값은 1 이상이어야함 mtext 는문자열이나 binary 등임의의 데이터로사용이가능함 msgflg : 메시지전송의옵션을지정 14 14

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 : 메시지가없는경우의옵션을지정 15 15

Message Queue msgrcv function Parameters msgtyp : 메시지큐에있는자료중어떤자료를읽을지에대한옵션을지정 16 16

Message Queue msgctl function 메시지큐의현재상태정보를보거나변경, 삭제등을수행하는함수 Def : int msgctl(int msqid, int cmd, struct msqid_ds *buf) Parameters msqid : 메시지큐의 ID cmd : 메시지큐에대한제어명령 buf : cmd 명령에따라동작하는메시지큐객체 structure 17 17

Message Queue Message Queue 리소스확인 IPC 메시지큐의자원수 $ cat /proc/sys/kernel/msgmni 각메시지의크기 (Default : 8192) $ cat /proc/sys/kernel/msgmax 큐에있는메시지의총크기 (Default : 16,384) $ cat /proc/sys/kernel/msgmnb 18 18

Message Queue 실습 - sender 19 19

Message Queue 실습 - receiver 20 20

Kernel s Linked List 일반적인 Linked List 보통 Generic 한 linked list 는구현하고자하는구조체에해당구조체를가리키는포인터변수를삽입하여구현 하지만이런방식으로구현할경우여러구조체에대해해당되는 linked list 를동적으로생성해야한다는번거로움이존재 21 21

Kernel s Linked List Linux Kernel 에서는일반적인방식대신생각을전환하여반대로구현 linked list node 를 Data 안에넣는방식으로구현 include/linux/list.h 에해당매크로들이선언되어있음 22 22

Priority 확인및변경 여러개의프로세스들이실행하려시도될때, 그들각각이가진 priority 가그프로세스가가져갈 CPU 의점유율을결정한다. Linux CFS 의경우 -20~19 사이에서동작한다. priority 는낮은숫자일수록더자주실행됨을의미한다. 즉, priority(=nice) 값이작을수록높은우선순위를가지게된다. 다음슬라이드에서설명할 2 개의함수는지정한타겟의 priority 를확인하고변경하는함수로 sys/resource.h 에선언되어있다. int getpriority(int which, id_t who) int setpriority(int which, id_t who, int priority) 23 23

Priority 확인및변경 getpriority 지정한타겟의 priority 를반환하는함수 Def : int getpriority(int which, id_t who) Parameters which 는다음중하나로설정한다. PRIO_PROCESS : 프로세스 PRIO_PGRP : 프로세스그룹 PRIO_USER : 유저 who 는 which 의 ID 로차례로 PID, PGID, UID 를의미한다. 성공하면해당되는 ID 를반환하고, 실패하면 -1 을반환한다. 24 24

Priority 확인및변경 Example> getpriority source code result 25 25

Priority 확인및변경 setpriority 지정한타겟의 priority 를변경하는함수 Def : int setpriority(int which, id_t who, int priority) Parameters which 는앞의 getpriority 에서와동일 who 는 which 의 ID 로차례로 PID, PGID, UID 를의미한다. priority 는변경하고자하는우선순위값으로, -20~20 사이에서실행된다. 성공하면해당되는 0 을반환하고, 실패하면 -1 을반환한다. 위의함수를사용하기위해서는관리자권한으로실행하여야한다. $ sudo./ File name 26 26

Priority 확인및변경 Example> setpriority source code result 27 27

Quiz #1 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 를통해메시지큐의전체메시지를모두출력 28 28

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

Quiz #1 Example (Normal sender, Priority sender) 30 30

Quiz #1 Example ( 기존의 Message Queue) 31 31

Quiz #1 Example (Priority Message Queue) 32 32