[Concurrency] Communicating Sequential Processes

Communicating Sequential Processes(์ดํ•˜ CSP)๋Š” ๋™์‹œ์„ฑ ์‹œ์Šคํ…œ์˜ ์ฃผ์š” ๋ชจ๋ธ ์ค‘ ํ•˜๋‚˜๋‹ค.
Actor ๋ชจ๋ธ๊ณผ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ์ข€ ๋‹ค๋ฅด๋‹ค.

1978๋…„์— Tony Hoare์— ์˜ํ•ด ์ œ์‹œ๋œ ์ด๋ก ์ด๋‹ค. ์ด ์–‘๋ฐ˜์ด quicksort ๊ฐ™์€ ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ํ•ต์‹ฌ ์ด๋ก ๋“ค์„ ๋งŽ์ด ๋งŒ๋“  ์–‘๋ฐ˜์ด๋‹ค.

์ด ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ ์šฉํ•œ ๋Œ€ํ‘œ์ ์ธ ๊ตฌํ˜„์ฒด๋กœ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Go๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋‹ค์Œ์œผ๋กœ ์œ ๋ช…ํ•œ๊ฑด Clojure์˜ core.async๋‹ค.

Erlang์€ CSP์˜ ์ •์˜๋ฅผ ์™„์ „ํžˆ ์ถฉ์กฑํ•˜์ง„ ์•Š์•˜์ง€๋งŒ, ์˜ํ–ฅ์„ ์ข€ ๋ฐ›์•„์„œ ๋งŒ๋“ค์–ด์กŒ๋‹ค.
๊ทธ ์™ธ์—๋„ ์ฑ„๋„์„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ์ตœ์†Œํ•œ ๋А์Šจํ•œ ์˜๋ฏธ์—์„œ์˜ CSP๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.




๊ธฐ๋ณธ ์›๋ฆฌ

๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ ์ž์ฒด๋Š” ๊ทธ๋ฆฌ ๋ณต์žกํ•  ๊ฒƒ์ด ์—†๋‹ค.
ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๊น”๊ณ  ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋กœ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด, ๋‹น์—ฐํžˆ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ผ์ด ์žฆ์„ ๊ฒƒ์ด๋‹ค. ๊ณ ์ „์ ์ธ ๋™์‹œ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•๋ก ์—์„œ๋Š” ๊ทธ๋ƒฅ Mutex ๊ฐ™์€๊ฑฐ ๊น”๊ณ  ๋ณต์žกํ•˜๊ฒŒ ์ œ์–ด๋ฅผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ CSP์—์„œ๋Š”

์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด "์ฑ„๋„"์ด๋ž€ ๋‹จ์œ„๋ฅผ ํ†ตํ•ด์„œ ์„œ๋กœ ํ†ต์‹  ๊ธฐ๋ฐ˜์˜ ๊ณต์œ ๋ฅผ ํ•˜๋„๋ก ์œ ๋„ํ•œ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋‚˜ ๊ด€๋ จ๋œ ์ˆ˜๋งŽ์€ ๋ฒ„๊ทธ๋“ค์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ๊ฑด ๋ณธ์งˆ์ ์œผ๋กœ ํŽธ์˜์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ์œ„ํ•œ ๊ฒƒ์ด์ง€, ์„ฑ๋Šฅ์„ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋ก ์€ ์•„๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋ฎคํ…์Šค ๊ฑธ๊ณ  ๋Œ๋ฆฌ๋Š”๊ฒŒ ๋” ๋น ๋ฅด๋‹ค.




vs Actor Model

https://blog.naver.com/sssang97/223124061290
๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ„๋„๋กœ ๋„์šฐ๊ณ  ์ฑ„๋„ ๊ฐ™์€ ํ†ต์‹  ํ˜•ํƒœ๋ฅผ ์‘์šฉํ•ด์„œ ์„œ๋กœ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” - communicate๋ฅผ ํ•œ๋‹ค๋Š” ์ ์—์„œ CSP์™€ Actor๋Š” ๊ฝค๋‚˜ ๋น„์Šทํ•œ ๋ถ€๋ถ„์ด ๋งŽ๋‹ค.
ํ•˜์ง€๋งŒ ๊ทผ๋ณธ์ ์ธ ๋ถ€๋ถ„์—์„œ๋Š” ์ฐจ์ด์ ์ด ๊ฝค ๋งŽ๋‹ค.


  1. CSP๋Š” Actor์— ๋น„ํ•ด ๊ฐ€๋ณ๋‹ค.

Actor๋Š” ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•˜๊ธฐ์—” ์ถ”์ƒํ™”๋ฅผ ์œ„ํ•œ ์š”์†Œ๊ฐ€ ๋งŽ์€ ํŽธ์ด๋‹ค.
Actor๋Š” Actor๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์‹๋ณ„๋ฒˆํ˜ธ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. ๊ทธ์— ๋น„ํ•ด CSP์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ๋ƒฅ ํ”„๋กœ์„ธ์Šค์ผ ๋ฟ์ด๋‹ค.

์• ์ดˆ์— Actor ์ฃผ ๋ชฉ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋ถ„์‚ฐํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋‹จ์ˆœ OS ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ ์ˆ˜์ค€์— ๊ตญํ•œ๋˜์ง€ ์•Š๋Š”๋‹ค.
๋ฐ˜๋ฉด CSP๋Š” ๋‹จ์ผ ๋จธ์‹ ์—์„œ์˜ ๋‹จ์ˆœํ•œ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค.

2. ํ†ต์‹  ๋ฐฉ์‹
CSP์—์„œ๋Š” ์ฑ„๋„์„, Actor Model์€ ๋ฉ”์ผ๋ฐ•์Šค(mailbox)๋ผ๋Š” ๊ฒƒ์„ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ์ด๋ฆ„๋งŒ ๋‹ค๋ฅธ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ตฌ์กฐ๋„ ์ข€ ๋‹ค๋ฅด๋‹ค.

์ฑ„๋„์€ ํ•ญ์ƒ ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ฐ”๋กœ ๋„์ฐฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋œ๋‹ค.
๋ฐ˜๋ฉด ๋ฉ”์ผ๋ฐ•์Šค๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ผ๋‹จ ์˜๊ณ  ๋ณธ๋‹ค. ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€๋„ ์•Š๊ณ , consumer๊ฐ€ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋”๋ผ๋„ ์ผ๋‹จ ์œ๋‹ค. ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.



์ฐธ์กฐ
https://en.wikipedia.org/wiki/Communicating_sequential_processes
https://dev.to/karanpratapsingh/csp-vs-actor-model-for-concurrency-1cpg