728x90

컴퓨터 시스템 내에서 실행되는 다른 프로세스 간에 정보, 데이터 또는 명령을 주고받는 방법을 의미합니다. 프로세스는 독립적으로 실행되는 프로그램의 실행 인스턴스를 나타내며, 이러한 프로세스들이 서로 통신할 수 있는 메커니즘은 다양한 방식으로 이루어질 수 있습니다.

프로세스 간 통신을 구현하는 주요 방법

파이프

단방향 통신 채널로, 한 프로세스에서 데이터를 쓰고 다른 프로세스에서 읽을 수 있습니다.

명명된 파이프

파일 시스템에서 사용되는 파이프로, 다른 프로세스들이 파일처럼 열고 읽거나 쓸 수 있습니다.

[이미지 출처] 파이프(PIPE)기반의 프로세스간 통신 : 네이버 블로그 (naver.com)

파이프의 특징과 사용법

  • 단방향 통신 : 파이프는 일방향 통신을 지원합니다. 데이터는 쓰기용 파이프로 전달되고, 읽기요 파이프로부터 읽혀집니다.
  • 운영 체제 추상화 : 파이프는 운영체제에서 제공하는 추상화된 개념으로, 프로세스가 직접 데이터를 주고받을 수 있도록 도와줍니다.
  • 유닉스 기반 시스템에서 주로 사용 : 파이프는 유닉스와 유닉스 기반 운영 체제에서 주로 사용됩니다.
  • 익명 파이프와 네임드 파이프 : 익명 파이프는 프로세스 간 통신을 위해 일시적으로 생성되며, 해당 프로세스의 하위 프로세스만 사용할 수 있습니다. 반면 네임드 파이프는 파일 시스템 상에 존재하며, 프로세스 간에 이름을 통해 접근할 수 있는 영구적인 파이프입니다.

메시지 큐

프로세스 간에 메시지를 비동기적으로 전송하는 기법입니다. 각 메시지는 우선순위와 함께 전달되며, 다양한 프로세스 간의 통신에 사용됩니다.

메시지 큐의 주요 특징과 동작 방식

  • 비동기 통신 : 메시지 큐는 프로세스 간의 통신을 비동기적으로 수행합니다. 하나의 프로세스는 메시지를 큐에 넣고, 다른 프로세스는 큐에서 메시지를 가져와 처리할 수 있습니다.
  • 큐 구조 : 메시지 큐는 데이터를 저장하고 관리하기 위한 큐 구조를 사용합니다.
  • 메시지 : 메시지 큐는 데이터나 명령을 메시지 형태로 교환합니다. 각 메시지는 특정 형식을 따르며, 수신자는 해당 형식을 인식하고 처리
  • 버퍼링 : 메시지 큐는 데이터를 버퍼하여 보관하므로, 송신자와 수신자 간의 처리 속도 차이를 조절하거나 데이터 유실을 방지할 수 있습니다.
  • 동기 또는 비동기 : 메시지 큐는 동기식 또는 비동기식으로 사용할 수 있습니다. 동기식으로 사용하면 수신자는 메시지가 도착할 때까지 기다립니다. 비동기식으로 사용하면 수신자는 메시지가 도착할 때까지 대기하지 않고 다른 작업을 수행할 수 있습니다.
  • 프로세스 간 격리 : 메시지 큐는 다른 프로세스 간에도 사용할 수 있으며, 프로세스 간 격리를 보장합니다. 이로 인해 안전하게 데이터를 교환할 수 있습니다.

소켓

네트워크 통신을 위한 인터페이스로, 로컬 머신 내의 프로세스뿐만 아니라 다른 컴퓨터와의 통신에도 사용됩니다. TCP/IP나 UDP 프로토콜을 이용하여 데이터를 주고받을 수 있습니다.

