4장

Similar documents
Microsoft PowerPoint os4.ppt

6주차.key

Microsoft PowerPoint os3.ppt [호환 모드]

Microsoft PowerPoint oshw1.ppt [호환 모드]

untitled

Microsoft PowerPoint - o3.pptx

Microsoft PowerPoint - RMI.ppt

Microsoft PowerPoint oshw1.ppt [호환 모드]

Microsoft PowerPoint oshw1&2.ppt [호환 모드]

UniStore

10주차.key

슬라이드 1

Chap06(Interprocess Communication).PDF

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - 04-UDP Programming.ppt

강의10

chap 5: Trees

10.

MAX+plus II Getting Started - 무작정따라하기

1

제9장 프로세스 제어

BMP 파일 처리

Figure 5.01

rmi_박준용_final.PDF

1217 WebTrafMon II

SRC PLUS 제어기 MANUAL

untitled

제11장 프로세스와 쓰레드

JVM 메모리구조

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

2009년 상반기 사업계획

02 C h a p t e r Java

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

좀비프로세스 2

ABC 11장

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

Microsoft PowerPoint os5.ppt

Chapter 4. LISTS

PCServerMgmt7

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate


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

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - o8.pptx

Microsoft Word - FunctionCall

01-OOPConcepts(2).PDF

Deok9_Exploit Technique


bn2019_2

K&R2 Reference Manual 번역본

Microsoft PowerPoint APUE(Intro).ppt

chap7.key

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

슬라이드 1

Chap04(Signals and Sessions).PDF

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

11장 포인터

chapter4

Module 4: Processes

Microsoft PowerPoint os5.ppt [호환 모드]

The Pocket Guide to TCP/IP Sockets: C Version

13주-14주proc.PDF

휠세미나3 ver0.4

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

Microsoft Word - ExecutionStack

hlogin2

Microsoft PowerPoint - [2009] 02.pptx

C# Programming Guide - Types

슬라이드 1

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

T100MD+

Sena Technologies, Inc. HelloDevice Super 1.1.0

11장 포인터

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

Microsoft PowerPoint - 알고리즘_2주차_1차시.pptx

Microsoft PowerPoint - StallingsOS6e-Chap05.pptx

PowerPoint Presentation

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

운영체제란? PC를구입하면 Windows XP, Windows 7, Linux, MS-DOS Mac OSX, ios 운영체제 : Operating System 운영체제가없는컴퓨터? 컴퓨터 : 프로세서와메모리 전원을켜면어떤일이? 휘발성메모리 - 야생마 프로그램을실행하려면

Chapter 4. LISTS

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - o4.pptx

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

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

Chap 6: Graphs

Sharing Memory Between Drivers and Applications

Remote UI Guide

Transcription:

제 2 부프로세스관리 (Process Management) 프로세스» 실행중인프로그램 (program in execution) CPU time, memory, files, I/O devices 등자원요구» 시스템의작업단위 (the unit of work)» 종류 1. 사용자프로세스 (user process) - user code 실행 2. 시스템프로세스 (system process) - system code 실행 프로세스관리» 사용자프로세스와시스템프로세스의생성과삭제» 프로세스스케줄링» 프로세스들의동기화기법지원» 프로세스들의통신지원» 프로세스들의교착상태 (deadlock) 처리 2000 운영체제 4.1

제 4 장프로세스 (Processes) 예전 1 program 실행 -> 오늘날 multiple program 의동시실행 프로세스개념 (Process Concept) ~ 프로세스 (The Process)» 프로그램코드 + 현재활동 (Current activity) PC(Program Counter) 레지스터값 스택 (stack) : 서브루틴, 매개변수, 복귀주소, 임시변수등 데이터부분 (data section) : 전역변수 프로세스상태 (Process State)» 생성 (new)» 수행 (running) : CPU 가실행» 대기 (waiting) : I/O 완료나 signal 기다림» 준비 (ready) : Processor 를받을준비가됨» 종료 (terminated) 2000 운영체제 4.2

