์๋ก
CS์์ ์ค์ํ๊ฒ ๋ณด๋ ์์์ค ํ๋์ธ ์ด์์ฒด์ ์ ๋ํด์ ๋ค๋ค๋ณด๊ณ ์ ํ๋ค. ์ฌ์ค ์ฝ๋ฉ์ ํ๋ ๊ฒฝ์ฐ์ ์ด์์ฒด์ ์ ๊ตฌ์กฐ์ ๋์๊น์ง๋ ๊ตณ์ด ์ ํ์ ์๋ค๊ณ ์๊ฐํ๊ณ ์ฝ๋ฉ์ ํ๋ ์ฌ๋์ด ๋ง๋ค. ํ์ง๋ง ์ง์ง๋ก ์ฑ๋ฅ์ ์๊ฐํ๊ณ ํฐ ํ๋ก์ ํธ๋ฅผ ํ๋ค๊ณ ํ๋ฉด, ๊ฐ ์ํคํ
์ณ์ ๋ง๊ฒ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ฒ์ด ๋งค์ฐ ๊ฒฝ์๋ ฅ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์์ฒด์ ์ ๋ํด ๊ณต๋ถํ๋ค๋ณด๋ฉด ๋ด๊ฐ ์ปด๊ณต์ ์๊ตฌ๋... ๋ผ๋ ์๊ฐ์ด ๋ ๋ค. ์ปด๊ณต์์ ๋ง๋ฅ ์ฝ๋ฉ๋ง ํ์ผ๋ฉด ์ ๊ณต์ ์ ๋ฌธ์ฑ์ด ๋๊ปด์ง์ง ์์์ ๊ฒ ๊ฐ๋ค.
๐กOperation System(OS)?
์ด์์ฒด์ ๋ ์ปดํจํฐ๊ฐ ์ํ ํ๊ฒ ์๋ํ๋๋ก ๋์์ฃผ๋ ์ํํธ์จ์ด ๊ณ์ธต.
- ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํจ.(UI)
- ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด ์์์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์(๋ฉ๋ชจ๋ฆฌ, CPU, ๋์คํฌ)
- ์ํํธ์จ์ด ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋๋ก API ์ ๊ณต
ํฐ ๋
ธ์ด๋ง(Von Neumann Machine)
ํ๋ ์ปดํจํฐ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ, ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค.
- Stored-program architecture ์ด๋ผ๊ณ ํ๋ค.(ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ)
- ํ๋ก๊ทธ๋จ๋ง ๋ค์ ๋ฐ๊ฟ์ ์ฝ๊ฒ ์ฌํ๋ก๊ทธ๋จ์ด ๊ฐ๋ฅํ๋ค.(ํ๋์ ์ปดํจํฐ, ์ค๋งํธํฐ ์ฒ๋ผ)
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฐ์ดํฐ์ ํ๋ก๊ทธ๋จ์ ๋ ๋ค ์ ์ฅํ๋ค.
- BUS๋ ๋ฐ์ดํฐ์ ๋ช
๋ น์ด๋ฅผ ์ด๋์ํค๋ ํต๋ก๋ค.
Register
register์ CPU๋ด๋ถ์ ์๋ ์์ฃผ ์๊ณ ๋น ๋ฅธ ์ ์ฅ๊ณต๊ฐ์ด๋ค.
- PC (program counter) : ๋ค์ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ์ ์ฅ
- IR (instruction Register): ํ์ฌ ์คํ์ค์ธ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ์ ์ฅ
- PSW (Program Status Word): ํ์ ํ๋ก์ธ์ค์ ์ํ(๊ฒฐ๊ณผ, ์ค๋ฅ, ์กฐ๊ฑด๋ฑ)
- MBR (Memory Buffer Register): ๋ฐ์ดํฐ ์ด๋์ ์ํ ๋ฒํผ, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ถฉ๋ ๋ฐฉ์ง
- MAR (Memoty Adress Register): ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ฌ์ฉํ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค.
์ ์ด๋ ๊ฒ๋ง ๋ณด๋ฉด ์ดํด๊ฐ ์ ์๋ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ์ฝ๊ฒ ์๋ฆฌ๋ก ํ๋ฒ ์์๋ค ๋ค์ด๋ณด๊ฒ ๋ค.
- CPU = ์๋ฆฌ์ฌ
- RAM = ๋์ฅ๊ณ
- Register = ์๋ฆฌ์ฌ๊ฐ ๋ค๊ณ ์๋ ์๋ฐ
+) ๋ ์ง์คํฐ๋ CPU ๋ด๋ถ์ ์์ ์ ์ฅ๊ณต๊ฐ์.
โ๏ธ๋์ฅ๊ณ ์ ์๋ ์ฌ๋ฃ๋ฅผ ๊บผ๋ด์ค๊ธฐ
- MAR = ๋์ฅ๊ณ ๋ช๋ฒ์งธ ์นธ์ ์ฌ๋ฃ๊ฐ ์๋์ง ๋งํด์ค
- MBR = ๋์ฅ๊ณ ์์ ๊บผ๋ธ ์ฌ๋ฃ๋ฅผ ์ ๊น ์๋ฐ์ ์ฌ๋ ค๋ .
โ๏ธ์๋ฆฌ
- PC = ๋ค์์ ํ ์๋ฆฌ๊ฐ ๋ญ์ง ๊ธฐ๋ก.
- IR = ์ง๊ธ ํ๋ ์๋ฆฌ๊ฐ ๋ญ์ง ๊ธฐ๋ก.
- PSW = ์๋ฆฌ ์คํจ ์ฌ๋ถ๋ฅผ ๊ธฐ๋ก
๊ทธ๋ ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ณ๋ก ์ฐ๊ฒฐ์ด ์ด๋ป๊ฒ ๋๋๊ฑด์ง ์์ ๊ทธ๋ฆผ์ ์ฐธ์กฐํ๋ฉด์ ์์๋ณด์.
- PC -> MAR : ๋ค์์ ์คํํ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ๋๊ธด๋ค.
- MAR -> RAM : ๋ฐ์ ์ฃผ์๋ก ๋ช
๋ น์ด๋ฅผ ์์ฒญํ๋ค.
- RAM -> MBR : ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์จ๋ค.
- MBR -> IR : ๋ช
๋ น์ด๋ฅผ CPU๋ก ์ ๋ฌํ๋ค.
- ํด์ ๋ฐ ์คํ์ ํ๋ค. ๊ฒฐ๊ณผ๋ PSW์ ์ ์ฅํ๋ค.
ํฐ๋
ธ์ด๋ง ๊ตฌ์กฐ์ ๋ฌธ์ ์
1. ๋ณ๋ชฉํ์
๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ๋๋ฆฐ ๋ค๋ฅธ ๋ถํ(์ํฅ)์ผ๋ก ์ธํด ์ ์ฒด ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ ค์ง๋ ํ์.
<๋ฌธ์ ์ >
- CPU๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ/์ฝ๋ ๋ฅผ ๊ฐ์ ธ์ค๋๋ผ ๋๊ธฐํด์ผ ํ๋ค. - ๋ณ๋ชฉํ์ ๋ฐ์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ธฐ์ต์ฅ์น(๋ฉ๋ชจ๋ฆฌ)์ ์ฑ๋ฅ์ด ์ ์ฒด ์์คํ
์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค.
- ex) ๋์์๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋๋ฐ, ๊ธฐ์ต์ ๋ถ๋ฌ์ค๋ ์๋๊ฐ ๋๋ ค์ ๋ณ๋ชฉํ์ ๋ฐ์
<์๋ฅ์
>
- Cache
-> ์ต๊ทผ ์ฌ์ฉ ๋ฐ์ดํฐ, ํ๋ก๊ทธ๋จ์ ๋ฐ๋ก ์ ์ฅํด ํด๊ฒฐ
-> cpu์์ ๋น ๋ฅธ ์์ ๊ธฐ์ต์ฅ์น๋ฅผ ๋ฌ์, ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ด
- ์ฝ๋ ์ต์ ํ
2. ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌ
<๋ฌธ์ ์ >
- ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ด ์๋ค๋ณด๋, ํ๋ก๊ทธ๋จ์ ์ค์๋ก ์๊ธฐ ๋ช
๋ น์ด๋ก ๋ฎ์ด์ธ ์ ์๋ค.
- ๊ฐ์ด ์์ผ๋ ๋ช
๋ น์ด๊ฐ ๊ผฌ์ผ ์ ์์.
<์๋ฃจ์
>
- ํ๋ฒ๋ ์ํคํ
์ณ
-> ๋ฐ์ดํฐ์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ๋ฆฌ.
-> ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ์๋ง ์ฝ๊ณ ์ด๋ค. ํ๋ก๊ทธ๋จ์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๋ง ์ฌ์ฉ.
-> ์ธ๋ถ ๋ฐ์ดํฐ ์ ๊ทผ ๋ฐฉ์ง. - ๋ณด์์ฑ ์ฆ๊ฐ
3. ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๊ฐ ๋์ผํ BUS ๊ณต์
<๋ฌธ์ ์ >
- BUS๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ ์ก ์๋, ๋ช
๋ น์ด ๊ฐ์ ธ์ค๋ ์๋๊ฐ ์๋ก ์ถฉ๋ํ๊ณ ๋๋ ค์ง๋ค.
<์๋ฃจ์
>
- ํ๋ฒ๋ ์ํคํ
์ณ
-> ๋ฐ์ดํฐ์ฉ ๋ฒ์ค์ ํ๋ก๊ทธ๋จ์ฉ ๋ฒ์ค๋ฅผ ๋ถ๋ฆฌํ๋ค.
-> ๋ช
๋ น์ด์ ๋ฐ์ดํฐ ์ ์ก์ด ๋์์ ์ด๋ฃจ์ด์ง ์ ์์ด์ ์๋๊ฐ ๋นจ๋ผ์ง๋ค.
ํ๋ฒ๊ทธ ๊ตฌ์กฐ : CPU๊ฐ ๋์์ ๋ช
๋ น๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด ์๋ ์ฆ๊ฐ
๋ช
๋ น์ด ์ฌ์ดํด(Instruction Cycle)
CPU๋ ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ , ํด์ํ๊ณ , ์คํํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- Fetch : ๋ช
๋ น์ด ๊ฐ์ ธ์ค๊ธฐ
- Decode : ํด์ํ๊ธฐ
- Execute : ํด๋น ์์
์ ์ํ
- CPU๋ PC์ ์๋ ์ฃผ์๋ฅผ ๋ณด๊ณ , ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์น์์ ๋ช
๋ น์ด๋ฅผ ์ฝ์ด์จ๋ค.(Fetch)
- ํ๋ก์ธ์๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์จ ๋ช
๋ น์ IR์ ์ ์ฅํ๊ณ PC๋ฅผ PC+1์ ๊ฐ์ผ๋ก ์ต์ ํ๋ฅผ ์ํจ๋ค.
- ๋ช
๋ น์ด๋ฅผ ํด์(Decode)ํ๊ณ ๊ทธ ๋ช
๋ น์ ์คํ(Execute)ํ๋ค.
- PC๋ฅผ ์ฝ์ด ๋ค์ ๋ช
๋ น์ ์ํํ๋ค.
ํ๋ก์ธ์๋ ๋ช
๋ ์ด๋ฅผ ํด์ํ๊ณ ํ์ํ ์์
์ ์ํ
- ํ๋ก์ธ์-๋ฉ๋ชจ๋ฆฌ
- ํ๋ก์ธ์-I/O
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ์ ์ด
- Opcode(์์
์ฝ๋) -> ํ๋ก์ธ์๊ฐ ์ด๋ค ์์
์ ์ํํด์ผ ํ๋์ง๋ฅผ ๊ฒฐ์
- AC (Accumulator) -> ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์์๋ก ์ ์ฅํ๋ ๋ ์ง์คํฐ.
Step 1,2
์ด ๊ทธ๋ฆผ์ ๋ณด๋ฉด, ๋งจ ์ฒ์ ์ซ์๋ opcode์ด๋ค. ๋ฐ๋ผ์ 300๋ฒ๋ ๋ฉ๋ชจ๋ฆฌ์ 1940์ด๋ผ๋ ๋ช
๋ น์ด๊ฐ ์๋ค๋ฉด, 1๋ฒ ๋ช
๋ น์ AC๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์
๋ฐ์ดํธ ํ๋๊ฒ์ด๊ธฐ ๋๋ฌธ์ 1 ๋ค์์๋ 940๋ฒ์ง์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค(002) ๋ฐ๋ผ์ ์ด๊ฑฐ๋ฅผ AC๋ก ์
๋ฐ์ดํธ ํ๋ค. ๋ํ PC๊ฐ์ +1 ์ํจ๋ค.
Step 3,4
Fetch๋ฅผ ํตํด PC์ ์๋ ๋ช
๋ น์ด๋ฅผ ์ฝ์ด์จ๋ค. 5941์ด๊ธฐ ๋๋ฌธ์, 5๋ AC์ ๊ฐ์ ๋ํ๋ ๋ช
๋ น์ด๊ธฐ ๋๋ฌธ์, ๋ฉ๋ชจ๋ฆฌ 941๋ฒ์ง์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ AC์ ์๋ 3์ด๋ผ๋ ๊ฐ๊ณผ ๋ํ๊ธฐ ์ฐ์ฐ์ ์ํ ํ AC์ ์
๋ฐ์ดํธ ํ๋ค.(3+2=5). ๋ํ PC๊ฐ์ +1์ํจ๋ค.
Ster 5,6
2941์ด๋ผ๋ ๊ฐ์ ํ์ธํ๋ค, AC์ ์๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๋ช
๋ น์ด๋ค. ๋ฐ๋ผ์ 941๋ฒ์ง์ ์๋ ๋ฐ์ดํฐ๋ฅผ AC์ ๊ฐ์ผ๋ก ์
๋ฐ์ดํธํ๋ค.
Interrupts
์ธํฐ๋ฝํธ๋ ํ๋ก์ธ์์ ์ ์์ ์ธ ์์๋ฅผ ์ค๋จํ๋ค.
Without Interrupts
ํ๋ก์ธ์๊ฐ I/O ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋จ -> ์ฌ์ฉ์์๊ฒ ์ฐฐ๋์ ์๊ฐ์ด์ง๋ง CPU์๊ฒ๋ ๋งค์ฐ ๊ธด ์๊ฐ์ -> I/O Bound ๋ฐ์
Interrupts
ํ๋ก์ธ์๊ฐ I/O ์์
์์ฒญ์ ๋ณด๋ด๊ณ ๋ค๋ฅธ ์์
์ ์ํ
์์ฒญํ๋ I/O์์
์ด ๋๋๋ฉด Interrupts๊ฐ ๊ฑธ๋ฆฌ๊ณ I/O์์
์๋ฃ ์
๋ฌด๋ฅผ ์ํ
์์
์๋ฃํ ๋ค์ ํ๋ ์์
์ ์ด์ด์ ์ํ
๋ฐ๋ณต
- ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด CPU๋ ํ์ฌ ์คํ์ค์ธ Fetch-Excute ์ฌ์ดํด์ ์ผ์์ค์ง ํ๋ค.
- CPU๋ ํ์ฌ ์ํ๋ฅผ ์คํ ๋๋ ํน์ ๋ ์ง์คํฐ ์์ญ์ ์ ์ฅ
- ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ์๋ -> ์ํ ๋ณต์์ ์ํ
- HALT -> ์ธํฐ๋ฝํธ ํ์ฑํ ์ํ๋ก ์ ํ
Memory Hierarchy
๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํ์ํ ๋ ๋น ๋ฅด๊ฒ ์ฝ๊ฑฐ๋ ์ธ ์ ์๊ฒ ํ๋ ์ ์ฅ ๊ณต๊ฐ์ด๋ค. CPU๊ฐ ์์
์ ์ํํ ๋, ๋ถํ์ํ ์ ๋ณด๋ฅผ ์ผ์์ ์ผ๋ก ๋ณด๊ดํ๊ฑฐ๋ ๋ถ๋ฌ์ค๋ ์ญํ ์ ํ๋ค.
๋ฉ๋ชจ๋ฆฌ์์ ๊ณ ๋ คํด์ผํ 3๊ฐ์ง ์ ์ฝ์ฌํญ
1. Amount (์ฉ๋) : ๋ฐ์ดํฐ๋ผ ํ๋ก๊ทธ๋จ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฉ๋์ด ์ปค์ผ ํ๋ค.
2. Speed (์๋) : CPU๋ ๋น ๋ฅธ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋๊ฐ ๋๋ฆฌ๋ฉด ๋ณ๋ชฉํ์์ด ๋ฐ์ํ๋ค.
3. Expense (๋น์ฉ) : ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ฌด๋ฆฌ ๋นจ๋ฆฌ ๋ง๋ค์ด๋ ๋น์ฉ์ด ํฌ๋ฉด ์๋๋ค.
ํ์ง๋ง ์ด 3๊ฐ์ง๋ฅผ ๋ชจ๋ ๋ง์กฑํ๋ ๋ฉ๋ชจ๋ฆฌ๋ ์๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ง๊ฒ ์ ํ์ ํด์ผํ๋ค.

