프로세스 - 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: 서로 시간을 맞추지 않는 것. 작업을 맡기고 신경쓰지 않는다.

Synchronous Blocking I/O
Synchronous Non-Blocking I/O
Asynchronous Non-Blocking I/O (AIO)

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