๋ฐํ์(Runtime) visual code์์ ๋ธ๋ผ์ฐ์ ์คํ ๋จ์ถํค: Alt+B Go runtime์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ๊ฐ๋น์ง ์์ง, ๋์์ฑ์ ํฌํจํ์ฌ Go ํ๋ก๊ทธ๋ฆผ์ ์คํ์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ๋ฌธ์์์๋ Go runtime์ ์์ธํ ์ดํด๋ณด๊ณ ์ํคํ
์ด, ํน์ฑ๊ณผ ์ฅ์ ์ ์ดํด๋ด
๋๋ค. Go Runtime Architecture Go runtime์ ๋ชจ๋์์ด๊ณ ์ ์ฐํ๊ฒ ์ค๊ณ๋์์ผ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ํน์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋์์ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๊ณ์ธต์ ์ํคํ
์ณ๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๋ฐํ์์ ์ค์ผ์ค๋ฌ(schedualer), ๊ฐ๋น์ง ์์ง๊ธฐ(garbage collector), ๋ฉ๋ชจ๋ฆฌ ํ ๋น์(memory alllocator) ๋ฐ ์คํ๊ด๋ฆฌ(stack management)๋ฅผ ํฌํจํ ์ด๋ ค ํต์ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. Schedualer Go ๋ฐํ์์ ํต์ฌ์ ๊ณ ๋ฃจํด์ ์คํ์ ๊ด๋ฆฌํ๋ ์ค์ผ์ค๋ฌ์
๋๋ค. ๊ณ ๋ฃจํด์ ํจ์จ์ ์ธ ๋์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฐ๋ฒผ์ด ์ค๋ ๋์
๋๋ค. ์ค์ผ์ค๋ฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ค๋ ๋์ ๊ณ ๋ฃจํด์ ๋ถ์ฐํ๊ณ , ์ค๋ ๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ฅผ ๊ด๋ฆฌํ๊ณ , I/O ์์
์ ์กฐ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. thread(์ค๋ ๋): ํ๋ก๊ทธ๋จ ๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์๋ก ๋์์ ์ฌ๋ฌ ์์
์ด๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒ์
๋๋ค. ์ฆ, ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๊ฐ ๋จ์๋ฅผ ์ค๋ ๋๋ผ๊ณ ํฉ๋๋ค. ๊ณ ๋ฃจํด(goroutine): Go ์ธ์ด๋ก ๋์์ ์คํ๋๋ ๋ชจ๋ ํ๋์ ์๋ฏธํฉ๋๋ค. ๊ณ ๋ฃจํด์ ๋ง๋๋ ๋น์ฉ์ ์ค๋ ๋์ ๋นํด ๋งค์ฐ ์ ๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ ์ค๋ ๋๋ผ๊ณ ํฉ๋๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ ์ด๋ ํ๋์ main() ํจ์๋ผ๋ ๊ณ ๋ฃจํด์ ํฌํจํ๊ณ ๊ณ ๋ฃจํด์ ํญ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์๋ํฉ๋๋ค. ๋ฉ์ธํจ์๊ฐ ์ข
๋ฃ๋๋ฉด ๋ชจ๋ ๊ณ ๋ฃจํด์ ์ข
๋ฃ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ณ ๋ฃจํด๋ณด๋ค main์ด ๋จผ์ ์ข
๋ฃ๋๋ ๊ฒ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. Go ์ค์ผ์ค๋ฌ๋ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์ด ๋ง์ ์์ ๋์ ๊ณ ๋ฃจํด์ ์์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ค๋ ๋ ๊ฐ์ ๋ถํ๋ฅผ ๋ถ์ฐํ์ฌ ๊ฒฝํฉ์ ์ต์ํํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ์์
ํ์น๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค...
์ดํญ ํ๋ฅ ๋ถํฌ ๋ง๋ค๊ธฐ ์ดํญ ๋ถํฌ์ ๊ตฌ์กฐ ์ดํญ ๋ถํฌ๋ ์ํ ํ์์ ์ฑ๊ณต์ ์ธ ๊ฒฐ๊ณผ์ ํ๋ฅ ์ด ์ฃผ์ด์ก์ ๋ ํน์ ์์ ์ฑ๊ณต์ ์ธ ๊ฒฐ๊ณผ์ ํ๋ฅ ์ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ดํญ์ด๋ผ๋ ์ฉ์ด์ "bi"๋ ์ฐ๋ฆฌ๊ฐ ๊ด์ฌ์ ๋๊ณ ์๋ ๋ ๊ฐ์ง ๊ฐ๋ฅํ ๊ฒฐ๊ณผ, ์ฆ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์๋ ๊ฒ์ ๋งํฉ๋๋ค. (๊ฒฐ๊ณผ๊ฐ ๋ ๊ฐ ์ด์์ธ ๊ฒฝ์ฐ ๋ถํฌ๋ฅผ ๋คํญ ๋ถํฌ๋ผ๊ณ ํฉ๋๋ค.) $$\tag{1} \text{binomial distribution} \sim B(k; n, p)$$ ์ดํญ ๋ถํฌ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋์ ๋์ง๊ธฐ ์ธ ๋ฒ์์ ๋ ๋ฒ ์๋ฉด์ด ๋์ค๋ ๊ฒฝ์ฐ ๋ณต๊ถ 100๋ง ์ฅ์ ์ฌ์ ์ ์ด๋ ํ ๋ฒ์ ๋น์ฒจ๋๋ ๊ฒฝ์ฐ 20๋ฉด์ฒด ์ฃผ์ฌ์๋ฅผ 10๋ฒ ๊ตด๋ ค 20์ด ์ธ ๋ฒ ๋ฏธ๋ง ๋์ค๋ ๊ฒฝ์ฐ ์ดํญ๋ถํฌ๋ 3๊ฐ์ ๋ชจ์๋ค๊ณผ ์ฐ๊ด๋๋ค. k: ๊ฒฐ๊ณผ(์ฑ๊ณต)ํ์ n: ์ด ์ํํ์ p: ์ฌ๊ฑด ํ๋๋น ํ๋ฅ ๋ฌธ์ ์ ์ธ๋ถ ์ฌํญ ์ดํด ๋ฐ ์ถ์ํ ์ฐ๋ฆฌ๋ ๋์ ๋์ง๊ธฐ 3๋ฒ์์ ์๋ฉด์ด ๋ ๋ฒ ๋์ฌ ํ๋ฅ ์ ๊ณ์ฐํ๋ ์๋ฅผ ๊ณ์ํ ๊ฒ์
๋๋ค. ๊ฐ๋ฅํ ๊ฒฐ๊ณผ์ ์๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ์ฐํ๊ณผ ์ข
์ด๋ง ์์ผ๋ฉด ๊ด์ฌ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒ ์์๋ผ ์ ์์ต๋๋ค. $$\tag{2} HHT, HTH, THH$$ ์ผ๋ฐํ๋ฅผ ์์ํ๊ธฐ ์ํด, ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ์ง๊ธ ๋น์ฅ ํด๊ฒฐํ ์ ์๋ ๋ ์์ ์กฐ๊ฐ์ผ๋ก ๋๋๊ณ , ๊ทธ ์กฐ๊ฐ๋ค์ ๊ด๋ฆฌ ๊ฐ๋ฅํ ๋ฐฉ์ ์์ผ๋ก ์ถ์ํ ๊ฒ์
๋๋ค. ๋ฐฉ์ ์์ ๊ตฌ์ถํ๋ฉด์, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ ๋ชจ์ ์ดํญ ๋ถํฌ์ ๋ํ ์ผ๋ฐํ๋ ํจ์๋ฅผ ๋ง๋ค ๊ฒ์
๋๋ค. ์ดํญ ๋ถํฌ์์ ์์ด ๊ฐ ๊ฒฐ๊ณผ๋ ๊ฐ์ ํ๋ฅ ์ ๊ฐ์ง๋ค. ๊ฐ ๊ฒฐ๊ณผ๋ ๋ค๋ฅธ ๊ฒฐ๊ณผ์ ์์ด ๋๋ ์ฌ์ ๋ ฌ์ผ ๋ฟ์ด๋ค. ์ฆ, ๋ค์์ ๊ฐ ํ๋ฅ ์ ๊ฐ๋ค. $$\tag{3}P(H,H,T) = P(H,T,H) = P(T,H,H) = P(outcome) ์ ์ธ ๊ฒฝ์ฐ๋ ๋์์ ์ผ์ด๋ ์ ์์ต๋๋ค. ์ฆ, ๋
๋ฆฝ์ฌ๊ฑด์ด๋ฏ๋ก ์ด ์ฌ๊ฑด๋ค์ ๊ณฑ์ฌ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. $$\tag{4}P(H,H,T) + P(H,T,H) +...