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가지 방식
- 무 용량 (Zero Capacity)
- 큐의 최대 길이: 0
- 송신자는 수신자가 메시지를 수신할 때까지 기다려야 함
- 유한 용량 (Bounded Capacity)
- 큐의 길이: N
- 큐의 여유공간에 따라 대기 or 실행
- 무한 용량 (Unbounded Capacity)
- 큐의 길이: 무한
- 송신자는 절대 대기X
Windows의 메시지 전달: 고급 로컬 프로시저 호출 (ALPC: Advanced Local Procedure Call)
728x90
반응형
'Computer Science > Operating System' 카테고리의 다른 글
[OS] 클라이언트-서버 환경에서의 통신: 소켓(Sockets), 원격 프로시저 호출(RPC), 원격 메소드 호출(RMI) (0) | 2024.04.30 |
---|---|
[OS] 파이프(Pipe)란? 일반 파이프(Ordinary Pipes), 지명 파이프(Named Pipes) (0) | 2024.04.29 |
[OS] 프로세스간 통신 (Cooperating Processes) (0) | 2024.04.29 |
[OS] 프로세스에 대한 연산 (Operations on Processes), 프로세스 생성&종료 (0) | 2024.04.28 |
[OS] 프로세스 스케줄링(Process Scheduling), PCB(Process Control Block), 문맥 교환(Context Switch) (0) | 2024.04.28 |