๋ฐ์ดํฐ๋ ํ๋ก๊ทธ๋จ์ ์ ์ฅํ๋ ์ ์ฅ ๊ณต๊ฐ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. CPU์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ฅ ๊ณต๊ฐ์ ๋ ์ง์คํฐ์ด๊ณ , ๋ ์ง์คํฐ โ CPU ์บ์ ๋ฉ๋ชจ๋ฆฌ โ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ โ ๋ณด์กฐ๊ธฐ์ต์ฅ์น โ ์ธ๋ถ๊ธฐ์ต์ฅ์น ์์ผ๋ก CPU์ ๋ฉ์ด์ง๋ค. CPU๋ก๋ถํฐ ๋ฉ์ด์ง์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ฉ๋์ด ์ปค์ง๊ณ ์ ๊ทผ ์๋๋ ๋๋ ค์ง๋ค.
ROM์ Read Only RAM์ Read / Write ๊ฐ๋ฅ
ํ๋ก๊ทธ๋จ์ ์์ฑ๊ณผ ์คํ์ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์งํ๋๋ค.
- ํ๋ก๊ทธ๋จ ์์ฑ
- ์์ฑํ ํ๋ก๊ทธ๋จ์ ๋์คํฌ์ ์ ์ฅ
- ์ฌ์ฉ์๊ฐ ์ด์์ฒด์ ์ ํ๋ก๊ทธ๋จ์ ์คํ์ ์์ฒญ
- ์ด์์ฒด์ ๊ฐ ํ๋ก๊ทธ๋จ์ ์ ๋ณด๋ฅผ ์ฝ์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ํ ๋นํด load
- ์ฌ์ฉ์๊ฐ ์์ฑํ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค. ์ฆ, ์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋์ด ์๋ ์์ญ.
- ์ด ์ฝ๋๋ ์ปดํ์ผ๋ ํ ๊ธฐ๊ณ์ด ํํ๋ก ์ ์ฅ๋์ด ์๋ค.
- ์ด๋ ๊ฒ ์ปดํจํฐ์๊ฒ ์ผ์ ์ํค๋ ์คํ ์ฝ๋๋ฅผ Instruction ์ด๋ผ๊ณ ํ๋ค.
- CPU๋ ์ฝ๋ ์์ญ์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ๊ฐ์ ์ฒ๋ฆฌํ๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ณ ๋๋ ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ๋จ์์๋ค.
- ์ฝ๊ธฐ ์ ์ฉ
- ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ์ฐธ์กฐ ๊ฐ๋ฅํ ์์ญ โ ???????????
- ํ๋ก๊ทธ๋จ์ ์ ์ญ ๋ณ์์ static ๋ณ์ ๋ฑ์ด ์ ์ฅ๋์ด ์๋ ์์ญ์ด๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ์, ์ ์ญ ๋ณ์์ static ๋ณ์๋ ๋ฉ์ธ ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ ์์ญ์ ํ ๋น๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ณ ๋๋ ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ๋จ์์๋ค.
- ๋ฐ์ดํฐ ์์ญ์ BSS ์์ญ, Data ์์ญ์ผ๋ก ๋๋๋ค.
- BSS(Block Stated Symbol) ์์ญ
- Data ์์ญ
- ์ด๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง ๋ณ์๋ค์ด ์ ์ฅ๋๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ์ค ์์ ๋กญ๊ฒ ์ ๊ทผํด์ ์์ , ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
- ์ฌ์ค ๋ฐ์ดํฐ ์์ญ์ ROM์ ์์นํ๋๋ฐ, ์ ์ญ๋ณ์์ static ๋ณ์๋ฅผ ROM์ ์ ์ฅํ๋ฉด ๋ฐํ์ ์ ๋ณ๊ฒฝ๋ ๊ฐ์ด ์ ์ฉ๋์ง ์๊ณ , ๊ณ์ ์ด๊ธฐ๊ฐ๋ง์ ๊ฐ์ง๊ณ ์๊ฒ ๋๋ค. (ROM์ read only๋๊น!) ๊ทธ๋์ ๋ฐ์ดํฐ ์์ญ์ RAM์ ๋ณต์ฌํด์ ๋ฐํ์ ์ ๋ณ๊ฒฝ๋๋ ๊ฐ์ ์ ์ฅํ ์ ์๋๋ก ํ๋ค๊ณ ํฉ๋๋ค. ..
- BSS์ Data ์์ญ์ ๋๋๋ ์ด์ ๋?
- ์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ ROM์ data ์์ญ์ ์ ์ฅ๋๋ค. ํ์ง๋ง ์์ง ์ด๊ธฐํ๋์ง ์์ ๋ฐ์ดํฐ๋ค๊น์ง ROM์ ์ ์ฅ๋๋ฉด ํฐ ์ฌ์ด์ฆ์ ROM์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ด ์์ญ์ ๋๋๋ค๊ณ ํจ..
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๋์ ์ผ๋ก ์ฌ์ฉํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ๋ ์์ญ์ด๋ค. ์ฆ, ์ฌ์ฉ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ ์ผ๋ก ํ ๋น, ํด์ ๋๋ค.
class
,closure
์ ๊ฐ์ ์ฐธ์กฐ ํ์ ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.- swift์ ๊ฒฝ์ฐ ARC๊ฐ ์ฐธ์กฐ ํ์ ์ ํ ๋น, ํด์ ์์ ์ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ค
- Java์ ๊ฒฝ์ฐ ๊ฐ๋น์ง ์ฝ๋ ํฐ๊ฐ ๊ด๋ฆฌํจ
- C์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋์ ์ผ๋ก ํ ๋น, ํด์ ํด์ค์ผ ํจ. (malloc, free?)
- ๋ฉ๋ชจ๋ฆฌ์ ๋ฎ์ ์ฃผ์ โ ๋์ ์ฃผ์๋ก ํ ๋น๋๋ค.
- ๋ฐํ์ ์(= ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ค)์ ํ ์์ญ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค.
- ํจ์ ํธ์ถ ์ ์์ฑ๋๋ ์ง์ญ ๋ณ์์ ๋งค๊ฐ ๋ณ์๊ฐ ์ ์ฅ๋๋ค.
- ์ฆ, ํจ์ ํธ์ถ ์ ํ ๋น๋๋ฉฐ ์คํ์ด ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ ๋๋ก ์๊ฐ
- ํจ์ ํธ์ถ ์ ์คํ์ push ๋๊ณ , return ์ ํ๋ฉด ์คํ์์ pop
- ํ ๋น๊ณผ ํด์ ๋ฅผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ฉ๋์ด ๋ถํ์คํ๋ค.
- ์ด๋ ๊ฒ ์คํ ์์ญ์ ์ ์ฅ๋ ํจ์ ํธ์ถ ์ ๋ณด๋ฅผ Stack Frame์ด๋ผ๊ณ ํ๋ค.
- struct, enum๊ณผ ๊ฐ์ ๊ฐ ํ์ ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๋์ ์ฃผ์ โ ๋ฎ์ ์ฃผ์๋ก ํ ๋น๋๋ค.
- ์ ์ด๋ ๊ฒ ํ ๋นํ์ง??
- ์ปดํ์ผ ์์ ํ ๋น๋ ์์ญ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค.
- ์ด์์ฒด์ ์ ๋ฐ๋ผ ์ ํ๋ ์คํ ์์ญ์ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ค. ์ด ํฌ๊ธฐ๋ฅผ ์ด๊ณผํด push ํ ์ ์์!
-
์คํ ์์ญ๊ณผ ํ ์์ญ์ ์ฌ์ค์ ๊ฐ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ค. ๊ทธ๋์ ์คํ ์์ญ์ด ํด ์๋ก ํ ์์ญ์ด ์์์ง๊ณ , ํ ์์ญ์ด ํด ์๋ก ์คํ ์์ญ์ด ์์์ง๋ค.
-
์คํ ์์ญ์ด ๋์ ์ฃผ์ โ ๋ฎ์ ์ฃผ์๋ก ํ ๋น๋๊ณ , ํ ์์ญ์ด ๋ฎ์ ์ฃผ์ โ ๋์ ์ฃผ์๋ก ํ ๋น๋๊ธฐ ๋๋ฌธ์ ์์ ์ ์์ญ์ด ์๋์ ์์ญ์ ์นจ๋ฒํ๋ ์ฌํ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฅผ ๊ฐ๊ฐ ์คํ ์ค๋ฒํ๋ก์ฐ, ํ ์ค๋ฒํ๋ก์ฐ ๋ผ๊ณ ํ๋ค.
-
ํ ๋น ์๋ ๋น๊ต
- ์คํ์ ์ปดํ์ผ ์ ์ด๋ฏธ ํ ๋น๋ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ค.
- ์คํ์์ ๋งํ๋ ํ ๋น์ด๋ ์ด๋ฏธ ์์ฑ๋ ์คํ์ ๋ํด ํฌ์ธํฐ์ ์์น๋ง ๋ฐ๊ฟ์ฃผ๋ ๋จ์ํ CPU Instruction์ ๋งํ๋ค.
- ํ์ ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ํ ๋นํด์ ์ฌ์ฉํ๋ ๊ณต๊ฐ์ด๋ค.
- ํ์์์ ํ ๋น์ด๋ ์์ฒญ๋ chunk์ ํฌ๊ธฐ, ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ fragmentation ์ํฉ ๋ฑ ๋ค์ํ ์์๋ฅผ ๊ณ ๋ คํ๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ CPU Instruction์ ํ์๋ก ํ๋ค.
โ ๊ทธ๋ฌ๋ฉด ์คํ ํ ๋น ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๊ฒ ์ง์?
- ์คํ์ ์ปดํ์ผ ์ ์ด๋ฏธ ํ ๋น๋ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ค.
- ํ๋์ ํ๋ก์ธ์ค๋ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ด ๋ ์ค๋ ๋๋, ํ๋ก์ธ์ค์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ๋ ๊ฒ์ด ์๋๋ผ,
code
,data
,heap
์์ญ๋ง ๊ณต์ ํ๊ณ ,stack
์์ญ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋์ ์ค๋ ๋๋ผ๋ฆฌ ๊ณต์ ํ ์ ๋ณด๋ ์ ์ญ ๋ณ์๋ก ์ ์ธํด data ์์ญ์ ์ ์ฅ๋๊ฒ๋ ํ๊ณ , ๊ฐ ์ค๋ ๋์์ ์ฌ์ฉํ๊ณ ๋๋๋ฉด ๋ฒ๋ฆด(?) ์ ๋ณด๋ ์ง์ญ ๋ณ์๋ก ์ ์ธํด stack ์์ญ์ ์ ์ฅ๋๊ฒ๋ ํ๋ฉด ๋๋ค. - ์ค๋ ๋๋ฅผ ํ๋์ ํจ์์ฒ๋ผ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฌ์ ~! ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๊ดํ ๊ธ์ ์ด๊ฑฐ ์ฝ์ผ์ธ์ .. ์์ฃผ ๋ช ๋ฌธ์ !!
..
-
ARC
- ํ ์์ญ์ ๋ฐ์ดํฐ๋ค์ด ์ผ๋ง๋ ์ฐธ์กฐ๋๊ณ ์๋์ง countํด์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น/ํด์ ๋ฅผ ๊ด๋ฆฌ
- ์ฆ, ์ปดํ์ผ ์์ reference counting์ ํจ
- ์ด๋ป๊ฒ counting์ ํ๋๋ฐ?
- ์ปดํ์ผ ์ ์ธ์คํด์ค ํด์ ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ์ ์ด ์ธ์คํด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋ ์ง ์์ธกํ ์ ์๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ์์คํ ์์์ ์ถ๊ฐํ ํ์๊ฐ ์๋ค.
-
๊ฐ๋น์ง ์ฝ๋ ํฐ
- ํ๋ก๊ทธ๋จ ๋์ ์ค์ reference counting
- ํ๋ก๊ทธ๋จ์ ๋์ํ ๋, ๋ฉ๋ชจ๋ฆฌ ๊ฐ์๋ฅผ ์ํ ์ถ๊ฐ ์์์ด ํ์ํ๋ค.
- ๋ช ํํ ๊ท์น์ด ์๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค๊ฐ ์ธ์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋ ์ง ์์ธกํ๊ธฐ๊ฐ ์ด๋ ค์.
(ใ ใ ํฉ๋๋ค ์๋ฐ๋ ์ฌ๊ธฐ๊น์ง๋ฐ์ ๋ชจ๋ฆ ๋๋ค...)
https://kant0116.tistory.com/17
https://velog.io/@hidaehyunlee/๋ฉ๋ชจ๋ฆฌ-๊ตฌ์กฐ๋ฅผ-์์๋ณด์