학교생활/운영체제

[운영체제] Ch3(2)InterProcess Communication(IPC)

sh1256 2022. 10. 12. 23:56
728x90

Interprocess Communication(IPC)

개념

process끼리의 통신

 

목적

  • 정보공유
  • 속도증가
  • 모듈러리티(세분화)-->유지보수 용이, 유연성 증가
  • 편의성

IPC 두가지 모델

IPC 모델 설명(2)

(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

Message system – processes communicate with each other without resorting to shared variables
the message size 는 고정되거나 변할 수 있다. 

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 미들웨어로 작용