프로세스 - 2
chanto11
·2021. 3. 10. 14:16
Interprocess Communication : IPC : 프로세스간 통신
문제: 프로세스는 서로 독립적이지 않고 서로 협력해야하는 상황에서 어떤식으로 처리해야 할까.
IPC 매커니즘: 프로세스간 데이터를 교환하는 과정 (send data - receive data)
IPC의 두가지 모델: shared memory (공유 메모리), message passing (OS가 처리)
※ Producer-Consumer Problem : 생산자-소비자 문제
- 생산자는 정보를 생산, 소비자는 정보를 소비
[ compiler -> assemly -> assembler ], [ web server -> HTML -> browser ]
Shared-Memory System
생산자와 소비자가 동시(concurrency)에 동작할 수 있다. (buffer : 버퍼 를 이용한 방식)
※ 버퍼 사이즈가 다차면 producer = wait, 버퍼가 비어있으면 consumer = wait
[ producer -> fill the buffer[ ■■■] -> □consumer(empty the buffer) ]
즉. shared memory === buffer
단점: shared memory 관리를 개발자가 모두 작업해줘야한다.
Message-Passing System
OS가 제공하는 기능을 통해 프로세스간 Message를 주고 받는다. ( send(message), receive(message) )
send, receive 기능을 통해 메세지를 주고받고 나머지 관리는 OS가 담당한다.
※ Communication Links
: 두개의 process P 와 process Q는 send와 receive만으로 메세지를 주고받는다.
- Communication Link 의 다양한 방법
- direct or indirect : 직접 간접
- synchronous and asynchronous : 동기 비동기
- automatic or explicit buffering : 자동 수동(버퍼)
- direct : 프로세스를 정해서 보낸다. ( Ex. send(P, message), receive(Q, message) )
= 자동 링크 생성, 명시적인 링크
- indirect : 메세지를 mailbox(= port)를 이용하여 주고 받는다.
( Ex. send(A(= port), message), receive(A(= port), message) )
= 여러개의 링크가 형성될 수 있다.
- blocking - non-blocking : synchronous - asynchronus
= blcoking - non-blocking : 직접 제어할 수 없는 대상을 처리
= synchronous - asynchronus : 제어할 수 있는 대상을 처리
blocking: 직접 제어할 수 없는 대상이 작업이 끝날 때까지 제어권을 넘겨주니 않는 것. Ex. IO, 멀티쓰레드 동기화
non-blocking: 직접 제어할 수 없는 대상의 작업 처리 여부와 상관없이 자신의 작업을 하는 것.
synchronous: 두 가지 이상의 대상이 서로 시간을 맞춰 행동하는 것. 하나가 된 것처럼
(같은 시작 - 같은 종료, A종료 - B시작)
[A] -----> [A]
[B] -----> [B]
OR
[B] -----> [B]
asynchronous: 서로 시간을 맞추지 않는 것. 작업을 맡기고 신경쓰지 않는다.
Asynchronous Blocking은 너무 비효율적이라 모델이 없다.
'운영체제' 카테고리의 다른 글
스레드 와 동시성 - Thread & Concurrency (0) | 2021.03.23 |
---|---|
프로세스 - 3 (0) | 2021.03.18 |
프로세스 - 1 (0) | 2021.03.09 |
운영체제 - 2 (0) | 2021.03.08 |
컴퓨터와 운영체제 - 1 (0) | 2021.03.08 |