상세 컨텐츠

본문 제목

IPC(Inter Process Communication)

Computer Science/OS

by yellowmarine 2024. 3. 20. 11:39

본문

IPC란?

  • process 끼리 데이터를 공유 혹은 특정 메세지를 전달하기 위해 사용하는 것을 목적으로 한다.
  • OS의 경우 systemcall이 대표적이다.
  • 필요성
    • 특정 process의 child process와 통신이 필요한 상황(parent process 코드 변경 혹은 process kill)
    • 각각 다른 process 간의 자원 공유가 필요한 상황, thread의 자원 공유와는 다른 상황. 하지만 thread의 경우도 IPC를 활용하여 공유를 한다. (동일 file에 대한 접근 후 write를 위한 동작을 할 경우 mutex에 걸리게 된다. ex) os.file.close() 의 경우 비정상적인 접근으로 문제를 일으킴)
    • 성능 향상을 위한 multi processing, parrell process 를 하기위해 필요.

종류

(a) Indirect 방식, (b) Direct 방식

Direct 방식

  • Pipe, Kernal
    • Pipe, Kernal
      • Parent process의 fork를 통한 child process 생성시 사용.
      • 장점
        • synchronize 할 필요가 없어 구현의 편의성이 있음.
      • 단점
        • 주로 pipe 혹은 kernal 을 사용할 경우 system call의 방식을 사용하기때문에 context switching이 빈번하게 일어나 부하가 심해질 수 있다.
        • 커널을 사용하는 경우 속도가 느리다.
  • Shared memory
    • Process 사이의 공유 memory 공간을 생성하여 사용하는 방식.
    • 장점
      • 경우 속도가 매우 빠르다.
    • 단점
      • shared memory의 경우 공유 자원에 대한 접근을 하기때문에 synchronize를 위한 코딩의 불편함이 있다.

Indirect 방식

  • message queue 방식을 통해 통신한다.
  • 각 process를 식별하기위해 pid를 사용한다
  • 장점
    • N : N 연결이 가능하기 때문에 통신에 자유롭다.
  • 단점
    • 단방향 통신이기 때문에 send, recieve에 대한 2개의 queue를 생성해줘야한다.

'Computer Science > OS' 카테고리의 다른 글

Virtual Memory  (0) 2024.03.20
Virtual Machine  (0) 2020.10.15
Multiprocessor, Multiprograming  (0) 2020.10.13
OS, DMA  (0) 2020.10.13

관련글 더보기