소켓의 주요 특징과 동작 방식

  • 네트워크 통신 : 소켓은 주로 네트워크 상에서 프로세스 간 통신을 가능하게 해주는 인터페이스입니다. TCP/IP 프로토콜 스택을 사용하여 데이터를 전송하고 수신합니다.
  • IP 주소와 포토 : 소켓 통신에서 각 프로세스는 IP 주소와 포트 번호로 식별됩니다. IP 주소는 네트워크 상에서 호스트를 식별하고, 포트 번호는 특정 프로세스를 식별합니다.
  • 서버와 클라이언트 : 소켓은 서버와 클라이언트 모델로 작동합니다. 서버 소켓은 연결 요청을 수신하고 클라이언트 소켓과의 연결을 수립합니다. 클라이언트 소켓은 서버에 연결을 요청하고 데이터를 전송합니다.
  • 전이 중 통신 : 동시에 양방향 데이터 흐름을 제공하며, 클라이언트와 서버 간의 양방향 대화가 가능합니다.
  • 스트림과 데이터 그램 소켓 : 소켓은 스트림 소켓과 데이터 그램 소켓으로 나뉩니다. 스트림 소켓은 연결 지향적이고 신뢰성 있는 통신을 제공하며, 데이터의 순서를 보장합니다. 데이터 그램 소켓은 비연결성 통신을 제공하며, 작은 크기의 패킷을 주고받을 때 유용합니다.

공유 메모리

여러 프로세스가 같은 물리적 메모리 영역을 공유하여 데이터를 주고받는 방식입니다. 빠른 데이터 교환에 사용되며, 동기화 문제에 유의해야 합니다.

공유 메모리의 주요 특징과 동작 방식

  • 메모리 영역 공유 : 여러 프로세스가 하나의 물리적 메모리 영역을 공유하여 사용하며 프로세스 간 데이터 전송이 빠르며, 복사나 중재 과정이 필요 없어 비용이 절감됩니다.
  • 데이터 동기화 : 공유 메모리를 사용하는 프로세스들 간에 데이터 동기화가 필요합니다. 프로세스가 공유 메모리에 데이터를 쓰거나 읽을 때, 동시 접근으로 인한 충돌을 방지하기 위해 동기화 메커니즘을 사용해야 합니다.
  • IPC 기법 : 공유 메모리는 여러 프로세스가 접근할 수 있기 때문에, 데이터의 보호와 안전성을 확보하기 위해 적절한 접근 제어와 권한 관리가 필요합니다.
  • 운영 체제 의존성 : 공유 메모리는 운영 체제에 따라 구현이 달라질 수 있습니다. 각 운 영 체제마다 다른 방식으로 공유 메모리를 사용하며, 해당 운영 체제의 API와 라이브러리를 활용하여 구현합니다.

RPC

원격 프로시저 호출을 통해 두 프로세스 간에 함수나 프로시저를 호출하고 그 결과를 주고받을 수 있는 방법입니다.

파일 공유 : 여러 프로세스가 파일을 공유하여 데이터를 읽고 쓰는 방식입니다. 동기화와 접근 제어가 필요합니다.

RPC의 주요 특징과 동작 방식

  • 로컬 함수 호출과 유사 : RPC는 클라이언트 코드에서 서버 측 함수를 호출하는 것처럼, 로컬 함수를 호출하는 것과 유사한 방식을 제공합니다. 이로 인해 네트워크 상의 원격 프로시저 호출을 추상화하며, 프로그래머에게 편리함을 제공합니다.
  • 프로토콜과 인코딩 : RPC 시스템은 클라이언트와 서버 간의 데이터 전송을 위한 프로토콜을 정의합니다.
  • Stub 생성 : 클라이언트와 서버 간의 RPC 통신을 위해 클라이언트 측과 서버 측에서 각가 스텁 코드가 생성됩니다.
  • 언어 및 플랫폼 독립성 : RPC는 다양한 프로그래밍 언어와 플랫폼 간에 독립적으로 작동하도록 설계됩니다.
  • 원격 객체 호출 : RPC는 함수뿐 아니라 객체 지향적인 접근을 지원하여 원격 객체의 메서드를 호출할 수 있습니다.
  • 보안 및 에러 처리 : RPC 시스템은 데이터 보안과 오류 처리를 고려하여 구현되어야 합니다. 데이터 암호화, 인증, 권한 관리 등의 기능을 포함하여 안전한 통신을 보장할 수 있어야 합니다.
728x90

'BackEnd > OS에 대한 전반적인 지식' 카테고리의 다른 글

입출력 I/O관리  (0) 2023.08.16
메모리 관리  (0) 2023.08.16
스레드와 동시성  (0) 2023.08.16