๐ฃ ์๋ก
KOCW ๋ฐํจ๊ฒฝ ๊ต์๋์ ์ด์์ฒด์ ์์ ์ ๋ค์ผ๋ฉด์ ์์ฑํ ๊ธ์ ๋๋ค.
๋๊ธฐ์ ์ ์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ, ์ ์ฅ์ฅ์น ๊ณ์ธต ๊ตฌ์กฐ, ํ๋ก๊ทธ๋จ์ ์คํ, ํ๋ก๊ทธ๋จ์ ์คํ(๋ฉ๋ชจ๋ฆฌ load), ์์คํ ์ฝ(System Call), DMA(Direct Memory Access), ์๋ก ๋ค๋ฅธ ์ ์ถ๋ ฅ ๋ช ๋ น์ด, ์ปค๋ ์ฃผ์ ๊ณต๊ฐ์ ๋ด์ฉ, ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ํจ์
๐ ๋๊ธฐ์ ์ ์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ
๋๊ธฐ์ ์ ์ถ๋ ฅ (synchronous I/O)
I/O ์์ฒญ ํ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋ ํ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋์ด๊ฐ๋ค.
[๊ตฌํ ๋ฐฉ๋ฒ A]
- I/O ์์ฒญ์ ํ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉด, CPU๋ฅผ ๋ญ๋น์ํจ๋ค.
- ๋งค ์์ ํ๋์ I/O๋ง ์ผ์ด๋ ์ ์๋ค.
-> CPU๋ฅผ ๋ญ๋น์ํค๋ ๊ตฌํ ๋ฐฉ๋ฒ
[๊ตฌํ ๋ฐฉ๋ฒ B]
- I/O ์์ฒญ ํ ์๋ฃ๋ ๋๊น์ง ํด๋น ํ๋ก๊ทธ๋จ์ CPU๋ฅผ ๋บ๋๋ค.
- I/O ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ํด๋น ํ๋ก๊ทธ๋จ์ ์ค ์ธ์ด๋ค.
- ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ CPU๋ฅผ ์ค๋ค.
-> ๋ณดํต ๋๊ธฐ์ ์
์ถ๋ ฅ์ ๊ตฌํ ๋ฐฉ๋ฒ B
๋น๋๊ธฐ์ ์ ์ถ๋ ฅ (asynchronous I/O)
I/O๊ฐ ์์๋ ํ ์ ์ถ๋ ฅ ์์ ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , CPU ์ ์ด๊ถ์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋๊ธด๋ค.
[์ง๋ฌธ] I/O์ ์๋ฃ๋ ์ด๋ป๊ฒ ์๋ฆฌ๋๊ฐ?
๋๊ธฐ์, ๋น๋๊ธฐ์ ์
์ถ๋ ฅ ๋ชจ๋ ์ธํฐ๋ฝํธ๋ก I/O์ ์๋ฃ๋ฅผ ์๋ฆฐ๋ค.
๐ DMA(Direct Memory Access)
1. ๋น ๋ฅธ ์
์ถ๋ ฅ ์ฅ์น๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ๊น์ด ์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
(์ธํฐ๋ฝํธ๋ฅผ ๋น๋ฒํ ๊ฑธ๋ฉด CPU๊ฐ ๋ง์ ์ธํฐ๋ฝํธ๋ก ์ธํด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. ๋ฐ๋ผ์ ์ค๊ฐ์ DMA Controller๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ฌ ์นดํผํ๋ค)
2. CPU์ ์ค์ฌ ์์ด device controller๊ฐ device์ buffer storage์ ๋ด์ฉ์ ๋ฉ๋ชจ๋ฆฌ์ block ๋จ์๋ก ์ง์ ์ ์กํ๋ค.
3. ๋ฐ์ดํธ ๋จ์๊ฐ ์๋๋ผ block ๋จ์๋ก ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํจ๋ค.
DMA๋ 1๋ฐ์ดํธ๊ฐ ๋ค์ด์๋ค๊ณ CPU์ ์ธํฐ๋ฝํธ๋ฅผ ๊ฑฐ๋ ๊ฒ ์๋๋ค.
๋ฒํผ์ ์์ธ ๋ฐ์ดํฐ๋ฅผ DMA๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์นดํผ๋ฅผ ํ๊ณ , ๋ฒํผ์ ํน์ ํฌ๊ธฐ(block ๋จ์)๋งํผ ๋ฐ์ดํฐ๊ฐ ์์ด๋ฉด ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํจ๋ค.
๐ ์๋ก ๋ค๋ฅธ ์ ์ถ๋ ฅ ๋ช ๋ น์ด
I/O๋ ์ผ๋ฐ์ ์ธ I/O ๋ฐฉ์๊ณผ Memory Mapped I/O ๋ฐฉ์์ด ์๋ค.
์ผ๋ฐ์ ์ธ I/O
๋ฉ๋ชจ๋ฆฌ ์ ๊ทผํ๋ ์ธ์คํธ๋ญ์ ๊ณผ I/O์ฅ์น๋ฅผ ์ ๊ทผํด์ผ ํ๋ ์ธ์คํธ๋ญ์ (special instruction)์ด ๋ฐ๋ก ์๋ค.
Memory Mapped I/O
I/O ์ฅ์น๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ฐ์ฅ ์ฃผ์๋ฅผ ๋ถ์ฌ ์ ๊ทผํ ์ ์๋ค.
์๋ฅผ ๋ค์ด 100๋ฒ์ง์ ์ ๊ทผํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ค๋ฉด, 1000๋ฒ์ง์ ํด๋นํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ์ธ์คํธ๋ญ์
์ ์ฌ์ค์ I/O๋ฅผ ํ๋ ์ธ์คํธ๋ญ์
์ ๋ปํ ์ ์๋ค.
๐ ์ ์ฅ์ฅ์น ๊ณ์ธต ๊ตฌ์กฐ
์๋ก ๊ฐ์๋ก ์๋๊ฐ ๋น ๋ฅด์ง๋ง, ๋จ์ ๊ณต๊ฐ๋น ๊ฐ๊ฒฉ์ด ๋น์ธ๊ณ ์ฉ๋์ด ์ ๋ค.
์๋๋ก ๊ฐ์๋ก ๊ฐ๊ฒฉ์ ์ธ๊ณ ์ฉ๋์ด ๋ง์ง๋ง, ์๋๊ฐ ๋๋ ค์ง๋ค.
ํ๋ฐ์ฑ ๋นํ๋ฐ์ฑ? (Volatility)
ํ๋ฐ์ฑ ๋งค์ฒด๋ ์ ์์ด ๋๊ฐ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
๋นํ๋ฐ์ฑ ๋งค์ฒด๋ ์ ์์ด ๋๊ฐ๋ ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง์ง ์๋๋ค.
Primary, Secondary storage?
CPU๋ ๋ฐ์ดํธ ๋จ์๋ก ์ ๊ทผ ๊ฐ๋ฅํ ๋งค์ฒด์ด์ด์ผ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
[Primary]
CPU์์ ์ง์ ์ ๊ทผํ ์ ์๋ ๋งค์ฒด๋ฅผ ๋งํ๋ค. Executable(์คํ ๊ฐ๋ฅํ๋ค)ํ๋ค๊ณ ํ๋ค.
์ฆ, ์ ๊ทธ๋ฃน(์ด๋ก)์ ๋ฐ์ดํธ ๋จ์๋ก CPU ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฉฐ ์ด๊ฒ์ Primary๋ผ๊ณ ๋ถ๋ฅธ๋ค.
[Secondary]
CPU๊ฐ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๋ ๋งค์ฒด๋ฅผ ๋งํ๋ค.
ํ๋๋์คํฌ์ ๋จ์๋ ์นํฐ ๋จ์๋ก ์ ๊ทผํ ์ ์์ด CPU๊ฐ ์ ๊ทผํ์ง ๋ชปํ๋ฉฐ ์ด๊ฒ์ Secondary๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ์ด์ ?
CPU์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ฐจ์ด๋ฅผ ์์ถฉํ๊ธฐ ์ํด ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋ค.
์ฉ๋์ด ์ ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฑธ ๋ด์ ๋ ์๋ ์๋ค. (๊ธฐ์กด์ ์๋๊ฑธ ์์ ์ผ ํ๋๋ฐ ์ด๋ ๋์ค์ ์ด์ผ๊ธฐํ๋๋ก ํ๋ค)
์บ์ฑ์ ์ฌ์ฌ์ฉ์ ๋ชฉ์ ์ผ๋ก ํ๋ค. ์ฆ, ๋ ๋ฒ์งธ ์์ฒญ๋ถํฐ ์ด๋ฏธ ์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
๐ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์คํ๋๋๊ฐ?
ํ๋ก๊ทธ๋จ์ File System์ ์คํ ํ์ผ ํํ๋ก ์ ์ฅ๋์ด ์๋ค. ์คํ์ํค๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ํ๋ก์ธ์ค๊ฐ ๋๋ค.
์ ํํ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ฌ๋ผ๊ฐ๋ ๊ฒ์ด ์๋๋ผ ํ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๊ฒ ๋๋๋ฐ ์ด๋ฅผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(Virtual Memory) ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค๊ณ ํ๋ค.
์ด๋ ๋
์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ํ์ฑ๋๋๋ฐ code, data, stack ์์ญ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
[code] CPU์์ ์คํํ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์ ์ฅ
[data] ๋ณ์๋ฅผ ์ ์ฅ
[stack] ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ฆฌํดํ ๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ค๊ฐ ๊บผ๋
๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ ์คํ์ํค๋๋ฐ ํ๋ก๊ทธ๋จ์ ์คํ์์ผฐ์ ๋ ๋ง๋ค์ด์ง ์ฃผ์ ๊ณต๊ฐ์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํต์งธ๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ ์๋๋ค. ํต์งธ๋ก ์ฌ๋ฆฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ญ๋น๋ ์ ์๋ค. ๊ทธ๋์ ํ์ํ ๋ถ๋ถ๋ง ์ฌ๋ฆฌ๊ฒ ๋๋ค.
Virtual Memory?
์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์ซ์ ๋ฒ๋ฆฌ๋ ๊ฒ ์๋๋ผ Disk์ ๋ด๋ ค๋๊ฒ ๋๋ค. (์ด๋ฌํ ์ฉ๋์ ๊ณต๊ฐ์ Swap area๋ผ๊ณ ํ๋ค)
์ฆ, ์ฃผ์ ๊ณต๊ฐ์ ์ชผ๊ฐ์ ์ด๋ค ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ์ ์๊ณ , ์ด๋ค ๋ถ๋ถ์ Swap area์ ์๊ฒ ๋๋ค.
์ด๋ฐ ๊ธฐ๋ฒ์ Virtual Memory๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ์ง๋ง, ์ฌ์ค ๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค ๋
์์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ Virtual Memory๋ผ๊ณ ํ๋ค.
[Disk ํ์ฉ]
Disk์ Swap area๋ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฅ ๊ณต๊ฐ(ํ๋ฐ์ฑ)์ผ๋ก ์ฌ์ฉํ๊ณ , File System์ ๋นํ๋ฐ์ฑ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
์ฃผ์ ๊ณต๊ฐ์์ 1000๋ฒ์ง์ธ๋ฐ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์๋ 3000๋ฒ์ง๋ก ์ฌ๋ผ๊ฐ๋์ง ์ฆ, ๋ค๋ฅธ ๋ฒ์ง๋ก ์ ์ฅ๋ ์ ์๋ค.
์ด๋ฅผ ์ฃผ์ ๋ณํ ๊ณ์ธต์์ ํ๋ค. (Address translation, ๋ณํํ๋ ํ๋์จ์ด ์ฅ์น๊ฐ ์๋๋ฐ ์์ธํ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ถ๋ถ์์ ๋ค๋ฃฐ ์์ )
๐ ์ปค๋ ์ฃผ์ ๊ณต๊ฐ์ ๋ด์ฉ
code
- ์ด์์ฒด์ ๋ ์์คํ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋๋ฐ ์ด๋ ๊ด๋ จ๋ ์ฝ๋๊ฐ ํด๋น ์์ญ์ ์๋ค.
- ์ฌ์ฉ์์๊ฒ ํธ๋ฆฌํ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์ฝ๋๊ฐ ์๋ค.
- ์ธํฐ๋ฝํธ๋ง๋ค ๋ฌด์จ ์ผ์ ์ฒ๋ฆฌํด์ผ ํ๋์ง ํจ์ ํํ๋ก ๊ตฌํ๋์ด ์๋ค.
data
์ด์์ฒด์ ๊ฐ ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ ์๋์ด ์๋ค.
[PCB(Process Control Block)]
- ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ์๋ฃ๊ตฌ์กฐ
- ํ๋ก์ธ์ค๋ง๋ค ํ๋์ฉ ์กด์ฌ
stack
- ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ฆฌํดํ ๋ stack ์์ญ์ ์ด์ฉํ๋ค.
- ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ปค๋์ ์ฝ๋๋ฅผ ์คํ ์ค์ธ๊ฐ์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ง๋ค ์ปค๋ ์คํ์ ๋ณ๋๋ก ๊ฐ์ง๋ค.
๐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ํจ์
์ฌ์ฉ์ ์ ์ ํจ์
์์ ์ ํ๋ก๊ทธ๋จ์์ ์ ์ํ ํจ์๋ฅผ ๋งํ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์
- ์์ ์ ํ๋ก๊ทธ๋จ์์ ์ ์ํ์ง ์๊ณ , ๊ฐ์ ธ๋ค ์ฌ์ฉํ ํจ์๋ฅผ ๋งํ๋ค.
- ์์ ์ ํ๋ก๊ทธ๋จ์ ์คํ ํ์ผ์ ํฌํจ๋์ด ์๋ค.
์ปค๋ ํจ์
- ์ด์์ฒด์ ํ๋ก๊ทธ๋จ์ ํจ์๋ฅผ ๋งํ๋ค.
- ์ปค๋ ํจ์์ ํธ์ถ = ์์คํ
์ฝ
(์ฃผ์ ์ ํ๋ฅผ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธํฐ๋ฝํธ ๋ผ์ธ์ ์ธํ ํด์ CPU ์ ์ด๊ถ์ ๋๊ฒจ์ผ ํ๋ค)
๐ ํ๋ก๊ทธ๋จ์ ์คํ
๋ฐํจ๊ฒฝ [์ด์์ฒด์ ] 4. System Structure & Program Execution 2
์ค๋ช ์ด ์์ต๋๋ค.
core.ewha.ac.kr
์ด์์ฒด์
์ด์์ฒด์ ๋ ์ปดํจํฐ ํ๋์จ์ด ๋ฐ๋ก ์์ ์ค์น๋๋ ์ํํธ์จ์ด ๊ณ์ธต์ผ๋ก์ ๋ชจ๋ ์ปดํจํฐ ์์คํ ์ ํ์์ ์ธ ๋ถ๋ถ์ด๋ค. ๋ณธ ๊ฐ์ข์์๋ ์ด์ ๊ฐ์ ์ด์์ฒด์ ์ ๊ฐ๋ ๊ณผ ์ญํ , ์ด์์ฒด์ ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ
www.kocw.net
'OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ป KOCW-OS-4: Process (0) | 2020.10.26 |
---|---|
๐ป KOCW-OS-3: System Structure & Program Execution 2 (0) | 2020.10.05 |
๐ป KOCW-OS-2: System Structure & Program Execution 1 (0) | 2020.10.04 |
๐ป KOCW-OS-1: Introduction to Operating Systems (0) | 2020.10.03 |