Roadmap

OS and General Knowledge - 7

donghyeob.k 2022. 2. 9. 21:10

Interprocess Communication(IPC)

Process는 두 가지 타입이 될 수 있음

  • Independent process - 다른 프로세스의 실행에 영향을 받지 않음
  • Co-operating process - 다른 프로세스의 실행에 영향을 받음

독립적인 프로세스가 효율적으로 실행될 것 같지만 협력적인 프로세스들이 계산 속도,
편의성 및 모듈성을 높일 수 있는 상황이 많다.
IPC는 프로세스가 서로 통신하고 작업을 동기화할 수 있도록 하는 메커니즘으로 프로세스 간의 협력 방법이다.

 

Shared Memory

생산자-소비자 문제
생산자와 소비자의 두 가지 프로세스가 있을 때 생산자는 일부 품목을 생산하고 소비자는 해당 품목을 소비한다.
두 프로세스는 생산자가 생성한 항목이 저장되고 필요시 소비자가 항목을 소비하는 공간을 공유한다. 이 문제에는 두 가지 유형이 있는데

1. 생산자가 계속 생산할 수 있고 버퍼의 크기에 제한이 없는 유형

2. 크기에 제한이 있는 유형

생산된 총항목이 버퍼의 크기와 같으면 생산자는 소비자가 소비할 때까지 기다린다. 마찬가지로 소비자는 품목의 가용성을 확인하며 사용할 수 있는 항목이 없으면 생산자가 생산할 때까지 기다린다.

 

Message Passing

Message Passing에서는 공유 메모리를 사용하지 않고 서로 통신한다. OS가 메모리 보호를 위해 대신하여 전달해주는 것으로 안전하고 동기화 문제가 없다. 또한 통신 링크를 먼저 설정하고(링크가 이미 있는 경우 다시 설정하지 않음) basic primitives를 사용하여 메시지 교환을 시작한다.

메시지는 헤더와 본문으로 구성되며 크기는 고정 또는 가변일 수 있다. 헤더는 메시지 유형, 목적지 ID, 소스 ID, 메시지 길이 및 제어 정보를 저장하는 데 사용되며 그중 제어 정보에는 버퍼 공간, 시퀀스 번호, 우선순위가 부족할 경우 수행할 작업과 같은 정보가 포함된다.

 

  • direct communication - 커널이 메시지를 직접 받아서 전달하는 방식
  • indirect communication - A가 커널에 특정 메시지를 전달하고 B에게 가져가라고 전달하면 B가 커널로부터 읽어오는 방식