https://www.inflearn.com/course/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B3%B5%EB%A3%A1%EC%B1%85-%EC%A0%84%EA%B3%B5%EA%B0%95%EC%9D%98/unit/65271?tab=curriculum
ํ์ต ํ์ด์ง
www.inflearn.com
โ ํ๋ก์ธ์ค๋ ๋
๋ฆฝ์ ์ผ๋ก๋ cooperatingํ๋ฉด์ ๋์์ ์คํ๋ ์ ์์
ใโข ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ์์ดํ์ง ์์ : ๋
๋ฆฝ์ ํ๋ก์ธ์ค
ใโข ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํฅ์ ์ฃผ๊ณ ๋ฐ์, ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ์์ด ํจ : cooperating ํ๋ก์ธ์ค
โ IPC: Inter-ํ๋ก์ธ์ค ์ปค๋ฎค๋์ผ์ด์
(ํ๋ก์ธ์ค๊ฐ ์ปค๋ฎค๋์ผ์ด์
)
ใโข Cooperating ํ๋ก์ธ์ค๋ IPC๋ฉ์ปค๋์ฆ์ด ํ์ํจ.
ใใ- ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์์(๋ฐ์ดํฐ๋ฅผ ์๋, ๋ฆฌ์๋ธ ํ ์ ์์)
โ IPC ๋๊ฐ์ง ๊ธฐ๋ณธ๋ชจ๋ธ
ใโข shared memory(๋ฉ๋ชจ๋ฆฌ ์์ด)
ใโข message passing(๋ฉ์ธ์ง ์ ๋ฌ)
Figure 3.11 ์ปค๋ฎค๋์ผ์ด์
models. (a) Shared memory. and (b) Message Passing.
โ ์์ฐ์-์๋น์ ๋ฌธ์
ใโข cooperating ํ๋ก์ธ์ค๋ฅผ ์ค๋ช
, cooperating ํ๋ก์ธ์ค์ ๊ณตํต๋ ํจ๋ฌ๋ค์
โ Producer-Consumer Problem:
ใโข ์์ฐ์๊ฐ ์ ๋ณด๋ฅผ ์์ฐํ๊ณ ์๋น์๊ฐ ๊ทธ ์ ๋ณด๋ฅผ ์๋นํจ.
ใโข ์๋ฅผ ๋ค์ด,
ใใ- ์ด๋ค ์ปดํ๋ผ์ด์ด๊ฐ ์ด์
๋ธ๋ฆฌ ์ฝ๋๋ฅผ ์์ฐํ๊ณ , ์ด์
๋ธ๋ฌ๊ฐ ๊ทธ๊ฒ์ ์๋นํจ.
ใใ- ์ด๋ค ์น ์๋ฒ๊ฐ HTML ํ์ผ์ ์์ฐํ๊ณ , ๋ธ๋ผ์ฐ์ ๊ฐ ์๋นํจ.
3.5 IPC ์์ด๋ ๋ฉ๋ชจ๋ฆฌ ์์คํ
โ ์์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ :
ใโข ์์ฐ์์ ์๋น์๊ฐ ๋์์ runํ ์ ์์.
ใโข buffer๋ฅผ ์ฌ์ฉ : ์์ฐ์๋ ๋ฒํผ๋ฅผ ์ฑ์ฐ๊ณ , ์๋น์๋ ๊ทธ ๋ฒํผ๋ฅผ ๋น์ด๋ค.
ใโข ์์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ ์์ฐ์์ ์๋น์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋ถ๋ถ ์.
โ ์์ด๋ ๋ฒํผ์ ์ ์
ใโข ์์ฐ์์ ์๋น์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ญ์ ์์.
Figure 3.12 The producer ํ๋ก์ธ์ค using shared memory.
Figure 3.13 The consumer ํ๋ก์ธ์ค using shared memory.
โ ์์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
ใโข ํ๋ก์ธ์ค๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์์ญ์ ๊ณต์ ํด์ผํ๊ณ , ๊ณต์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ณ ์กฐ์ํ๊ธฐ ์ํ ์ฝ๋(์์ฉํ๋ก๊ทธ๋จ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ช
์์ ์ผ๋ก ์์ฑํ)๊ฐ ์์ด์ผ ํจ.
3.6 IPC in Message-Passing Systems
โ ๋ฉ์์ง ํจ์ฑ:
ใโข O/S๊ฐ cooperating ํ๋ก์ธ์ค์ ๋๊ตฌ๋ฅผ ์ ๊ณตํจ
ใ- ๋ฉ์์ง ํจ์ฑ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ ์๋ก ์์ฌ์ํตํจ
โ ๋ฉ์์ง ํจ์ฑ ๋๊ตฌ์ ๋๊ฐ์ง ๋์: (๋ฉ์ธ์ง) ์๋ / ๋ฆฌ์๋ธ
Figure 3.14 The producer process using message passing.
Figure 3.15 The consumer ํ๋ก์ธ์ค using message passing.
โ ์์ฌ์ํต ๋งํฌ:
ใโข ๋ง์ฝ ๐์ ๐ ํ๋ก์ธ์ค๊ฐ ์ปค๋ฎค๋์ผ์ด์
ํ๊ณ ์ถ์ผ๋ฉด,
ใใ- ์๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์์ผ ํจ.
ใโข ์ด comm. link(์ปค๋ฎค๋์ผ์ด์
๋งํฌ)๋ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ํ๋ ์ ์๋ค.
ใใ- ์ง/๊ฐ์ ์ปค๋ฎค๋์ผ์ด์
.
ใใ- ๋์ ๋ฐ์์ /๋น๋์๋ฐ์์ ์ปค๋ฎค๋์ผ์ด์
ใใ- ์๋์ / ๋ช
์์ ๋ฒํผ๋ง
โ ์ง์ ์ปค๋ฎค๋์ผ์ด์
์์
ใโข communicate๋ฅผ ์ํ๋ ๊ฐ ํ๋ก์ธ์ค๋ ์ปค๋ฎค๋์ผ์ด์
์ ์์ทจ์๋ ๋ฐ์ ์๋ฅผ ๋ช
์ํด์ผ ํจ.
ใโข ์ด ๋ฐฉ์์ ๊ธฐ์ด๋
ใใ- send(๐, message) โ send a message to ํ๋ก์ธ์ค ๐.
ใใ- receive(๐, message) โ receive a message from ํ๋ก์ธ์ค ๐.
โ ์ง์ ์ ์ปค๋ฎค๋์ผ์ด์
๋งํฌ์ ํน์ฑ:
ใโข ๋งํฌ๋ ์๋์ ์ผ๋ก ํ์ฑ ๋จ.
ใโข ํ ๋งํฌ๋ ์ ํํ๊ฒ ๋ ํ๋ก์ธ์ค ๊ฐ์ ์ฐ๊ฒฐ ์
ใโข ๊ฐ ์์ ํ๋ก์ธ์ค๋ค ์ฌ์ด์๋ ํ๋์ ๋งํฌ๋ง ์กด์ฌ ํจ
โ ๊ฐ์ ์ ์ปค๋ฎค๋์ผ์ด์
์ปค๋ฎค๋์ผ์ด์
ใโข ๋ฉ์์ง๋ mailbox๋ค์ด๋ ํฌํธ๋ค์ ์ด์ฉํด์ ๋ณด๋ด๊ณ ๋ฐ์์ง.
ใโข A mailbox (ํฌํธ ๋ผ๊ณ ๋ ํจ)
ใใ- can be viewed abstractly as an object
ใใ- ํ๋ก์ธ์ค๋ค์ ์ํด์ ๋ฉ์์ง๋ฅผ ๋ฃ์ ์ ์๋ ๊ณณ
ใใ- ๋ฉ์์ง๋ค์ด ์ญ์ ๋ ์ ์๋ ๊ณณ
ใโข ์ด ์๋์ ๊ธฐ๋ณธ์
ใใ- send(๐ด, message) โ send a message to mailbox ๐ด.
ใใ- receive(๐ด, message) โ receive a message from mailbox ๐ด.
โ ๊ฐ์ ์ ์ปค๋ฎค๋์ผ์ด์
๋งํฌ์ ํน์ฑ:
ใโข ์์ ์ด๋ฃจ๋ ํ๋ก์ธ์ค๋ค ๋ชจ๋๊ฐ ์์ด๋ ๋ฉ์ผ๋ฐ์ค๊ฐ ์์ผ๋ฉด ํ ์์ ํ๋ก์ธ์ค๋ค์ ์ฌ๋ฌ๊ฐ์ ๋งํฌ๊ฐ ์๊ธธ ์ ์์
ใโข ํ ๋งํฌ๋ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๋ค์ ์ฐ๊ฒฐํ ์ ์์
ใโข ๊ฐ ์์ ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ๋ช ๊ฐ์ ๋ค๋ฅธ ๋งํฌ๋ค์ด ์กด์ฌํ ์ ์์
ใใ- ๊ฐ ๋งํฌ๋ ๋์๋๋ ๋ฉ์ผ๋ฐ์ค๊ฐ ํ๋ ์์
โ OS๋ ํ๋ก์ธ์ค๊ฐ ์๋์ ๊ฒ๋ค์ ํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํจ:
ใโข ์๋ก์ด ๋ฉ์ผ๋ฐ์ค๋ฅผ ์์ฑํ๊ธฐ
ใโข ๋ฉ์ผ๋ฐ์ค๋ฅผ ํตํด ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ
ใโข ๋ฉ์ผ๋ฐ์ค๋ฅผ ์ญ์ ํ๊ธฐ
โ ๋ค๋ฅธ ๋์์ธ ์ต์
:
ใโข blocking or non-blocking: synchronous or asynchronous
ใโข Blocking send: ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋๊น์ง ๋ฐ์ ์๊ฐ ๋งํ(ex. ์๊ธ๋ถ๊ณผ โ๋๊ธฐํ ํ์ ์๋น์ค)
ใโข Non-blocking send: ๋ฐ์ ๊ธฐ๊ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๋ค์ ํ๋ก์ธ์ค ๊ณ์ ์งํ
ใโข Blocking receive: ์์ ๊ธฐ๊ฐ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ ์ ์์ ๋๊น์ง ๋ฆฌ์๋ฒ๊ฐ ๋งํ
ใโข Non-blocking receive: ์์ ๊ธฐ๊ฐ ์ ํจํ ๋ฉ์์ง ๋๋ null ๋ฉ์์ง๋ฅผ ํ์ํจ