OS #18 InterProcess Communication

underlier12·2020년 3월 23일
0

OS

목록 보기
18/35
post-custom-banner

18. InterProccess Communication

프로세스 간 커뮤니케이션

프로세스들이 서로의 공간을 쉽게 접근할 수 있다면 프로세스 데이터/코드가 변경될 수 있기 때문에 아주 위험한 상황이 초래될 수 있다. 따라서 프로세스는 다른 프로세스의 공간을 접근할 수 없도록 설계되었다.

IPC의 필요성

하지만 프로세스 간 커뮤니케이션의 필요성이 존재했기에 프로세스 간 통신 방법을 제공하며 이를 IPC(InterProcess Communication)이라고 한다.

IPC의 필요성은 다음과 같은 이유로 요약된다.

  • 성능을 높이기 위해 여러 프로세스를 만들어 동시 실행
    이 때 프로세스 간 상태 확인 및 데이터 송수신 필요

fork() 시스템 콜을 통해 프로세스 자신을 복사하여 새로운 프로세스로 생성이 가능

IPC 예

여러 프로세스 동시 실행

1~10000까지 더하는 작업이 있을 때 fork() 함수로 10개의 프로세스를 생성하여 각각 1000단위씩 잘라 1~1000, 1001~2000, ... 이런 범위로 더하고 결과들을 합하면 더 빠르게 동작가능

웹 서버

웹 서버는 요청이 오면 HTML 파일을 클라이언트에 제공하는 프로그램이며 새로운 사용자 요청이 올 때마다 fork() 함수로 새로운 프로세스를 만들고 각 사용자 요청에 즉시 대응

CPU 병렬 처리가 가능하다면 더 빠른 대응이 가능

파일을 통한 커뮤니케이션

IPC 중 한 가지 방법인 file을 통한 커뮤니케이션은 다른 프로세스에 전달할 내용을 파일에 쓰고 다른 프로세스가 해당 파일을 읽으면 된다.

하지만 실시간으로 데이터 전달을 하는데에는 한계가 있으며 해당 파일이 쓰였는지 아닌지 알 방법이 없어 주기적으로 확인하는 것도 낭비이다.

따라서 IPC에는 다양한 기법이 존재

실제 프로세스 공간

프로세스 간 공간은 완전히 분리되어 있다. 특히 각 프로세스마다 4GB 정도의 메모리 공간을 할당 받는데 이는 실제 주소를 받는 것이 아닌 가상 메모리 공간을 매칭하는 것이다. (따라서 실제 물리 메모리보다 더 많은 가상 메모리 공간을 활용할 수 있음)

하지만 커널 공간은 공유하기 때문에 이를 통해 IPC가 이루어 질 수 있다.

다양한 IPC 기법

  • File
  • Message Queue
  • Shared Memory
  • Pipe
  • Signal
  • Semaphore
  • Socket
  • ...

첫 번째 방법인 File을 제외하고는 모두 커널 공간을 활용한다.

profile
logos and alogos
post-custom-banner

0개의 댓글