- ์๋๋ก ๊ฐ์๋ก ์ฉ๋์ด ์ฆ๊ฐ, ๋๋ ค์ง, ๋น์ฉ์ด ๊ฐ์ํจ.
- ๋ ์ง์คํฐ - ๊ฐ์ฅ ๋น ๋ฅด๊ณ ์ฉ๋์ด ์ ์
- ์บ์ ๋ฉ๋ชจ๋ฆฌ - CPU์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ์ ์ฅ
- ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM) - ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์ ์ฅ๋จ
- ๋ณด์กฐ ์ ์ฅ ์ฅ์น(SSD/HDD) - ์ฅ์ง ์ ์ฅ
์๋: ๋ ์ง์คํฐ > ์บ์ > Main Memory > RAM > SSD
Principle of Locality
์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ทผํ ๋, ์๊ฐ๊ณผ ๊ณต๊ฐ์ ๋ญ์น๋ ๊ฒฝํฅ์ด ์๋ค.
=> ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฐธ์กฐํ ํ๋ฅ ์ด ๋์ ๊ฒฝํฅ์ด ์๋ค.
- ์๊ฐ ์ง์ญ์ฑ
- ์ต๊ทผ์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ ๋ช
๋ น์ด๋ ๊ฐ๊น์ด ๋ฏธ๋์๋ ๋ค์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ-> ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ
- ํน์ ๋ณ์๋ ํจ์ ์ฌ์ฉ -> ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ
- ๊ณต๊ฐ ์ง์ญ์ฑ
- ํ๋ฒ ์ ๊ทผํ ๋ฐ์ดํฐ ๊ทผ์ฒ์ ์๋ ๋ฐ์ดํฐ๋ ๊ณง ์ ๊ทผ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- ๋ฐฐ์ด ์ํ -> arr[1] ๋ค์ arr[2]....
- ๊ตฌ์กฐ์ฒด๋ ํด๋์ค -> ๊ฐ์ฒด ์ฌ์ฉํ ๋, ๋ด๋ถ์ ์ฌ๋ฌ ๋ฉค๋ฒ๋ฅผ ์ฐ์์ ์ผ๋ก ์ ๊ทผํจ.
- ๊ทธ๋์ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ "์กฐ๊ธ์ฉ" ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ผ "๋ธ๋ก ๋จ์"๋ก ๊ฐ์ ธ์ค๊ฒ ๋๋ค.
๐กLocality๊ฐ ์ค์ํ ์ด์
์ง์ญ์ฑ์ ์๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค!!!
โ๏ธ์บ์ ๋ฉ๋ชจ๋ฆฌ
- CPU๊ฐ RAM์์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ฆผ -> ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๋ช
๋ น์ด๋ฅผ ์บ์์ ๋ฐ๋ก ์ ์ฅํด๋ .
- ์ง์ญ์ฑ์ด ๋์์๋ก Cache Hit ํ๋ฅ ์ด ๋์์ ธ ์ฑ๋ฅ์ด ์ข์์ง๋ค.
- Cache Principles : ํ๋ก์ธ์๋ ๋จผ์ ์บ์๋ฅผ ํ์ธํจ. ๋ง์ฝ ์์ผ๋ฉด ๋น ๋ฅด๊ฒ ๋ถ๋ฌ์ด, ์์ผ๋ฉด(Cache-Miss) ๋ฉ๋ชจ๋ฆฌ์์ ๋ธ๋ก์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์บ์์ ๋ฃ์(๋ฐ์ดํธ ๋จ์X, ๊ณต๊ฐ ์ง์ญ์ฑ ๋๋ฌธ)
โ๏ธ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ (Virtual Memory)
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๋, ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋จ๊ธฐ๊ณ ๋๋จธ์ง๋ ๋์คํฌ๋ก ์ค์.
- LRU(Least Recently Used)๋ฅผ ์ฌ์ฉํด ์ต๊ทผ ์ฌ์ฉ ๋ฐ์ดํฐ๋ ๋จ๊ธฐ๊ณ ์ค๋๋ ๋ฐ์ดํฐ๋ ์ ๊ฑฐ.
Cache์ ๋ํ์ฌ
- ์๊ณ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ: CPU์ ๊ต์ฅํ ๊ฐ๊น๊ฒ ์์ด์, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ค.
- ์๋ ๋์: ๊ฐ๋ฐ์๋ OS๊ฐ ์ ๊ฒฝ์ฐ์ง ์์๋ CPU๊ฐ ์์์ ์๋ํ๋ค.
- ๋ณต์ฌ๋ณธ๋ง ์ ์ฅ: ์ผ๋ถ๋ฅผ ๋ณต์ฌํด ์ค๋ ๊ฒ์ด๋ค. (์ ์ฒด๊ฐ ์๋)
- Replacement ํ์: ์บ์๊ฐ ๊ฝ ์ฐจ๋ฉด ์ด๋ค ๋ธ๋ก์ ๋ฒ๋ฆด์ง ๊ฒฐ์ ํด์ผ ํ๋ค.
Cache Replacement ์๊ณ ๋ฆฌ์ฆ
์บ์๊ฐ ๊ฝ ์ฐผ์ ๋, ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ด์ซ์์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- LRU : ๊ฐ์ฅ ์ค๋์ ์ ์ฌ์ฉ๋ ๋ธ๋ก์ ์ ๊ฑฐ(ํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์)
- FIFO : ๋จผ์ ๋ค์ด์จ ๋ธ๋ก์ ์ ๊ฑฐ
- Random : ๋๋คํ๊ฒ ์ ๊ฑฐ
- LFU(Least Frequently Used) : ์ฌ์ฉ๋น๋๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ธ๋ก ๊ต์ฒด
- Cache-Hit : CPU๊ฐ ํ์ํ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์๋ ๊ฒฝ์ฐ -> ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์จ๋ค.
- Cache-Miss : ์บ์์ ์๋ ๊ฒฝ์ฐ -> ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ค๊ณ , ์บ์์ ์ ์ฅ
๋ฐ๋ผ์, ์บ์ ๋ฏธ์ค๋ฅผ ์ค์ด๋ ๊ฒ ์ฑ๋ฅ์ ๋งค์ฐ ์ค์ํ๋ค.

