프로세스가 독립적이다: 데이터를 공유하지 않는다.
IPC(Inter-Process Communication)란?
- 협력하는 프로세스들 간에 데이터를 전달하고 받는 것을 허용하는 것.
IPC의 두가지 모델
- 공유 메모리
- Producer-Consumer 문제
- 생산자가 정보를 생산하고 소비자가 정보를 소비한다.
- 웹 서버가 HTML 파일을 생산하고 브라우저가 이를 소비한다.
- 공유 메모리는 생산자와 소비자가 공유하는 메모리이다.
- 생산자는 버퍼를 채우고, 소비자는 버퍼를 비운다.
- 공유 메모리의 문제점
- 생산자가 여러개이고 소비자도 여러개일 경우 버퍼 구현이 복잡해진다.
- Prosumer(생산자면서 소비자)일 경우에는 문제점 해결.
- 해결책: 메시지 패싱(Message-Passing)
- Producer-Consumer 문제
- 메시지 패싱(Message-Passing)
- OS의 메시지큐를 통해 메시지를 주고받음
- 반드시 메시지를 주고받아야 함.
- send(message), receive(message)
- 전달 방식
- 직접 통신
- 통신 링크가 자동으로 생성됨
- 한 쌍의 프로세스에 반드시 하나의 링크만 생성됨
- 간접 통신
- 포트로 부터 메시지를 받음
- 생산자와 소비자가 포트(port, mailbox)를 통해 메시지를 주고 받는다
- 주고받을 때에만 포트가 열림(항상 열어두지 않아도 돼서 좋음)
- 여러 생산자와 여러 소비자를 연결할 때에 용이하다
- OS가 해줄 일
- 포트 생성
- 포트를 통해 메시지를 요청, 응답
- 포트 삭제
- Blocking send
- 메시지를 돌려받을 대까지 전송자는 block된다.
- Non-blocking send
- 전송자는 메시지를 보내고 할 일을 계속 이어나간다
- Blocking receive
- 소비자는 메시지가 사용가능할 때까지 블락된다
- Non-blocking receive
- asynchronous
- 직접 통신
'Computer Science > 운영체제' 카테고리의 다른 글
쓰레드의 이해 (Thread & Concurrency) (0) | 2022.12.06 |
---|---|
프로세스간 통신의 실제 (IPC) (0) | 2022.12.01 |
프로세스에 대해 이해해보자 (0) | 2022.11.22 |
운영체제의 개념과 구조 (0) | 2022.11.15 |
운영체제란? (0) | 2022.11.15 |