reference: kocw์ ๋ฐํจ๊ฒฝ ๊ต์๋ ๊ฐ์์ ๊ถ์ง์ฑ ๊ต์๋ ๊ฐ์(๋ํ ์ ๊ท ์์
)
์์
์ ๋ฃ๊ณ ๋์ ๊ฐ์ ๊ต์ฌ๋ฅผ ํ์ดํํ๊ณ ํ๊ธฐํ ๋ถ๋ถ์ ์ถ๊ฐ์ ์ผ๋ก ์ ๋ฆฌํ์์ต๋๋ค.
์น๋ทฐ์์ toc๋ฅผ ์ ๊ณตํฉ๋๋ค.
github์ md ํ์ผ๋ก ๋ณด๋ ๊ฒ ํธํ์๋ค๋ฉด, ์ฌ๊ธฐ๋ก ์ด๋ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
1 ์ปดํจํฐ ์์คํ ๊ตฌ์กฐ
1-1. ์ปดํจํฐ ์์คํ ๊ตฌ์กฐ
์๋์ ์ฌ์ง์ ํ ํ๊ธฐ ๋ด๋ด ๋ค์๋ณด๊ณ ๋ค์๋ณด๊ณ ๋ค์๋ดค๋ ์ค์ํ ์๋ฃ์ ๋๋ค.
๋จผ์ ์ ๋ฐ์ ์ผ๋ก ์ด๋ป๊ฒ ํ๋ฌ๊ฐ๋์ง ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ์์ ๊ธฐ๊ณ์ด๋ฅผ ํ๋์ฉ ์ฝ์ด์ ์คํํฉ๋๋ค.
CPU๊ฐ ๊ธฐ๊ณ์ด๋ฅผ ์ฐ์ฐ(์ํ)ํ๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ค์ ๊ธฐ๊ณ์ด๋ฅผ ์คํํ๊ธฐ์ ์์์ ํน์ interrupt line ์ ์๊ทธ๋(์ธํฐ๋ฝํธ) ๋ค์ด์จ ๊ฒ ์๋์ง ํ์ธํฉ๋๋ค.
(interrupt๋ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์๋ i/o device ๋ค์ด ์ฃผ๋ก ๋ฐ์์ํต๋๋ค.)
๋ ์์ธํ ๋ด์ฉ์ ์๋์์ ์ด์ด์ง๋๋ค.
1-2. Mode bit
mode bit์ด๋?
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์๋ชป๋ ์ํ์ผ๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋ฐ ์ด์ ์ฒด์ ์ ํผํด๊ฐ ๊ฐ์ง ์๋๋ก ํ๊ธฐ ์ํ ๋ณดํธ ์ฅ์น์ด๋ค.
2๊ฐ์ง ๋ชจ๋์ operation์ ์ง์ํ๋ค.
- 1 ์ฌ์ฉ์ ๋ชจ๋: ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์ํ, ์์ ํ ๊ธฐ๊ณ์ด๋ง ์ํ
- 0 ๋ชจ๋ํฐ ๋ชจ๋(=์ปค๋ ๋ชจ๋, ์์คํ ๋ชจ๋): OS ์ฝ๋ ์ํ(OS๊ฐ CPU๋ฅผ ์คํ ์ค์ผ ๋), CPU๊ฐ ์๋ฌด๊ฑฐ๋ ํด๋ ์๊ด X
๋ณด์์ ํด์น ์ ์๋ ์ค์ํ ๋ช ๋ น์ด๋ ๋ชจ๋ํฐ ๋ชจ๋์์๋ง ์ํ ๊ฐ๋ฅํ 'ํน๊ถ๋ช ๋ น'์ผ๋ก ๊ท์ ํ๋ค.
๋ชจ๋ I/O(์ ์ถ๋ ฅ) ๋ช ๋ น์ ํน๊ถ ๋ช ๋ น์ด๋ค.
- ์๋ ๋ฐฉ์
Interrupt๋ Exception ๋ฐ์ ์ mode bit์ 0์ผ๋ก ๋ฐ๊พผ๋ค. ์ฆ CPU๊ฐ ์ด์์ฒด์ ๋ก ๋์ด๊ฐ๋ค. ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์๊ฒ CPU๋ฅผ ๋๊ธฐ๊ธฐ ์ ์ mode bit์ 1๋ก ๋ฐ๊พผ๋ค.
1-3. Timer
timer interrupt: ์ ํด์ง ์๊ฐ์ด ํ๋ฅธ ๋ค ์ด์์ฒด์ ์๊ฒ ์ ์ด๊ถ์ด ๋์ด๊ฐ๋๋ก interrupt๋ฅผ ๋ฐ์์ํจ๋ค.
OS๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ A์๊ฒ CPU๋ฅผ ๋๊ธธ ๋ ํ์ด๋จธ ์๊ฐ์ ์ธํ ํด์ ๋๊ฒจ์ค๋ค.
ํ์ด๋จธ๋ ๋งค ํด๋ญ ํฑ ๋๋ง๋ค 1์ฉ ๊ฐ์ํ๊ณ ํ์ด๋จธ ๊ฐ์ด 0์ด ๋๋ฉด ํ์ด๋จธ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ค.
CPU๋ฅผ ํน์ ํ๋ก๊ทธ๋จ์ด ๋ ์ ํ๋ ๊ฒ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ค. (ex, ๋ฌดํ ๋ฃจํ)
ํ์ด๋จธ๋ time sharing์ ๊ตฌํํ๊ธฐ ์ํด์๋ ๋๋ฆฌ ์ด์ฉํ๋ค.
ํ์ด๋จธ๋ ํ์ฌ ์๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ์ฌ์ฉ๋๋ค.
1-4. Device Controller
- I/O device controller
- ํด๋น I/O ์ฅ์น ์ ํ์ ๊ด๋ฆฌํ๋ ์ผ์ข ์ ์์ CPU (HW)
- ์ ์ด ์ ๋ณด๋ฅผ ์ํด controller register, status register๋ฅผ ๊ฐ์ง
- local buffer๋ฅผ ๊ฐ์ง (์ผ์ข ์ data register)
- I/O๋ ์ค์ device์ local buffer ์ฌ์ด์์ ์ผ์ด๋จ. CPU๊ฐ ์ง์ I/O ์์ ์ ํ์ง ์์.
- Device controller๋ I/O๊ฐ ๋๋ฌ์ ๊ฒฝ์ฐ interrupt๋ก CPU์ ๊ทธ ์ฌ์ค์ ์๋ฆผ
์ถ๊ฐ์ ์ผ๋ก!
device driver (์ฅ์น ๊ตฌ๋๊ธฐ, SW ํ์จ์ด) : OS ์ฝ๋ ์ค ๊ฐ ์ฅ์น๋ณ ์ฒ๋ฆฌ๋ฃจํด
device controller (์ฅ์น ์ ์ด๊ธฐ, HW) : ๊ฐ ์ฅ์น๋ฅผ ํต์ ํ๋ ์ผ์ข ์ ์์ CPU
1-5. ์ ์ถ๋ ฅ(I/O)์ ์ํ
๋ชจ๋ ์ ์ถ๋ ฅ ๋ช ๋ น์ ํน๊ถ ๋ช ๋ น์ด๋ค.
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ I/O๋ฅผ ํ๋๊ฐ?
- ์์คํ
์ฝ(system call)
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ์๊ฒ I/O ์์ฒญ
- trap์ ์ฌ์ฉํ์ฌ ์ธํฐ๋ฝํธ ๋ฒกํฐ์ ํน์ ์์น๋ก ์ด๋
- ์ ์ด๊ถ์ด ์ธํฐ๋ฝํธ ๋ฒกํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ผ๋ก ์ด๋
- ์ฌ๋ฐ๋ฅธ I/O ์์ฒญ์ธ์ง ํ์ธ ํ I/O ์ํ
- I/O ์๋ฃ ์ ์ ์ด๊ถ์ ์์คํ ์ฝ ๋ค์ ๋ช ๋ น์ผ๋ก ์ฎ๊น
1-6. ์ธํฐ๋ฝํธ (Interrupt)
์์คํ ์ฝ (System Call)
๋๊ธฐ์ ์ ์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ
- ๋๊ธฐ์ ์
์ถ๋ ฅ
- I/O ์์ฒญ ํ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋ ํ์์ผ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋์ด๊ฐ
- ๊ตฌํ ๋ฐฉ๋ฒ 1
- I/O๊ฐ ๋๋ ๋๊น์ง CPU๋ฅผ ๋ญ๋น์ํด
- ๋งค์์ ํ๋์ I/O๋ง ์ผ์ด๋ ์ ์์.
- ๊ตฌํ ๋ฐฉ๋ฒ 2
- I/O๊ฐ ์๋ฃ๋ ๋๊น์ง ํด๋น ํ๋ก๊ทธ๋จ์๊ฒ์ CPU๋ฅผ ๋นผ์์
- I/O ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ๊ทธ ํ๋ก๊ทธ๋จ์ ์ค ์ธ์
- ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ๋ CPU๋ฅผ ์ค
- ๋น๋๊ธฐ์ ์
์ถ๋ ฅ
- I/O๊ฐ ์์๋ ํ ์ ์ถ๋ ฅ ์์ ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋์ด๊ฐ
- ๋ฐ๋ผ์, ๋๊ธฐ์๋ณด๋ค ์๊ฐ์ด ์ ๊ฒ ๊ฑธ๋ฆผ
๋ ๊ฒฝ์ฐ ๋ชจ๋ I/O์ ์๋ฃ๋ ์ธํฐ๋ฝํธ๋ก ์๋ ค์ค๋ค.
1-7. DMA (Direct Memory Access)
- ๋น ๋ฅธ ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ๊น์ด ์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ
- CPU์ ์ค์ฌ ์์ด device controller๊ฐ device์ buffer storage์ ๋ด์ฉ์ ๋ฉ๋ชจ๋ฆฌ์ block ๋จ์๋ก ์ง์ ์ ์ก
- ๋ฐ์ดํธ ๋จ์๊ฐ ์๋๋ผ block ๋จ์๋ก ์ธํฐ๋ฝํธ ๋ฐ์์ํด
- ๋ฑ์ฅ ๋ฐฐ๊ฒฝ: ์ฌ์ง์ ์ฒซ๋ฒ์งธ ๋ชจ๋ธ์ ๋ฉ๋ชจ๋ฆฌ(cpu์ ์์ ๊ณต๊ฐ)์ ์ ๊ทผํ ์ ์๋ ์ฅ์น๋ CPU ๋ฐ์ ์๋ค. ๋ ์์ธํ ์๋ฅผ ๋ค๋ฉด, disk controller๊ฐ ํ์ผ ์ฝ๋ ์์ ์ ๋๋๋ค๊ณ ํด์ disk controller๊ฐ ์ง์ memory์ ์ฎ๊ฒจ๋์ง ๋ชปํ๋ค. ๊ทธ๋์ cpu์๊ฒ interrupt๋ฅผ ๋น๋ฒํ ๊ฑธ๊ฒ ๋๋๋ฐ, ๋น์ผ ์์์ธ CPU์๊ฒ ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ DMA๊ฐ ๋์๋ค. interrupt๋ ์์ฃผ ๊ฑธ๋ฆฌ๋ ์๋๋ก ๋ง์ด๋ค.
1-8. ์๋ก ๋ค๋ฅธ ์ ์ถ๋ ฅ ๊ธฐ๊ณ์ด
์ ์๋ I/O๋ฅผ ์ํํ๋ special instruction(๊ธฐ๊ณ์ด)๋ก I/O๋ฅผ ํจ
ํ์๋ memory mapped I/O์ ์ํด ์ฆ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ธฐ๊ณ์ด๋ก I/O๋ ํจ
1-9. ์ ์ฅ ์ฅ์น ๊ณ์ธต ๊ตฌ์กฐ
- ์์๋ก ๊ฐ์๋ก ์ฉ๋์ด ์๊ณ ๋น ๋ฅด๊ณ ๋น์ธ๋ค. ํ๋ฐ์ฑ์ด๋ค.
- ํ์๋ก ๊ฐ์๋ก ์ฉ๋์ด ํฌ์ง๋ง ๋๋ฆฌ๊ณ ์ ๋ ดํ๋ค. ๋นํ๋ฐ์ฑ์ด๋ค.
* executable: ์คํ ๊ฐ๋ฅํ
CPU๊ฐ ์ง์ ์ ๊ทผํ ์ ์๋ main memory
์ฌ๊ธฐ์์์ issue๋ caching์ด๋ค: copying information into faster storage system
2 ํ๋ก๊ทธ๋จ ์คํ
2-1. ํ๋ก๊ทธ๋จ์ ์คํ
1 ํ์ผ ์์คํ ์ ์๋ ์คํ ํ์ผ์ ์คํํ๋ฉด
2 ํ๋ก์ธ์ค๊ฐ ๋์ด(Physical memory์ ์ฌ๋ผ๊ฐ)
3 ๋ง์น๋ฉด ์ข ๋ฃ
๊ทผ๋ฐ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ(physical memory)์ ์ฌ๋ผ๊ฐ๊ธฐ ์ ์
๊ฐ ํ๋ก์ธ์ค๋ง๋ค 0๋ฒ์ง๋ถํฐ ์๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(virtual memory)์ฃผ์ ๊ณต๊ฐ์ด ๋จผ์ ์๊ธด ํ
์ฃผ์ ๋ณํ์ ํตํด ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ๊ฐ๋ค.
์์ ์ฌ์ง์ ๊ณ์ํด์ running ์ํ์ ์๋ ํ๋ก์ธ์ค์ ๋ชจ๋๊ฐ ๋ฐ๋๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
- user mode: mode bit 1
- kernel mode: mode bit 0
์์คํ ์ฝ: cpu ์ ์ด๊ถ์ด ์ด์์ฒด์ ์ ๋์ด๊ฐ์ ์ด์ ์ฒด์ ์ ์ฃผ์ ๊ณต๊ฐ์ ์๋ ์ฝ๋๊ฐ ์คํ
2-2. ์ปค๋ ์ฃผ์ ๊ณต๊ฐ์ ๋ด์ฉ
์ด์์ฒด์ ์ stack์ ํน์ดํ๋ค.
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ A ์คํ ์ค OS๋ฅผ ํธ์ถํ๋ฉด ์ปค๋ ์คํ์ A์ ์ปค๋ ์คํ์ ์ด๋ค. ์ฆ, ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ๋ณ๋๋ก ๋๊ณ ์๋ค.
2-3. ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ํจ์
- ์ฌ์ฉ์ ์ ์ ํจ์ ใ
ก> ํ๋ก์ธ์ค A์ ์ฃผ์ ๊ณต๊ฐ
- ์์ ์ ํ๋ก๊ทธ๋จ์์ ์ ์ํ ํจ์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ใ
ก> ํ๋ก์ธ์ค A์ ์ฃผ์ ๊ณต๊ฐ
- ์์ ์ ํ๋ก๊ทธ๋จ์์ ์ ์ํ์ง ์๊ณ ๊ฐ์ ธ๋ค ์ด ํจ์
- ์์ ์ ํ๋ก๊ทธ๋จ์ ์คํ ํ์ผ์ ํฌํจ๋์ด ์๋ค.
์ ๋ ํจ์์ ๊ฒฝ์ฐ, ๋ด ํ๋ก๊ทธ๋จ ์์์ program counter ๊ฐ๋ง ๋ฐ๊พธ์ด ๋ค๋ฅธ ์์น์ ๊ธฐ๊ณ์ด๋ฅผ ์คํํจ.
- ์ปค๋ ํจ์ ใ
ก> ์ปค๋ ์ฃผ์ ๊ณต๊ฐ
- ์ด์์ฒด์ ํ๋ก๊ทธ๋จ์ ํจ์
- ์ปค๋ ํจ์์ ํธ์ถ = ์์คํ ์ฝ
์ปค๋ ํจ์์ ๊ฒฝ์ฐ, ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ๋ก์ง๋ฌ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์์ญ์ผ๋ก ์์ ํ ๋ฐ๋
interrupt line์ ์ธํ ํด์ CPU ์ ์ด๊ถ์ ์ด์ ์ฒด์ ์ ๋๊ธฐ๊ธฐ ๋๋ฌธ!
'OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
7์ฅ Deadlock (0) | 2021.06.19 |
---|---|
6์ฅ Process Synchronization (0) | 2021.06.19 |
5์ฅ CPU scheduling (0) | 2021.06.18 |
4์ฅ Process Management (0) | 2021.06.18 |
3์ฅ Process (0) | 2021.06.18 |
1์ฅ Introduction to Operating System (0) | 2021.06.18 |