- ์ด๊ธฐ ์บ์๋ ๋จ์ผ ์บ์๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง๋ง, ์์ฆ์ ์ฌ๋ฌ level์ ๋๋๋ค.
- L1์ ์๊ณ ๋น ๋ฅด๊ณ ์ ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น ์๋ก ๋๋ ค์ง๊ณ ์ฉ๋๋ ์ปค์ง๋ค.
+) Inclusive ์บ์: L1์ ์๋ ๋ฐ์ดํฐ๊ฐ L2, L3์๋ ์กด์ฌํ ์ ์๋ค.
+) Exclusive ์บ์: L1์ ์๋ ๋ฐ์ดํฐ๋ L2, L3์๋ ์๋ค (๋ฐ์ดํฐ๊ฐ ์ค๋ณต ์ ์ฅ๋์ง ์์).
=> level์ ๋๋ ์ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๋๋ฅผ ๊ท ํ์๊ฒ ๋ง๋ ๋ค.
Cache Mapping Function
์บ์๋ ์ ํ๋ ๊ณต๊ฐ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์, ์๋ก์ด ๋ฐ์ดํฐ ๋ธ๋ก์ด ๋ค์ด์ฌ๋ ๊ธฐ์กด ๋ธ๋ก์ ๊ต์ฒดํด์ผ ํ๋ค.
์ด๋, ๋งคํ ๋ฐฉ์์ด ์ ์ฐํ ์๋ก ๊ฒ์ํ๋ก๊ฐ ๋ณต์กํด์ง๋ค.
-
์ง์ ๋งคํ (Direct Mapped): ๊ฐ ๋ธ๋ก์ ์บ์์ 1๊ฐ์ ๊ณ ์ ์์น์๋ง ์ ์ฅ.
-
์ฐ๊ด ๋งคํ (Associative): ๋ธ๋ก์ด ์บ์์ ์ด๋ ์์น๋ ์ ์ฅ ๊ฐ๋ฅ (๊ฒ์ ๋๋ฆผ).
-
์ธํธ ์ฐ๊ด ๋งคํ (Set-Associative): ์ง๊ด๊ณผ ์ฐ๊ด์ ์ ์ถฉ (์: 4-way set-associative).
Write Policy - ์ฐ๊ธฐ ์ ์ฑ
์บ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ํ๋ ์๊ธฐ
- Write-Through : ์บ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋์์ ๊ธฐ๋กํ๋ค. -> ์ผ๊ด์ฑ์ด ๋์ง๋ง ์ฑ๋ฅ์ด ์ ํ๋๋ค.
- Write-Back : ์บ์๋ง ๋จผ์ ๋ณ๊ฒฝํ๊ณ , ๋ธ๋ก์ด ๊ต์ฒด๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ํ๋ค. -> ์ฑ๋ฅ์ด ์ฐ์ํ์ง๋ง ์ผ๊ด์ฑ ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๋ค.
(๋ฉ๋ชจ๋ฆฌ์๋ ๋ฐ์ํ์ง ์๋ค๊ฐ, ์บ์์์ ๋ธ๋ก์ด ์ ๊ฑฐ๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฃ๋๋ค.)
์ถ๊ฐ ์ ๋ณด
-
CPU๋ด๋ถ์ Cache๊ฐ ์กด์ฌํจ, ๊ทผ๋ฐ ๋ณดํต L1, L2๊ฐ ๋ด๋ถ์ ์๊ณ , L3๋ ๋ถ์ด์๋ ๋๋์.
-
CPU๋ ์ง์ ์ ์ผ๋ก ์บ์ ํ์ผ์ ์ ๊ทผํ์ง ์๋๋ค. "์ ํํ" ๋งํ์๋ฉด CPU๋ ์บ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ ๊ฑด๋๋ฆฌ๊ธฐ ์ํด "๊ฐ์ ์ฃผ์"๊ฐ ํ์ํ๋ค. ๋ฐ๋ผ์ MMU๋ฅผ ํตํด ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฐ์ ์ฃผ์๋ก ๋ณํํด์ผํ๋ค.