/////
Search
📝

4월1일(월)

Interprocess Communication

독립(Independent) 프로세스 : 프로세스끼리 데이터 공유X
협동(cooperating) 프로세스 : 다른 프로세스에 영향을 주거나 받음
프로세스가 생기면, Control Block(PCB)가 생기는데 서로 메모리가 얼마나 할당되고 사용중인지를 업데이트하면서 정보를 공유하기 위해서
IPC(InterProcess Communication)가 필요\
두 가지 모델이 존재합니다
Shared Memory
협력 프로세스들과 공유하는 메모리 영역 구축
공유 메모리를 통해 정보 교환 및 공유
메세지 전달 모델보다 빠름 : 공유메모리 구축 때만 시스템 콜
메모리 영역을 공유하기에, 조금이라도 업데이트가 늦어지면 다른 프로세스가 먼저 선점해버리는 오류가 발생할 여지가 있음
Message passing
협력 프로세스들 간의 메시지 교환(통신)
공유 메모리 모델보다 느림
전달할 때마다 시스템 콜
(a) 커널을 매개체로 PCB(A), PCB(B)끼리 정보를 주고 받는 방식 (b) 프로세스들 끼리 메세지를 교환

Producer-Consumer Problem

Paradigm for cooperating processes 반드시 1 : 1 대응 관계는 아닙니다(1:N의 대응 관계도 많음)
컴파일러 : 어셈블리 코드 생산 VS 어셈블러 : 어셈블리 코드 소비
웹 서버 : HTML Content 생산 VS 클라이언트의 웹 브라우저 : HTML Content 소비
Producer는 초당 M개를 생산하고, Consumer는 초당 N개를 소비한다고 가정해보자 이상적인 시나리오는 M=N의 경우 낭비의 경우는 M>N의 경우, 부족한 경우는 M<N의 경우 대부분의 경우는 낭비하거나 부족한 상황이므로 우리는 버퍼를 중간에 넣어줌으로써 처리해합니다. 이제 Consumer가 여러 개 사용하겠다고 가정해봤을때, 버퍼가 차례대로 소비할 수 있도록 해주고 Producer에게 업데이트된 정보를 알려줍니다.
버퍼(Buffer) 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역
1.
Unbounded(제한 없는)-Buffer
버퍼의 용량에 제한이 없는 소리
그러니, Producer가 계속 생산
그러나, 이건 말도 안되는 소리(매우 이상적인 상황)
2.
Bounded(제한된)-Buffer
버퍼의 용량에 따라 대기시간이 발생
소비자 대기
생산자 대기

Producer-Consumer Problem(2)

여러 개의 프로세스들을 어떻게 동기화시킬 것인가에 대한 문제
Bounded-Buffer
공유 버퍼
비어 있으면, 생산자는 정보를 삽입
가득 차 있으면, 생산자는 대기
비어 있으면, 소비자는 대기
비어 있지 않으면, 소비자는 소비(처리)
공유버퍼의 상태를 항상 확인해야한다
현재 Sum은 3(생산자3, 소비자3) 생산자가 4번 버퍼에 정보 저장하고, 소비자가 한 개 처리(생산자:4, 소비자3) 동시 발생 및 Sum값의 갱신이 늦어지는 경우( Sum=3을 소비자가 사용(처리) )

InterProcess Communication(IPC)

Shared-Memory

공유 메모리에 접근 및 조작하는 방법이 프로그래머에 의해 작성되어야함

Message Passing

공유 메모리를 사용하는게 아닌, 프로세스끼리 통신하는 것
통신 링크(Communication Link)
프로세스들끼리 통신을 하기 위한 링크가 필요
구현 문제
어떻게 연결할건지
프로세스가 2개 이상끼리도 통신 가능한지
통신중인 프로세스 쌍끼리 링크가 몇 개인지
링크의 용량은
메세지의 크기는
링크는 양방향인지 단방향인지

Direct Communication

Synchronization

Message Passing은 Blocking이거나 Non-Blocking

Blocking

Synchronous
Send
Receive

Non-Blocking

Asynchronous
Send
Receive

Buffering

링크에 부착된 메세지들의 Queue

3가지 구현 방식

1.
Zero capacity
a.
메세지가 큐에 연결되지 않음
b.
송신자는 수신자에 대해 무조건 기다려야함
2.
Bounded capacity
a.
메세지 길이 제한 있음
b.
송신자는 링크가 가득찼는지 체크하기위해 기다려야함
3.
Unbounded capacity
a.
무한 길이
b.
송신자가 기다릴 필요가 없음

Examples of IPC System - Windows

Local Procedure Calls in Windows