CS/운영체제

프로세스 간 커뮤니케이션

:_: 2022. 2. 24. 11:12

InterProcess Communication (IPC) : 프로세스 커뮤니케이션 기법

 

프로세스간 커뮤니케이션은 원칙적으로 금지되어있다.

프로세스의 코드가 다른 프로세스의 코드나 데이터를 바꿀 있는 방법 x

 

프로세스는 다른 프로세스 공간에 접근할 없다.

그래서 프로세스 간에 커뮤니케이션을 해야될 필요가 있어 IPC 기법을 제공하는 것이다.

 

 동시에 실행된 결과들을 특정 프로세스가 모아서 정리해야 되고 각각의 프로세스간 통신 필요한 경우 있다.

 

ex. fork () 시스템

 fork 함수로 프로세스 자신을 복사해서 새로운 프로세스로 만들 있다.

기본적으로 프로세스 생성시, 리눅스(유닉스 계열)에서는 최초 프로세스를 제외하고는, fork() 시스템콜을 사용해 부모 프로세스를 복사하여 자식 프로세스를 생성한다.

 

 프로세스를 fork() 해서 여러 프로세스를 동시에 실행시킬 수 있다.

CPU가 한 개일때만 생각하지만, 최근에는 CPU 안에 코어가 8개 되는 경우도 많고 각 프로세스를 각 코어에 동시 실행 가능(병렬 처리)

 

파일을 사용한 커뮤니케이션

 

프로세스간 저장매체는 공유가능하다.

(간단히 다른 프로세스에 전달할 내용을 파일에 쓰고, 다른 프로세스가 해당 파일을 읽으면 )

file 사용하면 실시간으로 직접 원하는 프로세스에 데이터 전달이 어렵다.

계속 실시간으로 읽고만 있을 없으므로.

 

실제 프로세스 : 리눅스

프로세스간 공간은 완전히 분리되어 있다.

커널 공간은 공유한다.

 

다양한 IPC 기법

2~7 번은 모두 커널공간을 사용한다 .

 


정리 

  • 여러 프로세스 동시 실행을 통한 성능 개선, 복잡한 프로그램을 위해 프로세스간 통신 필요 
  • 프로세스간 공간이 완전 분리
  • 프로세스간 통신을 위한 특별한 기법 필요 (IPC: Inter Process Conmunication)
  • 대부분 IPC 기법은 결국 커널 공간을 활용하는 것임 → 이유 : 커널 공간은 공유하기 때문

 

 

제로베이스 컴퓨터 공학 전공자 따라잡기 강의 시청 후 정리한 내용입니다.
728x90