[ OS ] IPC ( Interprocess Communication )

이숭인·2021년 7월 29일
0

[ OS ] 운영체제

목록 보기
4/9

IPC ( Interprocess Communication )

프로세스를 두가지 종류로 나눠볼 수 있어요

  1. 다른 프로세스에게 영향을 미치치도, 받지도 않는 독립적인 프로세스

  2. 서로 영향을 주고 받으면서 자원을 공유하는 협력적인 프로세스(Cooperating process)

IPCCooperating process 사이에서 서로 데이터를 주고 받는 행위 또는 그에 대한 방법이나 경로 를 말합니다.


Cooperating process를 사용하는 이유

cooperating process 를 사용하면 프로세스간 데이터 송 수신이 가능하다고 했죠.
뒤에서 자세하게 알아보겠지만 프로세스간 통신은 오버헤드가 크다는 단점이 있는데도 불구하고 왜 Cooperating process를 사용하는걸까요?

Cooperating process를 사용하는 4가지 이유에 대해 알아볼게요.

1. Information sharing (정보 공유)

  • 두개 이상의 프로세스가 같은 정보를 사용해야 할 때

2. Computation speedup (속도 향상)
- 하나의 작업을 세부 작업으로 나눠서 프로세스들끼리 협력하면서 작업들을 동시에 진행할 때

3. Modularity (모듈성)

  • 어떤 시스템을 개발할때, 시스템의 기능을 여러개의 프로세스, 스레드로 나누게 될 때 여러 프로세스가 협력하게 됩니다.

4. Convenience (편의성)

  • 여러 프로세스들이 협력하여 작업을 진행하게 되면 멀티 태스킹이 가능해지죠!

Message passing, Shared Memory

IPC 에는 기본적인 두가지 방법이 존재합니다.
바로 Message passing 방법과 Shared memory 방법이죠!

Message passing

OS(Kernel) 가 memory protection을 위해 대신 전달해주는 것을 의미합니다.
따라서 안전하고 동기화 문제가 발생할 일이 없습니다.

하지만 !

Message passing은 System calls 를 사용해서 작업을 수행하는데, System callsOS(Kernel) 의 도움이 필요하기 때문에 오버헤드가 크다는 단점이 존재합니다.

Message passing 방식에는 Direct communicationindirect communication 이 존재합니다.

사진의 왼쪽이 indirect communication , 오른쪽이 direct communication 입니다.

indirect communication

indirect communication 은 프로세스 A가(송신) 커널에 메세지를 넣어놓으면 프로세스 B가(수신) 커널에 직접 메세지를 읽어오는 방식입니다.

direct communication

direct communication 은 프로세스 A가(송신) 직접 커널에 메세지를 주고, 커널이 전달받은 메세지를 프로세스 B(수신)에게 직접 전달하는 방식입니다.



Shared memory

Shared memory는 프로세스 A, B 모두 읽고 쓸 수 있는 메모리 영역을 만들고,
데이터를 공유 하는 방식을 의미합니다.
이 방식에서 OS(Kernel) 의 도움이 필요없기 때문에 성능 측면에서는 Message passing 보다 뛰어나지만 동기화 문제가 발생할 수도 있습니다.


결론적으로!

IPC 란 프로세스간 통신의 방법이라고 생각할 수 있어요.
프로세스간 통신은 동일한 컴퓨터 내의 프로세스 통신 뿐만 아니라 네트워킹으로 연결되어 서로 다른 컴퓨터에 존재하는 프로세스간의 통신 방법이기도 합니다. 예를 들어보자면 소캣이 있겠죠!

profile
iOS Developer

0개의 댓글