정의
프로세스는 독립적으로 실행된다. 즉, 독립 되어있다는 것은 다른 프로세스에게 영향을 받지 않는다고 말할 수 있다.
이런 독립적 구조를 가진 프로세스 간의 통신 을 해야 하는 상황이 있을 것이다. 이를 가능하도록 해주는 것이 바로 IPC 통신 이다.
프로세스 간의 통신이 필요한 이유
프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 된다.
커널 : 운영체제의 핵심적인 부분으로, 다른 모든 부분에 여러 기본적인 서비스를 제공해줌
정의
Buffer
서로 다른 프로세스간에도 일부 주소 공간을 공유하게 함
프로세스가 공유 메모리 할당을 커널에 요청하면, 커널은 해당 프로세스에 메모리 공간을 할당해주고 이후 모든 프로세스는 해당 메모리 영역에 접근할 수 있게 된다.
서로 다른 프로세스들이 공유 자원에 접근할 때, Synchronize (동기화) 문제 발생 가능
bounded buffer 의 동기화 문제
커널을 통해 메시지 전달 (공유 자원 없이)
IPC 장치가 제공하는 2 가지 연산
message의 크기는 고정되거나 변할 수 있다.
Communication Link
정의 : 서로 다른 프로세스들이 메시지를 주고받기 위한 통로
Direct Communication (직접 통신)
Synchronization
Message Passing 은 blocking 방식 또는 non-blocking 방식으로 구현된다.
blocking 방식
non-blocking 방식
통신할 프로세스들을 전혀 모르는 상태에서 통신이 가능하다.
즉, 익명 파이프의 확장된 상태로 부모 프로세스와 무관한 다른 프로세스도 통신이 가능한 것
단방향(반이중, undirectional) 이다.
프로세스 간 통신의 종착점이다.
클라이언트와 서버가 소켓을 통해서 통신하는 구조로, 원격에서 프로세스 간 데이터를 공유할 때 사용한다.
(host의)IP 주소와 port 번호를 통해 연결된다.
loop back : 클라이언트와 서버가 같은 호스트에서 TCP/IP를 이용하여 서로 통신할 수 있도록 하는 것입니다.