프로세스상태 (Process State) 2000 운영체제 4.3

프로세스개념 (Process Concept) 프로세스제어블럭 (Process Control Block)» 각프로세스는 PCB 로표현됨» PCB 프로세스상태 : new, ready, running, waiting, halted 프로그램카운터 : next instruction 의주소 CPU 레지스터들 : accumulator, index register, stack pointers, 범용 registers, condition-code CPU 스케줄정보 : priority, pointers to scheduling queues 메모리관리정보 : base and limit registers, page tables, segment tables 계정정보 : time used, time limits, account numbers, job#, process# 입출력상태정보 : I/O devices list allocated to the process, list of open files 스레드 (Threads)» a process = a single thread of execution (one task)» 많은현대 OS 들이 multiple threads of control (multitasks at a time) 지원 2000 운영체제 4.4

Process Control Block (PCB) 2000 운영체제 4.5

프로세스스케줄링 (Process Scheduling) ~ 스케줄링큐 (Scheduling Queues)» 작업큐 (job queue) : memory 할당기다리는큐 (disk 에서 )» 준비큐 (ready queue) : CPU 에할당기다리는큐» 장치큐 (device queue() : 입출력기다리는큐» 큐잉도표 (queueing diagram) : 그림 4.5 스케줄러 (Schedulers)» 장기스케줄러 (long-term scheduler, job scheduler) pool -> memory(degree of multiprogramming) Unix 같은시분할시스템에는없음» 단기스케줄러 (short-term scheduler, CPU scheduler) CPU 할당 : must be very fast» 중기스케줄러 (medium-term scheduler) swapping» degree of multiprogramming 을줄임» memory -> backing store 2000 운영체제 4.6

준비큐와다양한입출력장치큐 2000 운영체제 4.7

프로세스스케줄링을표현하는큐잉도표 2000 운영체제 4.8

큐잉도표에중기스케줄링 (Medium Term Scheduling) 추가 2000 운영체제 4.9

프로세스스케줄링 (Process Scheduling) 문맥교환 (Context Switch)» CPU가한process에서다른 process로 switch될때 save the state of the old process : CPU와메모리상태 (PCB정보) load the saved state for new process : CPU와메모리상태 (PCB정보)» pure overhead : performance bottleneck -> threads로해결» context-switch time : 1-1000microsecond» address space 보존방법 : memory 관리기법에좌우 2000 운영체제 4.10

한프로세스에서다른프로세스로의 CPU Switch 2000 운영체제 4.11

프로세스에대한오퍼레이션 (Operations on Processes) ~ 프로세스생성 (Process Creation)» 프로세스생성시스템호출 : fork, exec.. 부모프로세스 자신프로세스 : 사용자원을부모프로세스의자원 (memory, files) 공유» 새프로세스생성후부모는 계속실행 모든자식이끝날때까지기다림 : wait system call로 2000 운영체제 4.12

전형적인 UNIX System 의프로세스트리 2000 운영체제 4.13

프로세스에대한오퍼레이션 (Operations on Processes) ~» 새프로세스의 2모델 ( 자식의주소공간관점에서본 ) 1) 자식은부모의것을복제 : fork 2) 자식은자신의새프로그램을가짐 : fork+exec군» execl : 문자형인수포인터들» execv : 인수배열의포인터 char *av[3]; av[0] = ls ; av[1] = -l ; av[2] = (char *)0; execv( /bin/ls, av);» Unix의예 : fork + exec 프로그램참조 1) fork : 자식 process 생성, 모든 process는 PID(Process identifier) 를가짐 2) fork + exec : 호출하는프로세스의기억장소에새프로그램 load 2000 운영체제 4.14

