728x90
반응형

메세지 전달 (Message Passing)

동일한 주소 공간을 공유하지 않고도 프로세스들이 서로 통신하고 동기화할 수 있도록 허용하는 기법

최소 2가지 연산 제공

  • send(message): 메시지는 ‘고정’ or ‘가변’ 길이
  • receive(message)
  • 통신 하기 전, 둘 간의 통신 링크(Comuunication Link)가 설정 되어야 함

직접 통신 (Direct Communication)

통신을 원하는 각 프로세스는 ‘수신자’ 또는 ‘송신자’ 이름을 반드시 명시해야 함

  • send(P, message): 프로세스 P에게 메시지 전송
  • receive(Q, message): 프로세스 Q로부터 메시지 수신

 

직접 통신 연결의 특성

  • 서로 통신하기 위해 상대방의 신원만 알면 됨
  • 통신하는 프로세스 각 쌍 사이에 정확히 하나의 연결이 존재해야 함
  • 단점
    • 프로세스 정의의 제한된 모듈성
    • 상대방 이름이 달라질 때마다 수정해야 함

간접 통신 (Indirect Communication)

메시지를 메일박스 or 포트(Port)로 송신 및 수신

메일박스 (Mailbox)

프로세스에 의해 메시지를 수신하거나, 제거할 수 있는 객체, 각 메일박스는 고유의 ID를 가짐
  • 다수의 서로 다른 연결이 존재할 수 있음
  • send(A, message), receive(A, message), 여기서 A는 메일박스(Mailbox) 이름

동기화 (Syncbhronization)

메시지 전달(Message Passing)은 봉쇄형(Blocking) or 비봉쇄형(Nonblocking), 동기식 or 비동기식

 

 

봉쇄형(Blocking)은 동기식(Synchronous)

  • 봉쇄형 보내기 (Blcoking send)
    • 송신하는 프로세스는 보낸 메시지가 수신될때까지 봉쇄됨
  • 봉쇄형 받기 (Blocking receive)
    • 메시지가 이용 가능할 때까지 수신 프로세스가 봉쇄됨

 

비봉쇄형(Non-blocking)은 비동기식(Asynchronous)

  • 비봉쇄형 보내기 (Non-blocking send)
    • 송신하는 프로세스가 메시지를 보내고 나서, 곧바로 다시 작업을 재시작
  • 비봉쇄형 받기 (Non-blocking receive)
    • 송신하는 프로세스가 유현한 메시지 or Null을 받음

Buffering

통신하는 프로세스에 의해 교환되는 메시지는 임시 큐에 들어 있음

큐(Qeue)를 구현하는 3가지 방식

  1. 무 용량 (Zero Capacity)
    • 큐의 최대 길이: 0
    • 송신자는 수신자가 메시지를 수신할 때까지 기다려야 함
  2. 유한 용량 (Bounded Capacity)
    • 큐의 길이: N
    • 큐의 여유공간에 따라 대기 or 실행
  3. 무한 용량 (Unbounded Capacity)
    • 큐의 길이: 무한
    • 송신자는 절대 대기X

Windows의 메시지 전달: 고급 로컬 프로시저 호출 (ALPC: Advanced Local Procedure Call)

Windows의 고급 로컬 프로시저 호출(ALPC)

728x90
반응형
HaSeon9