ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] - IPC
    CS/면접준비 2022. 9. 29. 17:22

    IPC(Inter-Process-Communication)


    독립적 구조를 가진 Process들 끼리 통신해야할 상황을 처리하여 준다.

     

    • Process는 독립적으로 실행되기 때문에 다른 Process에게 영향을 받지 않는다.
    • Kernel을 이용하여 IPC 설비를 이용해 통신 할 수 있다.

    Process간의 Data를 동기화 및 보호를 위하여 Semaphore와 mutex를 이용한다. ( 공유된 Resource에 하나의 프로세스만 접근 하는 경우 )

     

    IPC 종류

    1. 익명 Pipe

    • Pipe는 2개의 Process를 연결하는데, 하나의 Process에서만 Write가 가능하고 하나의 Process에서는 Read만 가능하다
    • 통신할 Process를 명확히 알 때 사용한다. ( Parent- Child )
    • 한쪽 방향으로만 통신이 가능한 반이중 통신이라고 부른다.
    • 양쪽다 송수신하기 위해서는 Pipe를 2개 사용해야 한다.

    2. Named Pipe(FIFO)

    • 전혀 모르는 상태의 Process 통신에 사용한다.
    • 익명 Pipe가 확장된 상태로 부모 프로세스와 무관한 다른 프로세스도 통신이 가능하다. ( 통신을 위해 이름있는 파일 사용)
    • Named Pipe 또한 Write/read가 동시에 불가능하다.

    3. Message Queue

    • I/O 방식은 Named Pipe와 동일하다.
    • Pipe와 달리 메모리 공간이다. ( 파이프가 아닌 어디에서나 물건을 꺼낼 수 있는 컨테이너 벨트 )
    • 사용할 Data에 번호를 붙임으로써, 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.

     

    4. Shared Memory

    • Pipe,Message Q가 통신을 위한 설비라면, 데이터 자체를 공유하도록 만들어진 설비이다.
    • Process는 Memory 영역은 독립적인 영역으로 다른 Process의 접근이 제한된다. 하지만, Process가 Data를 공유하고 싶은 상황도 발생한다. 이를 위해 Thread처러 Data 값을 공유하도록 만든 것이다.
    • Shared Memory는 Process간의 메모리 영역을 공유하여 사용 할 수 있도록 한다.
    • Process가 Kernel에 Shared Memory 할당 Request -> Kernel이 메로리 공간을 할당 -> 다른 Process들이 메모리 영역에 접근이 가능하다.

     

    중개자가 없고 메모리를 바라 봄으로 제일 빠르게 동작한다.

     

    5. Memory map

    • Shared Memory와 동일하게 메모리를 공유하여 준다.
    • Memory map은 열린 파일은 메모리에 맵핑 시켜주어 공유한다. ( 매개체 = 파일 + 메모리 )
    • 주로 파일과 같은 대용량 데이터를 공유 할 때 사용한다.

    6. Socket

    • 네트워크 Socket을 이용하여 공유한다.
    • Clinet-Server 구조로 원격에서 Process를 공유할 때 사용
    • Server( bind, listen, accept ) / Client (connect)

     

     

     

    'CS > 면접준비' 카테고리의 다른 글

    [OS] - DeadLock  (0) 2022.09.29
    [OS] - CPU Scheduling  (0) 2022.09.29
    [OS] - System call / PCB  (0) 2022.09.29
    [OS] - Interrupt  (0) 2022.09.29
    [OS] - Process vs Thread  (1) 2022.09.29

    댓글

Designed by Tistory.