๋ณธ ๊ฒ์๊ธ์ PC๋ฒ์ ์ ์ต์ ํ ๋์ด ์์ต๋๋ค.
Operating Systems, Internals and Design Principles (9th Ed.), William Stallings, Pearson, 2017
1. I/O Divices
์ ์ถ๋ ฅ์ฅ์น๋ Controller๋ผ๋ ๋ถ๋ถ์ ๊ฐ์ง๋ค.
Controller๋ Controller Register, Status Register, Intenal Buffer ๋ก ๊ตฌ์ฑ๋๋ค.
1. Controller Register
์ฅ์น ๋๋ผ์ด๋ฒ๊ฐ 0 ๋๋ 1 ๋นํธ๋ฅผ ์ธํ ํจ์ผ๋ก์จ ์ฅ์น์ ๋ช ๋ น์ ๋ด๋ฆฐ๋ค.
2. Status Register
์ฅ์น ๋๋ผ์ด๋ฒ๊ฐ ํด๋น ์ฅ์น์ ํ์ฌ ์ํ๋ฅผ ์ฒดํฌํ๋ค.
3. Internal Buffer
์ ์ถ๋ ฅ์ด ์์๋ก ์ ์ฅ๋๋ ๊ณต๊ฐ์ด๋ค.
์ค์ํ ๊ฒ์ ์ด Controller ๋ถ๋ถ์ด ์ ์กฐ์ฌ, ์ฅ์น๋ง๋ค ๋ฌ๋ผ์ง ์ ์๋ค.
๊ทธ๋์ OS๊ฐ ์ด๋ฌํ ๋ชจ๋ ์ข ๋ฅ๋ฅผ ์ง์ ์ ์ผ๋ก ์ ์ดํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ ๊ธฐ์ค์ด ๋๋ Interface๋ฅผ ์ ์ํ๊ณ ์ ์กฐ์ฌ๋ ๊ธฐ์ค์ ๋ง๊ฒ ์ฅ์น ๋๋ผ์ด๋ฒ๋ฅผ ๊ตฌํํ๋ค.
์ปค๋ I/O ๋งค๋์ง๋จผํธ์ ์ญํ ์
Device Revervation, Device Scheduling, Error Handling, Buffering, Caching, Spooling
Buffering๊ณผ Spooling์ ์ฐจ์ด๋
Buffering์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํ์ผ์ ์์๋ก ์ ์ฅํ์ง๋ง Spooling์ ํ๋์ ํ์ผ์ ์์๋ก ์ ์ฅํ๋ค.
2. I/O Function
์ง์ ์ ์ธ ์ ์ด๋ ์ฅ์น ๋๋ผ์ด๋ฒ๊ฐ!
์ปค๋ I/O ์๋ธ์์คํ ์ ์ฅ์น์ ์ง์ ์ ์ผ๋ก ๊ด๋ จ๋์ง ์์ ์ ์ด
์ ์ถ๋ ฅ ์ ์ด ๋ฐฉ์์๋ 3๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
1) Polling
ํ๋ก๊ทธ๋จ์ ์ํด ์ ์ถ๋ ฅ์ด ์งํ๋๊ณ ์๋์ง๋ฅผ ๊ฐ์ํ๋ ๋ฐฉ๋ฒ.
Status, Control, Read, Write์ 4๊ฐ์ ๋ ์ง์คํฐ๊ฐ ์กด์ฌํ๋ค.
Instruction -> ์์คํ ์ฝ -> ์ปค๋ ๋ชจ๋๋ก ์ ํ -> I/O Management๋ฅผ ํตํด ์ฅ์น ๋๋ผ์ด๋ฒ๋ก ๋ช ๋ น์ด ์ ๋ฌ
-> ์ฅ์น ๋๋ผ์ด๋ฒ๊ฐ ์ฅ์น๋ฅผ ์ง์ ๊ด๋ฆฌ -> ์์ ์ด ๋๋ ๋๊น์ง Status๋ฅผ ๊ณ์ ๊ฒ์ฌํ๋ฉฐ Busy Waiting ์ํ๋ก ์กด์ฌ
์๋ I/O๊ฐ ๋ฐ์ํ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ๋๊ฒ ๋ฉํฐ ํ๋ก์ธ์ฑ์ด์๋๋ฐ
Polling ๋ฐฉ๋ฒ์์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํ์ด ์ผ์ด๋์ง ์๋๋ค. -> Busy Waiting
๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์ถ๋ ฅ์ด ๋น ๋ฅธ ๊ฒฝ์ฐ polling ๋ฐฉ๋ฒ์ด ํจ์จ์ ์ด๋ค.
์ ์ถ๋ ฅ์ด ๋๋ฆฐ ๊ฒฝ์ฐ CPU๊ฐ ๊ณ์ ํด๋น ํ๋ก์ธ์ค์ ํ ๋น๋์ด ์์ผ๋ฏ๋ก ๋นํจ์จ์ ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด Interrupt Driven
2) Interrupt Driven
3๋ฒ๊น์ง ๊ณผ์ ์ ํด๋ง๊ณผ ๊ฐ๋ค.
ํ๋ก์ธ์ค๊ฐ I/O๋ฅผ ์์ฒญํ๋ฉด ์์คํ ์ฝ์ ์ํด ์ปค๋ ๋ชจ๋๋ก ์ ํ์ด ๋๊ณ I/O Management์๊ฒ ๋ช ๋ น์ ์ ๋ฌํ๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ ์ถ๋ ฅ ๊ณผ์ ์ Process Management๋ฅผ ํธ์ถํ์ฌ I/O๋ฅผ ์์ฒญํ ํ๋ก์ธ์ค๋ฅผ Block ์ํ๋ก ์ ํํ๋ค.
์ดํ ๋ฌธ๋งฅ์ ํ์ผ๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํํ๊ณ , ์ด ๊ณผ์ ์์ I/O๊ฐ ์ข ๋ฃ๋๋ฉด
IRQ(Interrupt Request)๋ฅผ ์คํ ์ค์ธ ํ๋ก์ธ์ค์๊ฒ ์ ๋ฌํ๊ณ Interrupt๊ฐ ๋ฐ์ํด์ ์ปค๋๋ก ์ง์ ํ๊ฒ ๋๋ค.
์ดํ ISR(Interrupt Service Routine)์ ํตํด Block ์ํ์ธ ํ๋ก์ธ์ค๋ฅผ Ready ์ํ๋ก ๋ฐ๊ฟ์ค๋ค.
์ต์ข ์ ์ผ๋ก๋ ํ๋ก์ธ์ค ์ค์ผ์ฅด๋ฌ์ ์ํด ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ค.
I/O๊ฐ ์งํ๋๊ณ ์๋ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์์ผ๋ฏ๋ก CPU๋ฅผ ํจ์จ์ ์ผ๋ก ์ด์ฉํ ์ ์๋ค.
ํ์ง๋ง ์ฅ์น๊ฐ ๋น ๋ฅธ ๊ฒฝ์ฐ ๋นํจ์จ์ . ์ด๋์ ๋ ์๋ ์ํ๊ฐ ๋๋ฒ๋ฆฐ๋ค.
3) DMA (Direct Memory Access)
CPU์ ํจ์จ์ ์ธ ์ด์ฉ์ ์ํด I/O ๊ด๋ฆฌ๋ฅผ ๋ค๋ฅธ ์น๊ตฌํํ ๋๊ธฐ๋ ๋ฐฉ๋ฒ (์์๊ณผ ๋๋ง ๊ด๋ฆฌํ๋ค.)
๊ธฐ์กด ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ -> CPU -> ์ถ๋ ฅ์ฅ์น, ์ ๋ ฅ์ฅ์น -> CPU -> ๋ฉ๋ชจ๋ฆฌ ์ด๋ฐ ๋ฐฉ์์ด์๋๋ฐ
ํ์ผ์ ํฌ๊ธฐ๊ฐ ํฐ ๊ฒฝ์ฐ CPU ์๋ชจ๊ฐ ํฌ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ์๋ก์ด ๋ฐฉ๋ฒ.
I/O๋ง์ ์ํ ์๋ก์ด CPU(?)๋ฅผ ๋ง๋ค์.
I/O์ ๊ดํ ์ฌํญ์ ์ ์ ์ผ๋ก ๋งก๊ธฐ๋ฏ๋ก CPU ์ ์ฅ์์ ๋ถ๋ด ๋์ด๋ด๊ณ ๊ฐ๊ฟ.
DMA์ ์ ์ฅ๋์ด ์๋ ์ ๋ณด๋
1. Data Count : ๋ฐ์ดํฐ์ ๊ฐ์ (๋ช ๋ฐ์ดํธ๋ฅผ ์์ ํ ๊ฑฐ๋)
2. Data Register : ๋ฐ์ดํฐ์ ์์ ์ ์ฅ์
3. Address Register : ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ์ ์ฅ๋์ด ์๋
4. Controller Logic : I/O๊ฐ ์ข ๋ฃ๋์ ๋ CPU์๊ฒ ์๋ฆฌ๊ธฐ ์ํ Interrupt์ Read๋ฅผ ํ ๊ฑด์ง Write๋ฅผ ํ ๊ฑด์ง
Programmed I/O (Polling) : ๋ฉ๋ชจ๋ฆฌ <-> ํ๋ก์ธ์ <-> I/O & Interrupt ์ฌ์ฉ X
Interrupt Driven : ๋ฉ๋ชจ๋ฆฌ <-> ํ๋ก์ธ์ <-> I/O & Interrupt ์ฌ์ฉ
DMA : ๋ฉ๋ชจ๋ฆฌ <-> I/O & Interrupt ์ฌ์ฉ
4. Interrupt
์ปค๋์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ธํฐ๋ฝํธ, ํธ๋ฉ, ์์คํ ์ฝ์ด ์๋ค.
1) Interrupt
๋๋ฐ์ด์ค๊ฐ ๊ต์ฅํ ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ฅ์น์์ Interrupt๊ฐ ๋ฐ์ํ๋์ง CPU์์ ๋ชจ๋ ๊ด๋ฆฌํ๊ธฐ๋ ์ด๋ ต๋ค.
์ค๊ฐ์ ๋ค๋ฅธ ์ฅ์น๋ฅผ ํตํด ๊ด๋ฆฌํ๋๋ฐ ์ด๊ฒ์ด PIC (Programmble Interrupt Controller)
๋๋ฐ์ด์ค -> PIC -> CPU
PIC์์๋ Interrupt์ ์ข ๋ฅ๋ฅผ ํ๋จํ๋ค.
CPU๋ PIC์์ ์ ๋ฌ๋ฐ์ Interrupt ์ข ๋ฅ์ ๋ฐ๋ผ IDT(Interrupt Descriptor Table)์์
Interrupt์ ํด๋นํ๋ ISR(Interrupt Service Routine)์ ์คํํ๋ค.
์งํ ๊ณผ์
1. ์ ์ ๋ชจ๋์ธ ๊ฒฝ์ฐ ์ปค๋๋ชจ๋๋ก ์ ํ
2. ์ปค๋ ์คํ์ ์ ์ฅ
3. PIC๋ก Interrupt์ ์ฃผ์ฒด ํ๋จํ๊ณ IDT๋ฅผ ํตํด ISR ์คํ
Interrupt ๋์ค์ ์๋ก์ด Interrupt๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฏธ ์ปค๋ ๋ด๋ถ์ด๋ฏ๋ก Mode Change๋ ํ์์๋ค.
๊ธฐ์กด์ ์ฒ๋ฆฌํ๋ Interrupt๋ ๊ธํ ๋ถ๋ถ๋ง ์ฒ๋ฆฌํ๊ณ ์๋ก์ด Interrupt๋ฅผ ์ฒ๋ฆฌํ๋ค.
๋ ๊ธํ ๋ถ๋ถ์ ์ ์ ๋ชจ๋๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
2) Trap Handling
์ํํธ์จ์ด๊ฐ ๊ฑฐ๋ Interrupt, ์๋ฐํ ๋งํ๋ฉด CPU๊ฐ ์ค์ค๋ก์๊ฒ ๊ฑฐ๋ Interrupt
๋๋ฐ์ด์ค๊ฐ Interrupt๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ด ์๋๋ฏ๋ก PIC๊ฐ ํ์์๋ค.
์ข ๋ฅ์๋
Div_by_zero
Invalid machine code
Page fault -> ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ์ง ์๋๋ค.
Segmentation fault
Protection fault
๋๋จธ์ง๋ ํ๋ก๊ทธ๋จ ์ข ๋ฃ.
3) System Call
ํ๋ก์ธ์ค๊ฐ ์ปค๋ํํ ์์ฒญ
System Call์ด ๋ฐ์ํ๋ฉด Mode Change๋ฅผ ํตํด ์ปค๋ ๋ชจ๋๋ก ์ง์
-> Interrupt Handler -> IDT -> ISR -> SCT(System Call Table)
๋๋ ์์ฒด๋ ๋๋ฐ์ด์ค๊ฐ Interruptํ๋ ๊ฒ๊ณผ ๋์ผ.
๋ ๊ฐ์ ํ ์ด๋ธ์ ๊ฑฐ์น๋ ์ด์ ๋ IDT์ ๊ณต๊ฐ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์.
์ ๋ฆฌํ์๋ฉด IDT์์ ISR์ ์์ฑํ๊ณ ์์คํ ์ฝ ํ ์ด๋ธ์์ ์ด๋ฅผ ๋ค์ ์ฒ๋ฆฌ.
'๐ CS > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OS] 5. Concurrency : Deadlock and Starvation (0) | 2021.04.20 |
---|---|
[OS] 4. Concurrency : Mutual Exlusion and Synchronization (0) | 2021.04.19 |
[OS] 3. Threads (0) | 2021.04.19 |
[OS] 2. Process Description and Control (0) | 2021.04.19 |
[OS] 1. Operating System Overview (0) | 2021.04.19 |