์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ํด๋์ ์ผ๋ จ์ ์ ์ฐจํ๋์ ๊ฐ์ ์ ์ฅํ๋ ๋ณ์๊ฐ ์๋๋ผ ๋ฌถ์ ๋จ์๋ก ๊ฐ์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์์๋ฅผ ์์ ํ ์ ์๋(mutable) ๋ฆฌ์คํธํ ๊ฐ์ฒด. ์์์ ์์๋ฅผ ๋งค๊ฒจ ๊ฒฐํฉํ ๊ฒ์ผ๋ก ์์์ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋(immutable) ์๋ฃํMuta
ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์์ค ํ์ผ๋ก ๋ถํฐ ํ๋ก๊ทธ๋จ์ด ์์ํ๋ฉฐ, hello.c๋ผ๋ ํ ์คํธ ํ์ผ๋ก ์ ์ฅ๋๋ค.์์ค ํ๋ก๊ทธ๋จ์ ๋นํธ๋ค์ ์ฐ์์ด๋ฉฐ, 8๋ฐ์ดํธ ๋จ์๋ก ๊ตฌ์ฑ๋๋ค.์ปดํจํฐ ์์คํ ์ ํ ์คํธ ๋ฌธ์๋ฅผ ์์คํค(ASCII) ํ์ค์ ํตํด ํํํ๋ค. ํ๋ก๊ทธ๋จ์ ์ฐ์๋ ๋ฐ์ดํธ๋ค๋ก ํ์ผ
ํ (Queue) ๋จผ์ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๊บผ๋ด๋ ์ ์ ์ ์ถ(First-In-First-Out) ๊ตฌ์กฐ enqueue - ๋ฐ์ดํฐ ์ถ๊ฐ dequeue - ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ front - ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ์ชฝ rear - ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ์ชฝ ๋ง ๋ฒํผ๋ก ํ ๊ตฌํํ๊ธฐ ๋ฐฐ์ด๋ก ํ๋ฅผ
๋จ์ ์ฝ์ ์ ๋ ฌ์ ๋จ์ ์ ๋ณด์ํ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ ๋ ฌ ๊ฐ๋ฅํ ์ ๋ ฌ ๋ฐฉ์๋จ์ ์ฝ์ ์ ๋ ฌ์ ์ ๋ ฌ์ด ๋์ด์์์๋ก ์ ๋ ฌ ์๋๊ฐ ๋น ๋ฅด์ง๋ง ์ฝ์ ํ ์์น๊ฐ ๋ฉ๋ฉด ์ด๋ํ์๊ฐ ๋ง์์ง๋ค๋ ๋จ์ ์ด ์๋ค.์ ธ ์ ๋ ฌ์ ์ ๋ ฌํ ๋ฐฐ์ด์ ์์๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋๋์ด ๊ฐ๊ทธ๋ฃน๋ณ ์ ๋ ฌ์ ์ํํ๋ค. ์ดํ ๊ทธ๋ฃน์ ํฉ
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ค ์ถ๋ ฅ๊ฐ์ด ๋๋ฌด ํฌ๊ธฐ ๋๋ฌธ์ ํน์ ์๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๊ฐ ๋์จ๋ค.๊ฒฐ๊ณผ ๊ฐ์ ๋จ์ํ mod ์ฐ์ฐ์ ์ ์ฉํ๋ฉด ์ด๋ฏธ ๊ฒฐ๊ณผ๊ฐ์ด ๋๋ฌด ์ปค์ง ์ํ์์ ์ฐ์ฐ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ ์๊ฐ์ด ๋ง์ด ์์๋๋ค. ์๋์ ๋ชจ๋๋ฌ ๋ถ๋ฐฐ๋ฒ์น์ ๋ฐ๋ผ์ ์ฐ์ฐ ๋ง๋ค ๋ชจ๋๋ฌ
์์ง๋ก ์ฐ๊ฒฐํ ์ถ์์ ์ด๊ณ ์ผ๋ฐ์ ์ธ ์๋ฃ๊ตฌ์กฐ.ํธ๋ฆฌ์ ๊ฒฝ์ฐ ์ฌ์ดํด์ด ์๋ ๊ทธ๋ํ์ด๊ณ , ๋งํฌ๋ ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ ํ๋์ ๊ฒฝ๋ก๋ก๋ง ์ด๋ฃจ์ด์ง ๊ทธ๋ํ์ด๋ค.์ ์ (vertext), ๋ ธ๋(node) โ ์ด๋ค ๋์์ ๊ฐ์ฒด์์ง(Edge), ๋งํฌ(Link) โ Vertex ๊ฐ์ ๊ด๊ณ๋ฐฉํฅ์ฑ๋ฌด๋ฐฉํฅ
์ธ์ ๋ฆฌ์คํธ๋ ํน์ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋ํ๋ ๊ฐ์ ์ ๊ฒ์ํจ์ ์์ด ์ธ์ ํ๋ ฌ์ ๋นํด ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค. ๋ฐ๋ฉด์ ์ธ์ ํ๋ ฌ์ ์ฌ์ฉํ๋ฉด ๊ฒ์์์ ์ด์ ์ ๊ฐ์ง ์ ์์ง๋ง ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผํ๋ค๋ ์ ์ ๊ณ ๋ คํด์ผํ๋ค. ํ์ง๋ง ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ์๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋
ํธ๋ผ์ด๋ ๋ฌธ์์ด์ ์ ์ฅํ๊ต ํจ์จ์ ์ผ๋ก ํ์ํ๊ธฐ ์ํ ํธ๋ฆฌํํ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.์ค์ํ์์ โ์๋์์ฑ ๊ธฐ๋ฅโ, โ์ฌ์ ๊ฒ์โ ๋ฑ์์ ํ ์คํธ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๊ณ ์๋ค.๋๋์ค ํธ๋ฆฌ(Redix Tree), ์ ๋์ฌ ํธ๋ฆฌ(Prefix Tree), ํ์ ํธ๋ฆฌ(Ret
๊ทธ๋ํ๋ด ๋ชจ๋ ์ ์ ์ ํฌํจํ๋ ํธ๋ฆฌ๊ทธ๋ํ์ ์ต์ ์ฐ๊ฒฐ ๋ถ๋ถ ๊ทธ๋ํ์ต์ ์ฐ๊ฒฐ = ๊ฐ์ ์ ์๊ฐ ์ ๋ค.n๊ฐ์ ๋ ธ๋์ ์ต์ ๊ฐ์ ๊ฐ์๋ N - 1๊ฐ์ด๊ณ , N - 1๊ฐ์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด ํ์ฐ์ ์ผ๋ก ํธ๋ฆฌ ํํ๊ฐ ๋๊ณ , ์ด๋ฅผ Spannig Tree๋ผ๊ณ ํ๋ค.DFS, BFS
์์คํ ์ด ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ๊ณผ์ ์ ์์ด์ ์ ๋ณด๋ฅผ ํ ๊ณณ์์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด๋ํ๋ ๊ณผ์ ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ค๋ ๊ฒ์ ํ์ธํ๋ค.์ด๋ ์ค์ ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ํตํด ์คํํ๋ ค๊ณ ํ๋ ๋์๊ณผ๋ ๋ฌด๊ดํ, ์ค์ ์์ ์ ์คํ์ ๋ฐฉํด(?)ํ๋ ์ค๋ฒํค๋ ์ฒ๋ผ ๋๊ปด์ง๋ค.๋ฉ๋ชจ๋ฆฌ๊ฐ ํด ์๋ก
์ปดํจํฐ ์์คํ ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ค๋ฆฌ์ฝ ๋ฉ๋ชจ๋ฆฌ ์นฉ์ ๋น ๋ฅธ ์์ธ์ค ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ์ ์ฅ ๋นํธ ๋๋น ๋น์ผ ๋น์ฉ์ผ๋ก ์ธํด์ ์๊ธฐ ๋์คํฌ ๊ธฐ๋ฐ์ ๋ณด์กฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๊ณ ์๋ค. ์๊ธฐ ๋์คํฌ์ ๊ฒฝ์ฐ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ง๋ง ๋ฌผ๋ฆฌ์ ์ธ ํ๊ณ๋ก ์ธํด ๋ฐ์ดํฐ์ ์
๐ฉย ๋ชป ํผ ์์ธ ๐ฉ๋ฌธ์ ์ดํด๋ฅผ ์ ๋๋ก ๋ชปํ ๊ฒ ๊ฐ๋ค. ๋ฌธ์ ๊ทธ๋๋ก ์ดํดํ์ผ๋ฉด ์ ์ ์ ๊ทธ๋ฃนํํ๋ ๋ฐฉ์์ ๊ณ ๋ฏผํ์ํ ๋ฐ ๊ฐ์ ์ ์ ๊ฑฐํ์ ๋ ์์ ํ ๋ ๊ทธ๋ฃน์ผ๋ก ๋ถ๋ฆฌ๋์ด์ผํ๋ค๋ ๋์์ค๋ก ์๋ชป ์ดํดํด์ ๋๋ฌด ์ด๋ ต๊ฒ ์๊ฐํ ๊ฒ ๊ฐ๋ค.๐ฉย ๋ชป ํผ ์์ธ ๐ฉBFS๋ก ์ธ์ ํ ๋ฐฉ์
๋์ ๊ณํ๋ฒ์ ๋ฐ๋ณต๋๋ ์์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ ๊ฐ์ ํตํด์ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ ๋งํ๋ค.์ด๋ค ๋ฌธ์ ๋ฅผ ๋์ ๊ณํ๋ฒ์ผ๋ก ํ๊ธฐ ์ํด์ ํด๋น ๋ฌธ์ ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ธ์ง ํ์ธํด๋ด์ผํ๋ค.๋ฌธ์ ๋ฅผ ๋ ์์ ๊ฐ๋จํ ๋ฌธ์ ๋ก ๋๋ ์ ์๋ ๊ฒฝ์ฐ์์ ๋ฌธ์ ๊ฐ ๋ฐ๋ณต๋๋ ๊ฒฝ์ฐ์ต์ ์ ํ์ ๊ตฌ์กฐ
FE ์ํฐํด ์ฝ๊ธฐ [๋ฒ์ญ] ๋ฆฌ์กํธ ์ปดํ์ผ๋ฌ์ ๋ฆฌ์กํธ 19 - ์ด์ ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋์? ๋ด์ฉ React 19์ ๋ฑ์ฅ ์ด์์ ํจ๊ป ๊ฑฐ๋ก ๋๊ณ ์๋ ์ด์ ์ค ํ๋๊ฐ React Compiler์ ๋ฑ์ฅ์ด๋ค. React Compiler์ ๋ฑ์ฅ์ด ์ด์
์ด๋ ํ ๋ฌธ์์ด X๋ฅผ ACDAB๋ผ๊ณ ํ๋ค๋ฉด, ๋ถ๋ถ ์์ด์ {A}, {C}, {D}, {A}, {B}, {A, C}, {A, C, D} โฆ {A, C, D, A, B}๊ฐ ๋๋ค.LCS๋ ๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋, ๊ณตํต ์์ด ์ค ๊ธธ์ด๊ฐ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ์๋ฏธํ๋ค.๊ธฐ๋ณธ์
FE Article Link: https://yozm.wishket.com/magazine/detail/2483/ ์ ๋ชฉ : ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ์์์ผํ โ์ ๋ ํ ์คํธโ ์์ฑ๋ฒ ๋ด์ฉ ํ ์คํธ์ ๋ณธ์ง์ โ๊ฒ์ฆํ๊ณ ์ถ์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฒ์ฆํ๋ ๊ฒโ์ด๋ค. ๊ฒ์ฆํ๋ ๊ฒ์ด
ํ๋ก์ธ์ค ๋ ์ง์คํฐ(processor register) ๋๋ ๋ ์ง์คํฐ๋ ์ปดํจํฐ์ ํ๋ก์ธ์ ๋ด์์ ์๋ฃ๋ฅผ ๋ณด๊ดํ๋ ์์ฃผ ๋น ๋ฅธ ๊ธฐ์ต ์ ์ฅ์์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ฌ ์ฐ์ฐ์ ์ฌ์ฉ๋๋ ๊ฐ์ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ค.๋ ์ง์คํฐ์ ์ข ๋ฅ๋ฐ์ดํฐ ๋ ์ง์คํฐ : ์ ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ ๋ ์ง์คํฐ์ฃผ์
์ ์ธ์ ์ด๋ค ๋ณ์๋ ํจ์์ ํ์์ ์ ์ํ๋ ๋จ๊ณ.์ ์๋ ์ด๋ค ๋ณ์๋ ํจ์๋ฅผ ์ ์ธํจ๊ณผ ๋์์ ๊ฐ๊น์ง ๋ถ์ฌํ๋ ๊ฒ.์ ์ธ๋งํ๋ ๊ฒฝ์ฐ, ํด๋น ๊ฐ์ด๋ ํจ์์ ๋ํด์ ์ ์ ์๋ค.๋ณ์์ ๊ฒฝ์ฐ ์ ์ธ๋ง ํ ๊ฒฝ์ฐ C ์ธ์ด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํ ํ๊ธฐ ๋๋ฌธ์
GNU Compiler Collections์ ์ฝ์๋ก GNU ํ๋ก์ ํธ์ ์ผํ์ผ๋ก ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ ์ปดํ์ผ๋ฌ.์ปดํ์ผ์ ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ฅผ ๋ณด๋ค ์ ๊ธ ์ธ์ด๋ก ๋ฐ๊พธ์ด ์ฃผ๋ ๊ณผ์ ์ ๋งํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ธ์ํ ์ ์๋ C, python๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊พธ์ด์ฃผ๋ ๊ณผ์ ์ ํ๋ค
์์ ๋ ธ๋๋ฅผ 2๊ฐ ์ดํ๋ก ๊ฐ์ง๋ ํธ๋ฆฌ.๋ง์ง๋ง ๋ ๋ฒจ์ ๋ ธ๋, ์ฆ leaf ๋ ธ๋๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ๋ ๋ฒจ์ด ์์ ํ ์ฑ์์ ธ ์์ด์ผํ๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ชจ๋ ๋ ธ๋๋ ์ผ์ชฝ๋ถํฐ ์ฑ์์ ธ์์ด์ผ ํ๋ค. ๋ง์ง๋ง ๋ ๋ฒจ h์์ ๋ฃจํธ ๋ ธ๋๊น์ง ์ด 2^h - 1๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค.ํจ์จ์ ์ธ
ํ๋ก๊ทธ๋๋ฐ์์ ์ ํ์ ์ธ ๋ฐ๋ณต์ด๋ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์์ ์ ํ์ ์ธ ๋ฐ๋ณต์ด๋ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์์ ์ข ๋ฃ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํ๊ธฐ์ํ ํน๋ณํ ๊ฐ์ ๋งํ๋ค. (flag value, trip value, rogue value, signal value, dummy data)๋ผ๊ณ ํ๋ค.Sentin
DMA (์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ, Direct Memory Access) ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ํน์ ํ๋์จ์ด ํ์ ์์คํ ์ด CPU์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ ์ปดํจํฐ ์์คํ ๊ธฐ๋ฅ. DMA๋ฅผ ์ฌ์ฉํจ์ผ๋ก์ CPU์ DMA๋ ์ํ, ์ ์ด ์ ๋ถ๋ง ๊ตํํ๊ณ ,
๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ธฐ๋ ํ(heap)์ด๋ผ๋ ํ๋ก์ธ์ค์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ด๋ฆฌํ๋ค. ์ด ๋ฐ์ดํฐ ์์ญ์ ๋ฏธ์ด๊ธฐํ๋ ์์ญ ์งํ์ ์์ํด์ ์์ชฝ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ํ๋ฅธ๋ค๊ณ ๊ฐ์ ํ๋ค.ํ ๋น๊ธฐ๋ ๋ค์ํ ํฌ๊ธฐ์ ๋ธ๋ก์ ํตํด ์งํฉ์ผ๋ก ๊ด๋ฆฌํ๋ค. ๊ฐ ๋ธ๋ก์ ํ ๋น ๋์๊ฑฐ๋ ๊ฐ์ฉํ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์
arr\[::-1]์ pyton์ slicing์ ์ฌ์ฉํด์ ๋ฆฌ์คํธ์ ๋ฐฐ์ด์ ์ญ์์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ. ๊ธฐ์กด์ ๋ฆฌ์คํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.arr.reverse()๋ ๋ฆฌ์คํธ๋ฅผ ์ ์๋ฆฌ์์ ๋ค์ง๋ ๋ฉ์๋์ด๋ค. ๋ฆฌ์คํธ๋ฅผ ์ง์ ์์ ํด์ ๋ณ๊ฒฝํ๋ค. return ๊ฐ์
๊ฐ ๋ฐ์ดํธ๋ ๊ณ ์ ์ ๋ฌผ๋ฆฌ ์ฃผ์(PA)๋ฅผ ๊ฐ์ง๊ณ ์๋ค. CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๊ฐ์ฅ ์์ฐ์ค๋ฌ์ด ๋ฐฉ๋ฒ์ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ณ , ์ด๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์ ๋ฐฉ์์ด๋ผ๊ณ ํ๋ค. CPU๊ฐ ๋ก๋ ์ธ์คํธ๋ญ์ ์ ์ํํ ๋ ์ ํจ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ์์ฑํ๊ณ , ์ด๊ฒ์ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค๋ฅผ ๊ฑฐ์ณ ๋ฉ์ธ ๋ฉ
๋ฌผ๋ฆฌ ์ฃผ์ ๋ฐฉ์ - CPU๊ฐ ๊ฐ ๋ฐ์ดํธ๊ฐ ๊ฐ์ง๋ ๊ณ ์ ๋ฌผ๋ฆฌ์ฃผ์(PA:Physical Address)์ ์ ๊ทผํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๋ฐฉ์๊ฐ์ ์ฃผ์ ๋ฐฉ์ - CPU์ ๊ฐ์์ฃผ์์ง์ ์ผ๋ก ๊ฐ์์ฃผ์(VA)๋ฅผ ์์ฑํด์ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ, ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณด๋ด์ง๊ธด์ ์ ์ ์ ํ ๋ฌผ๋ฆฌ์ฃผ์๋ก ๋ณํํด
์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ํน์ ํ๋์จ์ด ํ์ ์์คํ ์ด CPU์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ ์ปดํจํฐ ์์คํ ๊ธฐ๋ฅ.DMA๋ฅผ ์ฌ์ฉํจ์ผ๋ก์ CPU์ DMA๋ ์ํ, ์ ์ด ์ ๋ถ๋ง ๊ตํํ๊ณ , ์ง์ ์ ์ธ ๋ฐ์ดํฐ ์ ์ก์ DMA๊ฐ ๋ฒ์ค๋ฅผ ์ ์ดํ๊ณ I/O์์ ๋ฉ๋ชจ๋ฆฌ ๊ตํ์
ํ ๊ฐ์ ์๋ฒ ํ๋ก์ธ์ค์ ํ ๊ฐ์ ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค๋ก ๊ตฌ์ฑ๋ ๋ชจ๋ธ.์๋ฒ - ์ผ๋ถ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌ, ์ด ๋ฆฌ์์ค๋ฅผ ์กฐ์ ํด์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋จ๋ง๊ธฐํด๋ผ์ด์ธํธ - ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ํน์ ์ฌ์ฉ์์ ๋จ๋ง๊ธฐFTP ์๋ฒํด๋ผ์ด์ธํธ๋ฅผ ์ํด ์ ์ฅํ๊ณ ์ฝ์ด์ค๋ ๋์คํฌ
์๋์(Endianess)์ ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ 1์ฐจ์ ๊ณต๊ฐ์ ๋์์ ๋ฐฐ์ดํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.๋น ์๋์ - ์์ ๋นํธ๋ถํฐ ๋ฐ์ดํธ ๋จ์๋ก ์ ์ฅํ๋ ๋ฐฉ์ ( ๋คํธ์ํฌ )๋ฆฌํ ์๋์ - ํ์ ๋นํธ๋ถํฐ ๋ฐ์ดํธ ๋จ์๋ก ์ ์ฅํ๋ ๋ฐฉ์ ( ์ธํ ๊ณ์ด CPU )ex) ๋คํธ์ํฌ ํฌํธ
์น ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ HTTP๋ผ๋ ํ ์คํธ ๊ธฐ๋ฐ์ ์์ฉ ์์ค ํ๋กํ ์ฝ์ ํ์ฉํ์ฌ ์ํธ ์ฐ๋ํ๋ค.๊ธฐ์กด ํ์ผ ์ ์ก ํ๋กํ ์ฝ(FTP)์ ๋ฌ๋ฆฌ HTML์ ํตํด ์น ์ปจํ ์ธ ๋ฅผ ์ ์กํ๋ค๋ ์ฐจ์ด์ ์ด ์๋ค. HTML์ ํฌํจ๋ ๋ช ๋ น(ํ๊ทธ)๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ์์ ์ด๋ป๊ฒ ํ๋ฉด์ ์ปจํ ์ธ ๋ฅผ ๋ณด
Proxy๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ข ๋จ ์๋ฒ ์ฌ์ด์์ middleman์ฒ๋ผ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ์ ๋งํ๋ค.์น ํ์ด์ง๋ฅผ ์ป๊ธฐ ์ํด ์ง์ ๋๋จ ์๋ฒ์ ์ ๊ทผํ์ง ์๊ณ , ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ ์ฐ๊ฒฐ๋์ด ์๋ ํ๋ก์์๊ฒ ์์ฒญ์ ๋ณด๋ธ๋ค. ์ข ๋จ ์๋ฒ๊ฐ ํ๋ก์์๊ฒ ์๋ตํ๊ณ , ํ๋ก์๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ์
ํ๋ก์ธ์ค(Process) : ์ด์์ฒด์ ๋ก๋ถํฐ ์์์ ํ ๋น๋ฐ์ ์์ ์ ๋จ์์ค๋ ๋(Thread) : ํ๋ก์ธ์ค๊ฐ ํ ๋น ๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ ํ๋ฆ์ ๋จ์ํ๋ก๊ทธ๋จ(Program): ์ปดํจํฐ์์ ์คํํ ์ ์๋ ํ์ผ โ ์คํํ์ง ์์ ์ํ์ ์ฝ๋ ๋ฉ์ด๋ฆฌํ๋ก์ธ์ค(Process):
Sleep List๋ฅผ ํ์ฉํ์ฌ ๋๊ธฐ ์ค๋ ๋ ์ ์ฅ์ค๋ ๋๋ฅผ ๊นจ์ฐ๊ธฐ ์ํ Tick์ ์ ์ฅํน์ Tick์ด ๋์์ ๋ Sleep List์ ์ค๋ ๋๋ฅผ Ready List๋ก ์ด๋๊ฐ๋ต์ ์ธ ๋งค์ปค๋์ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋๋ค.๋จผ์ ๋๊ธฐ ์ํ์ ์ค๋ ๋๊ฐ ๋ค์ด๊ฐ ์ ์๋ Sleep List๋ฅผ
Ready List์ ์ค๋ ๋๋ฅผ ์ฐ์ ์์์ ๋ฐ๋ผ ์ ๋ ฌํ๊ธฐ๋๊ธฐํ๋ฅผ ์ํด ์ฌ์ฉํ๋ Wait List๋ฅผ ์ฐ์ ์์์ ๋ฐ๋ผ ์ ๋ ฌ์ ์ (Preemption), ์ค๋ ๋๊ฐ Ready List๋ก ๋ค์ด๊ฐ ๋ ์ ์ ์ ๊ณ ๋ คํ๋ค.ํฌ๊ฒ ํ์ฌ OS ๊ตฌ๋๋ฐฉ์์์ ์ฐ์ ์์๋ฅผ ์ถ๊ฐํ ํ, ์ฐ์ ์์
โฝ๏ธ Main Goal โ ํ๊ฐ ์๋ ์ค์ผ์ค๋ฌ์ฒ๋ผ 4.4 BSD ์ค์ผ์ค๋ฌ MLFQ๋ฅผ ๊ตฌํ โ ๐ย ๊ตฌํํ๊ธฐ โ๏ธย ๊ด๋ จ ์งํ์ ์ฐ์ฐ ํจ์ ๋ง๋ค๊ธฐ ๊ตฌํ ๋จ๊ณ์์ ๊ฐ์ฅ ๋จผ์ ํด์ผํ ๊ฒ๋ค์ด MLFQ์ ๊ด๋ จ์๋ ์ฌ๋ฌ ์งํ๋ค์ ๋ํ ํ์ ๊ณผ ์ฐ์ฐ์ ๊ตฌํํด์ผํ๋ค. prior
ํ๋ก๊ทธ๋จ์ ํ์ผ ์ด๋ฆ๊ณผ ์ธ์๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ ์ ์คํ์ ์ธ์ ๋ฃ๊ธฐ!๋ฌธ์์ด s ๋ด๋ถ์ delimeter๊ฐ ์์ผ๋ฉด delimeter๋ฅผ ๋ง๋ ๋ ๊น์ง ๋ฐ๋ณต์ ๋๊ณ , ๋ง๋ฌ์ ๋ํด๋น ๋ฌธ์์ ํฌ์ธํฐ ์ด์ ์ ๋ฌธ์์ด์ returnํ๋ค. ๊ทธ๋ฆฌ๊ณ ํฌ์ธํฐ๋ฅผ ์ด๋ํ๋ฉฐ ๋ฌธ์๋ฅผ ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋ค์
์์คํ ์ฝ ๊ตฌํํ๊ธฐํ์ฌ PintOS์์๋ system call handler๊ฐ ์์ด์ ์์คํ ์ฝ์ด ์ฒ๋ฆฌ๋์ง ์๋๋ค.์์คํ ์ฝ์ ๊ตฌํํ๊ณ , ํด๋น ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.์ด์์ฒด์ ์์ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ปค๋์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ์์ญ, page๋ page ํฌ๊ธฐ๋ก ๋๋์ด ๋จ์ด์ง๋ ๊ฐ์ ์ฃผ์์์ ์์ํด์ผํ๋ฉฐ ์ด๋ฅผ ํ์ด์ง ์ ๋ ฌ์ด๋ผ๊ณ ํ๋ค. 64๋นํธ ํ๊ฒฝ์์ ๊ฐ์ฅ ์ฃผ์ ๋ง์ง๋ง 12๋นํธ๋ page offset์ ์๋ฏธํ๊ณ , ์์ ํ์ด์ง๋ ํ์ด์ง ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค
TLB๋ ์นฉ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋(MMU)์ ์ผ๋ถ๋ก์ ์์ฃผ ์ฐธ์กฐ๋๋ ๊ฐ์์ฃผ์ - ๋ฌผ๋ฆฌ์ฃผ์ ๋ณํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ๋์จ์ด ์บ์๋ฅผ ์๋ฏธํ๋ค. ์ฃผ์ ๋ณํ์ ์์ด์ ๋น ๋ฅธ ์์ธ์ค๋ฅผ ์ ๊ณตํ์ฌ ์์คํ ์ฑ๋ฅ์ ํฅ์ ์ํจ๋ค.๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ๊ฐ์ ์ฃผ์์์ ๊ฐ์ ํ์ด์ง ๋ฒํธ(Virtual Pa
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง(Virtual Page)์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํ๋ ์ (Physical Frame)๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํด์ผํ๋ค.โ ๊ฐ์ / ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๊ฐ(ํ๋ก์ธ์ค?)๊ฐ ์ฌ์ฉํ๊ณ , ์ด๋ค ๋ชฉ์ (?)์ผ๋ก ์ฌ์ฉํ๋์ง ๊ธฐ์ตํด์ผํ๋ค.๊ธฐ์กด page table์์ ๋ค๋ฃจ์ง ์๋
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์คํ ํฌ์ธํฐ ์๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฃ๋ ์๋๋ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ๋ค. ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์คํ ํฌ์ธํฐ ์๋์ ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ๋ฅผ ์๋ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. ์ด์์ฒด์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์คํ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์คํ ํฌ์ธํฐ ์๋์ ์ด๋ค๋ฉด ์๊ทธ๋ ์ฒ๋ฆฌ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ฎ์ด
Memory Mapped Files๋ File Backed Mapping๋ฅผ ์๋ฏธpage fault ๋ฐ์์ ๋ฌผ๋ฆฌ์ ํ๋ ์์ด ํ ๋น๋๊ณ ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณต์ฌMemory Mapped Filed์ด unmapped ๋๋ Swapped Out ๋๋ฉด ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์Memory
https://velog.io/@superlipbalm/blogged-answers-a-mostly-complete-guide-to-react-rendering-behavior๋ด์ฉ ๋๋๋ง ๊ฐ์๋๋๋ง ํ๋ก์ธ์ค ๋์ ๋ฆฌ์กํธ๋ DOM ํธ๋ฆฌ์ ๋ฃจํธ์์ ๋ถํฐ ์ ๋ฐ์ดํธ
๊ฒ์๊ธ ํ์ ํด๋ฆญํ๋ฉด ํด๋น ๊ฒ์๊ธ์ ์์ธ ํ์ด์ง๋ก ์ด๋ํ๋ค. ๋ผ๋ ํ ์คํธ๋ useRouter๋ฅผ ์ฌ์ฉํ ๋์์ ํ ์คํธํ๊ธฐ ๋๋ฌธ์ useRouter์ ๋ํ Mocking๊ณผ Push ๋์์ ๋ํ mocking์ด ํ์ํ๋ค.์ ์ฝ๋์์ ํด๋น ํ ์คํธ์์๋ง useRouter๋ฅผ ์ฌ
๋๋ง๋ฌด ํ๋ก์ ํธํ๊ธฐ ์ ์ 1์ฃผ์ผ๊ฐ ๊ฒ์ํ ๊ตฌํ ๊ณผ์ ๋ฅผ ํ๋ฉด์ ์ค๋๋ง์ React(Next.js) ์ฝ๋๋ฅผ ์จ๋ณด์๋๋ฐ, ํ์คํ ํญ์ ์ง๋ ๋ฐฉ์์ผ๋ก ์ง๋ ๊ฒ์ด ๋๊ปด์ก๊ณ , ์งง์ ๊ธฐ๊ฐ์ด์ง๋ง ๊ทธ๋๋ ํ๋๋ผ๋ ๋ ์๋ก์ด ๋ฐฉ์์ ํด๋ณด๊ณ ์์๋ค. ๊ทธ์ค์ tailwind๋ก ์คํ์ผ ์ฝ