CPU:
โข
clock cycle ๋ง๋ค ๊ธฐ๊ณ์ด๋ฅผ ์ฝ์ด์ ์คํ
๋ฉ๋ชจ๋ฆฌ:
โข
CPU ์ ์์
๊ณต๊ฐ
โข
CPU ๋ ๋ฉ๋ชจ๋ฆฌ์์ instruction(๊ธฐ๊ณ์ด) ์ฃผ์๊ฐ์ ์ฝ์ด์ ์คํ
ํ๋๋์คํฌ(๋ณด์กฐ๊ธฐ์ต์ฅ์น):
โข
IO device
device controller
โข
ํค๋๊ฐ ์ด๋ป๊ฒ ์์ง์ด๊ณ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ง ๊ฒฐ์ (๋์คํฌ ์ปจํธ๋กค๋ฌ)
โข
๊ฐ IO device ๋ง๋ค ๋ถ์ด์์
local buffer
โข
device controller ์ ๋ฉ๋ชจ๋ฆฌ ์ญํ
register
mode bit
โข
CPU ์์ ์คํ๋๋ ๊ฒ์ด ์ด์ ์ฒด์ ์ธ์ง ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ธ์ง ๊ตฌ๋ถ
โข
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์๋ชป๋ ์ํ์ผ๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋ฐ ์ด์ ์ฒด์ ์ ํผํด๊ฐ ๊ฐ์ง ์๋๋ก ํ๊ธฐ ์ํ ๋ณดํธ ์ฅ์น
โข
1: ์ฌ์ฉ์ ๋ชจ๋, 0: ์ปค๋ ๋ชจ๋(๋ชจ๋ํฐ ๋ชจ๋)
โข
0์ผ ๋(์ด์ ์ฒด์ ๊ฐ CPU ์์ ์คํ์ค์ผ ๋)๋ ์ด๋๋ ์ ๊ทผ ๊ฐ๋ฅ
timer
โข
ํน์ ํ ํ๋ก์ธ์ค๊ฐ CPU ๋ฅผ ๋
์ ํ์ง ๋ชปํ๋๋ก ํจ.
DMA(Direct Memory Access) controller
โข
CPU ๋์ memory ์ ์ ๊ทผํ ์ ์๋๋ก
โข
IO ๊ฐ interrupt ๋ฅผ ๋๋ฌด ๋ง์ด ๊ฑธ์ด์ CPU ๊ฐ ๋ฐฉํด๋ฅผ ๋ง์ด ๋ฐ๋๋ค. ์ด๋ฅผ ๋ง๊ธฐ ์ํด DMA controller ์์ local buffer ์ ๋ค์ด์จ ๋ด์ฉ์ memory ์ copy ํด์ฃผ๋ ์ญํ
โข
block ๋จ์๋ก CPU ์ interrupt ๋ฅผ ๋ฐ์์ํจ๋ค.
device driver
โข
OS ์ฝ๋ ์ค ๊ฐ ์ฅ์น๋ณ ์ฒ๋ฆฌ ๋ฃจํด โ software
์ ์ถ๋ ฅ ์ํ
โข
๋ชจ๋ ์
์ถ๋ ฅ ๋ช
๋ น์ ํน๊ถ ๋ช
๋ น
โข
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด IO ๋ฅผ ํ๋ ๋ฐฉ๋ฒ
โฆ
system call: ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์๊ฒ io ์์ฒญ
โฆ
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ CPU ์๊ฒ interrupt ๋ฅผ ๊ฑธ๋ฉด mode bit ์ด 0์ผ๋ก ๋ฐ๋๊ณ os ๋ก CPU ์ ์ด๊ถ์ด ๋ฐ๋
โฆ
์ด๋ฅผ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ, trap ์ด๋ผ๊ณ ํ๋ค.
๋๊ธฐ, ๋น๋๊ธฐ ์ ์ถ๋ ฅ
sync: ์๊ฐ์ ์ผ๋ก ์๋ก ๋ง์ถ๋ ๊ฒ(lip sync)
โข
๋๊ธฐ์ ์
์ถ๋ ฅ
โฆ
IO ์ฅ์น๊น์ง ์ง์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ค๋ ๊ฒ
โฆ
IO ์์ฒญ ํ ์
์ถ๋ ฅ ์์
์ด ์๋ฃ๋ ํ์์ผ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋์ด๊ฐ
โฆ
๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์์
์ ํด์ผํจ
โข
๋น๋๊ธฐ์ ์
์ถ๋ ฅ
โฆ
IO ์์ฒญ ํ ์
์ถ๋ ฅ ์์
์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋์ด๊ฐ
โฆ
์ฝ์ด์ฌ ๋ฐ์ดํฐ์ ์๊ด์๋ ์์
์ ํด์ผํจ
โข
๋ ๊ฒฝ์ฐ ๋ชจ๋ IO ์๋ฃ๋ IO device controller ๊ฐ interrupt ๋ก ์๋ ค์ค
IO ์์
์ ๋ฐ๋์ ์ปค๋์๊ฒ ์์ฒญํด์ผ ํจ(์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ ๋ถ๊ฐ)
ํ๋ก์ธ์ค๊ฐ IO ์์ฒญ์ ํ ๋ค CPU ๋ฅผ ๊ฐ์ง๊ณ ์๋, ์๊ฐ์ง๊ณ ์๋ instruction ์ ์ํํ ์ ์์ผ๋ฉด ๋น๋๊ธฐ, ์์ผ๋ฉด ๋๊ธฐ
์ ์ฅ ์ฅ์น ๊ณ์ธต ๊ตฌ์กฐ
Main Memory
โข
DRAM ์ผ๋ก ๊ตฌ์ฑ
Primary
โข
volatility(ํ๋ฐ์ฑ)
โข
CPU ์์ ์ง์ ์ ๊ทผ ๊ฐ๋ฅ
โข
๋ฐ์ดํธ ๋จ์๋ผ์ CPU ์์ ์ ๊ทผ ๊ฐ๋ฅ
Secondary
โข
๋นํ๋ฐ์ฑ
โข
CPU ์์ ์ง์ ์ ๊ทผ ๊ฐ๋ฅ
caching ์ ๋ชฉ์ ์ ์ฌ์ฌ์ฉ๊ณผ ํจ์จ์ฑ
ํ๋ก๊ทธ๋จ ์คํ(๋ฉ๋ชจ๋ฆฌ load)
โข
์คํ ํ์ผ์ด file system ์ ์ ์ฅ๋์ด ์์
โข
์คํ ํ์ผ์ ์คํ์ํค๋ฉด memory ์ ์ฌ๋ผ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋จ
โข
์ค์ ๋ก๋ file system โ memory ๊ฐ ์๋๋ผ ์ค๊ฐ์ virtual memory ๋ฅผ ๊ฑฐ์นจ
โข
์คํ ํ์ผ์ ์คํ์ํค๋ฉด ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ํ์ฑ์ด ๋จ
โฆ
code: CPU ๊ฐ ์คํ์ํฌ ๊ธฐ๊ณ์ด ์ฝ๋
โฆ
data: ์ ์ญ ๋ณ์ ๋ฑ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ ์๋ฃ ๊ตฌ์กฐ
โฆ
stack: ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ฆฌํดํ ๋ ์์ ๋ฐ์ดํฐ
โข
๋น์ฅ ํ์ํ ๋ถ๋ถ(ํจ์, ์ฝ๋ ๋ฑ)๋ง ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
โข
swap area ๋ ํ๋๋์คํฌ์์๋ ๋ฐ์ดํฐ ์์ X, ํ๋ฐ๋จ
์ปค๋ ์ฃผ์ ๊ณต๊ฐ
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ํจ์
โข
์ฌ์ฉ์ ์ ์ ํจ์
โฆ
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์์ ์์ฑํ ํจ์
โข
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์
โฆ
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์์ ์ ์ํ์ง ์๊ณ ๊ฐ์ ธ๋ค ์ด ํจ์
โฆ
์คํ ํ์ผ์ ํฌํจ
โข
์ปค๋ ํจ์
โฆ
์ด์์ฒด์ ํ๋ก๊ทธ๋จ์ ํจ์
โฆ
์ปค๋ ํจ์ ํธ์ถ = ์์คํ
์ฝ
โข
์ฌ์ฉ์ ์ ์ ํจ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ(๊ฐ์ ๋ฉ๋ชจ๋ฆฌ)์ code ์์ญ
โข
์ปค๋ ํจ์๋ ์ปค๋ ์ฃผ์ ๊ณต๊ฐ์ code ์์ญ