Interprocess Communication(IPC)
개념
process끼리의 통신
목적
- 정보공유
- 속도증가
- 모듈러리티(세분화)-->유지보수 용이, 유연성 증가
- 편의성
IPC 두가지 모델
(a) memory에 write, read
(b) 서로 직접 send, receive
Producer-Consumer Problem
Producer-Consumer model
:Producer는 데이터를 생성하고, Consumer는 데이터를 소비하는 모델
unnounded-buffer: 0~1024까지 다 쓰면 다시 0으로 돌아가서 다시 씀.
IPC in Shared-Memory Systems
https://m.blog.naver.com/demonic3540/221671407431
IPC (4) Shared Memory
1. Shared memory * 기본적으로는 각 프로세스의 메모리는 다른 프로세스에서 접근할 수 없다. 하지만 I...
blog.naver.com
IPC in Message-Passing Systems
direct Communication
당사자 간의 직접 메시지를 주고 받는다.
Indirect Communication
제 3의 공간에 데이터를 저장하고, 다른 사람이 그 공간에서 데이터를 가져온다.
Synchronization
message passing은 blocking 또는 non-blocking중 하나일 수 있습니다.
Blocking=syschronous: send-receive할 때까지 기다리는 것.
- Blocking send - 메시지가 도착할 때까지 기다린다.
- Blocking receive - 메시지를 사용할 수 있을 때까지 기다린다.
Non-Blocking=asyschronous: send후 끝, receive하고 끝.
- Non-blocking send - 보낸 사람이 메시지를 보낸 후 계속합니다.
- Non-blocking receive - 수신자는 유효한 메시지나 Null 메시지을 수신합니다.
Buffering
[정의]
상대적으로 느린 프로그램을 기다리기 위해 느린 프로그램이 버퍼에 다 가져다 놓는 것.
빠른 프로그램과 느린 프로그램 사이의 완충작용
[원인]
1. Zero capacity: 큐가 없다. 샌더는 반드시 리시버를 위해서 기다려야 함.
2. Bounded capacity: 만약 link가 차면 샌더는 리시버를 기다린다.
3. Unbounded capacity: 샌더는 리시버를 기다릴 필요가 없다.
Examples of IPC Systems
Posix
- shared Memory
- ftruncate
- 등등
Mach
Windows
Pipes
- 한 프로세스가 다른 프로세스에게 데이터를 줄 때 사용.
- Parent-child 관계여야지만 사용 가능
- Ordinary pipes: 일반적인 parent-child 관계
- named pipes: parent-child 관계가 없어도 한 컴퓨터에서 만들 수 있는 pipe. FIFO특성
Communicaion in Client-Server Systems
: 원격 안에 있는 다른 컴퓨터들의 통신
Sockets: 일종의 api, communication의 최소 수단.
- sockets은 주소가 필요함 (IP주소+ port number)
- 3 Types of sokects: TCP, UDP, MulticaseSocket.
Remote Procedure Calls: 서로다른 컴퓨터끼리 call가능(원격제어에 있을 때)
- Local Procedure call: 한 컴퓨터에서 서로다른 프로세스끼리 call가능
- 일종의 미들웨어
- Stubs: 복잡한 네트워크를 통해 클라이언트가 어떠한 함수를 썼는지 서버쪽으로 보내고, 서버쪽에서 실제로 함수를 Call하게 된다.
- marshalls: 클라이언트가 보낸 명령을 잘 메시지 형태로 서버에게 보내는 것.
- MIDL: Stubs를 하기 위한 표준
- Big-endian, little-endian를 서로 변환해 주는 것: External data Representation(XDL)
- matckmaker: 어느 프로세스가 호출할려는 함수를 가지고 있는지 찾아가는 것
결론: Client와 Server는 일반적인 프로그램인데, 아래에 있는 stubs가 일종의 Remote Procedure Calls 미들웨어로 작용
'학교생활 > 운영체제' 카테고리의 다른 글
[운영체제] Ch4(2)Implicit Threading (0) | 2022.10.13 |
---|---|
[운영체제] Ch4(1)Multicore와 Multithread (0) | 2022.10.13 |
[운영체제] Ch3(1)Process개념과 작동 (0) | 2022.10.12 |
[운영체제] Ch2(2) linkers and loaders & OS설계와 디버깅 (0) | 2022.10.12 |
[운영체제] Ch2(1) OS Services & System call (0) | 2022.10.12 |