Fork() 로새프로세스를생성하는 Cprogram #include <stdio.h> void main(int argc, char *argv[]) { int pid; /* fork another process */ pid = fork(); if(pid < 0) { /* error occurred */ fprintf(stderr, Fork Failed ); exit(-1); else if (pid== 0) { /* child process) */ execl( /bin/ls, ls, -l, NULL); else { /* parent process */ wait(null); printf( Child Complete ); exit(0); 2000 운영체제 4.15

fork 시스템호출 printf( One\n ); pid = fork(); PC A printf(two\n ); fork BEFORE AFTER printf( One\n ); pid=fork(); printf( Two\n ); PC printf( One\n ); pid = fork(); printf( Two\n ); PC A B 2000 운영체제 4.16

/*runls run ls in a subprocess */ main() { int pid; pid = fork(); exec 와 fork 의공동이용 /*if parent, use wait to suspend _ execution until child finishes */ if(pid > 0) { wait((int *)0); printf( ls completed n ); exit(0); /*if child then exec ls*/ if(pid == 0) { execl( /bin/ls, ls, -l,(char *)0); fatal( execl failed ); execv char *av[3]; av[0]= ls ; av[1]= -l ; av[2]=(char *)0; execv( /bin/ls, av); execlp, execvp 쉘환경변수 PATH 를따름 execlp( ls, ls, -l, (char *)0); execvp( ls, av); /*getting here means pid is negative, so error has occurred */ fatal( fork failed ); fatal(char *s) { perror(s); exit(1); 2000 운영체제 4.17

fork 와 exec 호출의조합 pid = fork(); PC A BEFORE FORK AFTER FORK wait((int*)0); PC execl( /bin/ls ); PC A B /* first line of ls */ PC AFTER FORK AFTER EXEC wait((int*)0); PC A B (now runs ls) 2000 운영체제 4.18

Fork 실습 telnet 211.119.245.68» id: s 학번» passwd: 수업시간에알려줌 ftp 211.119.245.75» Id: anonymous id: ftp» passwd: 자기 loginid passwd: ftp 실습 1: ~mysung/osprog/fork.c 코드분석, 컴파일, 실행 실습 2: ~mysung/osprog/exec.c 코드분석, 컴파일, 실행 실습 3: ~mysung/osprog/background.c 코드분석, 컴파일, 실행 실습 4: One, Two 출력하는 fork12.c 프로그램코딩, 컴파일, 실행 실습 5: 시스템호출 execl() 을이용하여 ls 프로그램을실행시키는 forkexecl.c 프로그램코딩, 컴파일, 실행 실습 6: 시스템호출 execv() 를이용하여 ls 프로그램을실행시키는 forkexecv.c 프로그램코딩, 컴파일, 실행 2000 운영체제 4.19

프로세스에대한오퍼레이션 (Operations on Processes) 프로세스종료 (Process Termination)» exit 시스템종료 계산결과는부모에게 Return 메모리 ( 물리적 / 가상적 ), 오픈한화일, I/O 버퍼를 OS 에게돌려줌» abort 시스템호출 부모만호출 ( 그렇지않으면서로죽이는일생김 )» 실행종료이유 자식이할당된자원을초과사용할때 자식의 task 가더이상필요없을때 부모가종료될때 DEC VMS 또는 Unix 계단식 (cascading) 종료» 부모종료 -> OS 가모든자식종료» ( 예 ) Unix exit system call 로프로세스종료 wait system call : return 값 = 종료하는자식의 pid wait(&status) /* int status */» status : 자식이 exit 으로종료될때의상태정보 정상종료경우 : 하위 8bits 는 0, 상위 8bits 는 exit status( 자식프로세스가 exit 명령으로전달한값 ), signal 로종료된경우 : 하위 8bits 는 signal 번호, 상위 8bits 는 0» ( 상위 8 비트추출 ) status >> 8; status &= 0xFF; 2000 운영체제 4.20

프로세스협조 (Cooperating Processes) ~ 프로세스협조하는이유» 정보공유 (information sharing)» 계산속도증가 (computation speedup) : parallel computing 으로» 모듈화 (modularity)» 편이성 (convenience) : parallel computing 으로 프로세스협조예 : 생산자 - 소비자 (producer-consumer) 문제» compiler : assembly code 생산» assembler : assembly code 소비, object code 생산» loader : object code 소비 생산자와소비자가동시에수행되려면 => buffer 가필요 ( 동시수행을위해 ) => 생산자와소비자의동기화필요 ( 생산되지않은자료소비하지않게 ) 생산자-소비자문제종류» 1. 무한버퍼 (unbounded-buffer) 생산자-소비자문제 생산자는항상생산, 소비자는소비할자료를기다릴수도» 2. 유한버퍼 (bounded-buffer) 생산자 - 소비자문제 버퍼가꽉차있으면생산자가대기, 버퍼가비어있으면소비자가대기 2000 운영체제 4.21

프로세스협조 (Cooperating Processes) 유한버퍼생산자 - 소비자문제 (bounded-buffer producer-consumer problem) -> 스레드 (LWP) 로하면효과적» Version 1: 공유메모리를이용한해결책» Version 2: 메시지전달을이용한해결책 (4.5 절 )» Version 3: 세마포어를이용한해결책 (7.5 절 )» Version 4: 세마포어와스레드를이용한해결책 (7.6 절 )» Version 5: Java synchronization 을이용한해결책 (7.8 절 ) 2000 운영체제 4.22

공유메모리를이용하는생산자 - 소비자문제 Import java.util.*; public class BoundedBuffer { public BoundedBuffer() { // buffer is initially empty count = 0; in = 0; out = 0; buffer = new Object[BUFFER_SIZE]; // producer calls this method public void enter(object item) { //Figure 4.10 The enter method // consumer calls this method public Object remove() { //Figure 4.11 The remove() method public static final int NAP_TIME = 5; private static final int BUFFER_SIZE = 5; private volatile int count; private int in; // points to the next free position private int out; //points to the next full posiiton private Object[] buffer; 2000 운영체제 4.23

생산자 enter() 메소드 public void enter(object item) { while (count == BUFFER_SIZE) ; // do nothing // add an item to the buffer ++count; buffer[in] = item; in = (in + 1) % BUFFER_SIZE; if (count == BUFFER_SIZE) System.out.printIt( Producer Entered + item + Buffer Full ); else count); System.out.printIt( Producer Entered + item + Buffer size = + 2000 운영체제 4.24

소비자 remove() 메소드 public Oject remove() { Object item; while (count == 0) ; // do nothing // remove an item to the buffer --count; item = buffer[out]; out = (out + 1) % BUFFER_SIZE; if (count == 0) System.out.printIt( Consumer Consumed + item + BufferEmpty ); else count); System.out.printIt( Consumer Consumer + item + Buffer size = + 2000 운영체제 4.25

프로세스간통신 (Interprocess Communication) ~ 통신방식 <- 한시스템에서둘다사용해도됨» 공유메모리방식 (shared-memory) 응용프로그램작성자가응용레벨에서통신기능제공 ( 예 ) 유한버퍼생산자 - 소비자문제 version 1» 메시지전달방식 (message-passing) IPC(interprocess-communication) 기능이용 : OS 가통신기능제공 ( 예 ) 유한버퍼생산자 - 소비자문제 version 2 IPC 기본구조 (Basic Structure)» IPC 기능의 2 연산 send (message) receive(message)» 프로세스 P 와 Q 가통신함 -> 통신선이전재 링크» 공유메모리» bus» network send/receive 연산 메시지시스템을구현하는기법들» 직접 (direct) 또는간접통신» 대칭 (symmetric) 또는비대칭 (symmetric) 통신» 자동 (automatic) 또는명시적 (explicit) 버퍼링» 복사 (copy) 에의한전송또는참고 (reference) 에의한전송» 고정길이 (fixed-sized) 또는가변길이 (variable-sized) 메시지 2000 운영체제 4.26

프로세스간통신 (Interprocess Communication) ~ 명칭부착 (Naming) 1) 직접통신 (Direct Communication) 대칭적통신 : 두프로세스 (sender/receiver) 가상대의이름을호출» Send(P, message) : 프로세스 P 에게메시지보냄» Receive(Q, message) : 프로세스 Q 로부터메시지받음 비대칭적통신 : sender 만 receiver 호출» Send(P, message) : 프로세스 P 에게메시지보냄» Receive(id, message) : 임의의프로세스로부터메시지받음 id = 통신이일어난순간메시지를보낸프로세스의이름으로설정됨 직접통신의단점» 프로세스이름바뀌면전부고쳐야 (limited modularity) 2) 간접통신 (Indirect Communication) mailbox(ports) 통해통신» send(a, message) : mailbox A 에메시지보냄» receive(a, message) : mailbox 로부터메시지받음 mailbox 의구현» 프로세스가 mailbox 소유» OS 가 mailbox 소유 2000 운영체제 4.27

프로세스간통신 (Interprocess Communication) ~ 동기화 (Synchronization)» Blocking send: 수신프로세스가메시지를받을때까지멈춤» Nonblocking send: 메시지보내고다른연산계속» Blocking receive: 메시지가있을때까지멈춤» Nonblocking receive: 올바른메시지이거나널메시지이거나상관하지않고받음 버퍼링 (Buffering)» 링크의메시지보유용량 Zero capacity : rendez-vous(no buffering) 동기적통신 Bounded capacity : 유한길이큐이용 자동버퍼링 Unbounded capacity : 무한길이큐이용 자동버퍼링 2000 운영체제 4.28

프로세스간통신 (Interprocess Communication) ~ 자동버퍼링경우» 보통비동기적통신 (asynchronous communication) 이일어남 보낸메시지도착여부모름 꼭알아야할경우 : 명시적통신 P : send(q, message); receive(q, message); Q : receive(p, message); send(p, acknowledgment ); 특별한경우» 비동기적통신 : 메시지보낸프로세스는절대로지연되지않음 보낸메시지미처받기전에새메시지보내면이전메시지유실될수있음 메시지유실방지위해복잡한명시적동기화필요» 동기적통신 : 메시지보낸프로세스는받았다는회신받을때까지기다림 Thoth OS : reply(p, message) 가메시지보낸프로세스와받는프로세스의수행재개 Sun RPC(Remote Procedure Call) 동기적통신 (synchronous communication)» sender : subroutine call -> reply 올때까지블록됨» receiver : 계산결과를 reply (http://marvel.inchon.ac.kr 의 Information 참조 ) 2000 운영체제 4.29

프로세스간통신 (Interprocess Communication) ~ 예외조건 (Exception Conditions)» centralized 또는 distributed system 에서고장발생시오류의회복 ( 예외조건 ) 필요» 프로세스종료 (Process Terminates) P 는종료된 Q 를기다림 -> P 는블록됨» P 종료» Q 종료사실을 P 에알림 P 가종료된 Q 에메시지보냄 -> Q 의 reply 기다려야할경우블록됨» 메시지유실 (Lost Messages) OS 가탐지및처리책임 sender 가탐지및처리책임 OS 가탐지, sender 가처리 훼손된메시지 (Scrambled Messages) 통신채널의잡음 (noise) 때문 -> 보통 OS 가재전송 오류검사코드 (check sums, parity, CRC) 으로조사 2000 운영체제 4.30

Mailbox 를이용하는생산자 - 소비자문제 Import java.util.*; public class MessageQueue { public MessageQueue() { queue = new Vector(); // This implements a nonblocking send public void send(object item) { queue.addelement(item); // This implements a nonblocking receive public Object receive() { Object item; if (queue.size() == 0) return null; else { item = queue.firstelement(); queue.removeelementat(0); return item; private Vector queue; 2000 운영체제 4.31

메시지시스템의생산자프로세스와소비자프로세스 생산자프로세스 MessageQueue mailbox; while (true) { Date message = new Date(); mailbox.send(message); 소비자프로세스 MessageQueue mailbox; while (true) { Date message =(Date) mailbox.receive(); if (message!=null) // consume the message 2000 운영체제 4.32

프로세스간통신 (Interprocess Communication) ~ 실례 : Mach» 분산시스템을위한 OS» 시스템호출, task 간정보전달을메시지로» port(= mailbox)» task 생성 => (kernel mailbox, notify mailbox) 생성» system calls msg_send msg_receive msg_rpc (remote procedure call) port_allocate : 새 mailbox 생성, buffer size = 8, FIFO order port_status : 주어진 mailbox 의메시지수반환» 메시지형태 고정길이 header» 메시지길이» 두 mailbox 이름 ( 그중하나는 sender 의 mailbox; reply 위한 return address 포함 ) 가변길이 data portion: 정형화된 (typed) 데이터항목들의리스트 2000 운영체제 4.33

프로세스간통신 (Interprocess Communication) ~» send 연산 수신 mailbox 가 full 이아니면메시지복사 수신 mailbox 가 full 이면 4 가지중선택» receive 연산 1 mailbox 에빈공간이생길때까지대기 2 최대 n 밀리초대기 3 기다리지않고즉시복귀 4 메시지를임시로 cache : 메시지하나만 OS 가보관 ( 메시지가실제로목표 mailbox 에들어갔을때 reply ; only one pending message) line printer driver 등서버태스크경우 어떤 mailbox 또는 mailbox set 로부터메시지를읽을지를명시 지정된 mailbox 로부터또는 mailbox set 중한 mailbox 로부터메시지수신 읽을메시지없으면최대 n 밀리초대기하거나대기하지않음» 메시지시스템의단점 double copy(sender -> mailbox, mailbox -> receiver) Mach 는 virtural memory 기법으로두번복사않음 ( 송신스레드와수신스레드를같은주소공간으로 mapping 시킴 ) 2000 운영체제 4.34

프로세스간통신 (Interprocess Communication) ~ 실례 : Windows NT» NT subsystem server 와메시지전달방식으로통신 : 지역프로시주어호출 기능 (LPC; Local Procedure Call facility) LPC: RPC(Remote Procedure Call) 기법과유사» 연결포트 (connection port) 와통신포트 (communication port) 사용» 통신작업 클라이언트가연결포트객체에대한 handle 을 open 클라이언트가연결요청 서버는두개의사적인 (private) 통신포트를생성하고클라이언트에게두 포트중하나의 handle 을돌려줌 클라이언트와서버는해당통신포트의 handle 을이용하여메시지를 보내거나, 응답호출 (callback) 을하거나, 응답 (reply) 을기다림 2000 운영체제 4.35

프로세스간통신 (Interprocess Communication)» 세가지메시지전달기법 포트의메시지큐 (~256 bytes) 를중간저장소로이용, 즉시응답하기어려울때알려주는 callback 기법사용가능 전송할메시지가크면공유메모리인섹션객체 (section object) 를이용, 섹션객체의포인터와크기정보전송하여데이터복사피함, 즉시응답하기어려울때알려주는 callback 기법사용가능 quick LPC : 클라이언트가연결요청후 quick LPC 지시, 서버는클라이언트전용서버스레드 (dedicated server thread) 생성» 연결요청, 메시지담을 64KB 섹션객체, 동기화를수행하는한쌍의사건객체 (event pare object) 처리» 장점 : 메시지복사, 포트객체사용, 호출한클라이언트파악위한 overhead 제거» 단점 : 다른두방법보다많은자원사용» 메시지전달 overhead 감소위해여러메시지들을한메시지로 batch 하기도함 2000 운영체제 4.36