[운영체제] 프로세스 간 통신(IPC)

cosmos-JJ·2023년 9월 20일
0

Computer Science

목록 보기
9/15
post-thumbnail

프로세스 간 통신(IPC : Inter-Process Communication)

프로세스끼리는 기본적으로 자원을 공유하지 않지만, 프로세스끼리도 충분히 자원을 공유하고 데이터를 주고 받을 수 있다. 이렇게 프로세스 간의 자원을 공유하고 데이터를 주고받는 것을 프로세스 간 통신(IPC)이라고 한다.


IPC 종류 (공유 메모리, 파이프, 소켓)

공유 메모리 (Shared Memory)

프로세스들은 서로 공유하는 메모리 영역을 두어 데이터를 주고받을 수 있다. 이런 메모리 영역을 공유 메모리라고 한다.

  • 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당 ->이후 다른 프로세스들은 해당 메모리 영역에 접근

  • 프로세스간 읽기와 쓰기를 모두 필요로 할 때 사용

  • 대량의 정보를 다수의 프로세스에세 배포 가능

  • 중개자 없이 곧바로 메모리에 접근할 수 있기 때문에 모든 IPC중에서 가장 빠르게 작동


파이프 (Pipe)

파이프는 통신을 위한 메모리 공간(버퍼)를 생성하여 프로세스가 데이터를 주고 받게 한다.

파이프의 종류

  • 익명 파이프 (Anonymous PIPE)
    • 일반적인 파이프
    • 통신할 프로세스가 명확하게 알 수 있을 경우 사용
    • 부모-자식 또는 형제 프로세스 간 통신에 사용
    • 두 개의 프로세스를 연결하고, 하나의 프로세스는 데이터를 쓰기만, 다른 하나는 데이터를 읽기만 가능 (한쪽 방향으로만 통신이 가능하기에 반이중 통신이라고 함)

  • 네임드 파이프 (Named PIPE)
    • 전혀 모르는 상태의 프로세스들 사이의 통신에 사용
    • 부모 프로세스와 무관한 다른 프로세스도 통신 가능
    • FIFO라 불리는 특수 파일을 이용해 서로 관련없는 프로세스 간 통신에 사용

소켓 (Socket)

소켓은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다.

네트워크를 이용해 데이터를 송수신 하고 싶은 프로그램들은 소켓을 거쳐야 한다.

  • 클라이언트와 서버가 소켓을 통해서 통신하는 구조로, 원격에서 프로세스 간 데이터를 공유할 때 사용
  • 전이중(양방향) 통신이 가능
  • 서버/클라이언트 환경을 구축하는데 용이
  • 중대형 애플리케이션에서 주로 사용

참고

profile
🤍도전하는 건 즐거워요🤍

0개의 댓글