프로세스간 통신 (IPC)

김두현·2023년 1월 16일
1

Backend Curriculum

목록 보기
14/19
post-thumbnail

Goal

  • 프로세스간 통신= IPC의 개념을 파악한다.
  • IPC 설비를 파악한다.
    • 공유 메모리
    • PIPE
    • Socket
    • Message Queue
    • Memory Map

IPC (Inter Process Communication)

프로세스간 통신을 한다는 것은 서로 데이터를 주고받음을 의미한다.
프로세스간의 통신의 범위는 다음과같이 존재한다.
1. 동일 프로세스 내부에서의 통신
2. 동일 컴퓨터 내부에서의 서로 다른 프로세스간 통신
3. 네트워크를 이용한 서로 다른 컴퓨터 내 프로세스간 통신
IPC는 커널에서 제공하는 IPC 설비를 통해 진행된다.
따라서, 상황에 맞는 설비 선택은 성능과 직결되기때문에 중요하다.
주요 설비들을 살펴보며, 각 설비의 특징을 알아보도록 하자.


공유 메모리

  • 공유 메모리 : 프로세스간 메모리 영역을 공유하여 데이터를 교환한다.
    • 프로세스가 커널에 공유 메모리 할당을 요청하면, 커널이 해당 프로세스에 메모리를 할당해준다.
    • 모든 설비들 중 가장 빠르다.
    • 모든 프로세스가 읽고 쓰기가 가능한 양방향 통신이 가능하다.
    • 많은 정보를 여러 프로세스에게 전달할 수 있다.

PIPE

  • PIPE : FIFO(선입선출) 구조의 PIPE를 연결해 데이터를 읽거나 쓴다.
    • 두 개의 프로세스를 연결하면, 하나의 프로세스는 읽기만 가능하고 다른 하나의 프로세스는 쓰기만 가능한 단방향 통신을 지원한다.
      따라서, 송신과 수신 모두 원한다면 두 개의 PIPE를 설치해야한다.
    • PIPE는 다음과같이 두 가지로 나뉜다.
    1. 익명 파이프 (Anonymous PIPE) : 통신할 프로세스가 명확할때 사용하며,
      다른 프로세스는 사용할 수 없다.
    2. 네임드 파이프 (Named PIPE) : 이름이 있는 파일을 통해 통신하므로 외부 프로세스와 통신할 수 있다.

Socket

  • Socket : 네트워크 환경에서의 프로세스간 통신을 지원한다.
    • 즉, 서로 다른 컴퓨터 내의 프로세스간 데이터를 교환한다.
    • 양 PC가 임의의 port를 정해 대화하기에 Server - Client 구조를 지닌다.

Message Queue

  • Message Queue : 메모리 공간을 사용한 PIPE
    • 입출력 방식은 PIPE와 동일하나, 데이터의 흐름이 아닌 메모리 공간이다.
    • 다수의 프로세스에 데이터를 전달할 수 있다.
    • Data Indexing을 통해 여러 프로세스가 데이터를 쉽게 다룬다.

Memory Map

  • Memory Map : 메모리 공간을 공유해준다.
    • 공유 메모리와의 차이점은, Memory Map은 열린 파일을 메모리에 mapping하여 공유한다.
    • 파일을 통한 대용량 데이터 공유에 용이하다.

✨오늘 내용은 여기까지✨


커리큘럼 남은 일정

인터넷

  • 인터넷 작동 원리
  • HTTP란?
  • 브라우저 동작 원리
  • DNS 작동 원리
  • 도메인 네임이란?
  • 호스팅이란?

    기본적인 프론트엔드 지식
  • HTML
  • CSS
  • JavaScript

    OS 및 일반적인 지식
  • 터미널 사용방법
  • OS 작동 방식
  • 프로세스 관리
  • 스레드와 동시성
  • 기본적인 터미널 명령어
  • 메모리 관리
  • 프로세스간 통신 (IPC)
  • 입출력 관리
  • POSIX 기초
  • 기본적인 네트워크 개념

    버전 관리
  • Git 기본 사용법

    DataBase
  • PostgreSQL (변경 가능성 있음)
  • MongoDB

    DataBase 상세 정보
  • ORM
  • ACID
  • Transaction
  • N + 1 Problem
  • DataBase 정규화
  • Index와 작동 방식

    API
  • 인증
  • REST
  • JSON APIs

    캐싱
  • CDN
  • Server side
  • Client side

    웹 보안 지식
  • MD5, SHA family, scyrpt, bcrypt
  • HTTPS, CORS, SSL/TL, 보안 정책

    Testing
  • 통합 테스트
  • 단위 테스트
  • 기능 테스트

  • CI/CD

    개발과 설계 원칙
  • SOLID
  • KISS
  • YAGNI
  • DRY

    아키텍처 패턴
  • 모놀로틱 앱
  • 마이크로서비스
  • SQA
  • Serverless

    검색 엔진
  • ElasticSearch

    메세지 브로커
  • RabbitMQ, Kafka

    컨테이너화 vs 가상화
  • Docker

    GraphQL
  • Apollo

  • 웹 소켓

  • 웹 서버

    확장성
  • 측정, 모니터링, 원격측정
  • 마이그레이션 전략
  • 수평적 확장 vs 수직적 확장
  • 관찰 가능성을 고려한 확장

참고 자료

https://heeonii.tistory.com/13
chappi님 velog
https://dar0m.tistory.com/233


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글