I/O Hardware
์ด์์ฒด์ ๋ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก I/O ๋๋ฐ์ด์ค์๊ฒ ๋ช
๋ น์ ๋ด๋ฆฐ๋ค. ๋ด๋ถ์ ์ธ ์ํ์ I/O ๋๋ฐ์ด์ค๊ฐ ์์์ ํ๋ค.
=> ์๋ง์ ์ข
๋ฅ์ I/O ๋๋ฐ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํจ.
I/O ๋๋ฐ์ด์ค์ ์ปจํธ๋กค๋ฌ๋ ๋ ์ง์คํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ทธ ๋ ์ง์คํฐ์ ๋ช ๋ น์ ์จ์ฃผ๋ ๊ฒ์ผ๋ก ๋๋ฐ์ด์ค๋ฅผ ์ปจํธ๋กค ํ๋ค.
์ปจํธ๋กค๋ฌ์ ๋ ์ง์คํฐ์ ์ด๋ป๊ฒ ๊ฐ์ ์จ์ค๊น?
๋ฉ๋ชจ๋ฆฌ์ ํน์ ์ฃผ์๋ฅผ I/O ๋๋ฐ์ด์ค์ ๋ฒํผ์ ๋งคํ์ ํ๋ค๊ณ ํ๋ค.
์ด ์ฃผ์์๋ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์จ์ฃผ๋ฉด ๋งคํ์ด ๋์ด ๋๋ฐ์ด์ค์ ๋ฒํผ์ ๋ค์ด๊ฐ๋ค๊ณ ํ๋ค.
=> Memory Mapped I/O
์ด๊ฒ๊ณผ ๋ณ๊ฐ๋ก CPU๊ฐ I/O ๋ช
๋ น์ ๋ณ๋๋ก ๊ฐ์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
I/O ๋๋ฐ์ด์ค์ ๋ช
๋ น์ ๋ด๋ฆด ๋ ์ด ๋ช
๋ น์ ์ฌ์ฉํ๋๋ก ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
I/O ํฌํธ๋ 4๊ฐ์ง์ ๋ ์ง์คํฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
Status Register
: ๋๋ฐ์ด์ค์ ์ํ๋ฅผ ๋ํ๋ด๋ ๋ ์ง์คํฐ์ด๋ค.
Control Register
: ์ปจํธ๋กค ๋ ์ง์คํฐ์ ๋ช ๋ น์ ์จ์ฃผ๋ฉด ๋ช ๋ น์ด ๋๋ฐ์ด์ค๋ก ์ ๋ฌ๋๋ค.
Data-in Register
: I/O ๋๋ฐ์ด์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ OS์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์์๋ก ์ ์ฅํ๋ ๋ ์ง์คํฐ
Data-out Register
: ๋ฐ๋๋ก OS๊ฐ I/O ๋๋ฐ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ Writeํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์จ์ฃผ๋ ๊ณต๊ฐ
Polling
status register์ ๊ฐ์ ๋ณด๊ณ busy๋ฉด ๋ช
๋ น์ ๋ด๋ฆฌ๋ฉด ์ ๋๊ณ ready๋ฉด ๋ช
๋ น์ ๋ด๋ ค์ผ ํ๋ค.
๋ช
๋ น์ ๋ด๋ฆด ๋ I/O ๋๋ฐ์ด์ค์ ์ํ๋ฅผ ์ฒดํฌํด์ผ ํ๋๋ฐ, ์ฒดํฌํ๋ ๋ฐฉ์์ ๋ํดํธ๊ฐ Polling์ด๋ค.
=> Polling์ Busy waiting์ ํ๋ ๋ฐฉ์
while loop๋ฅผ ๋๋ฉด์ I/O ๋๋ฐ์ด์ค๊ฐ ready ์ํ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
=> CPU ์์์ ๋ญ๋น
๊ทธ๋ฌ๋ฉด ์ฐ๋ฉด ์ ๋ ๊น? ๋งค์ฐ ๋น ๋ฅธ I/O ๋๋ฐ์ด์ค๋ผ๋ฉด ์กฐ๊ธ๋ง ๊ธฐ๋ค๋ฆฌ๋ฉด ๋๋๊น Polling๋ ๊ด์ฐฎ์ ๋ฐฉ๋ฒ์ผ ์ ์๋ค.
Interrupt
Polling ๋ฐฉ์์ด Busy waiting์ ํ๋ ๋ฐฉ์์ด๋ผ๋ฉด, Interrupt๋ I/O ๋๋ฐ์ด์ค๊ฐ Ready๊ฐ ์ํ๊ฐ ๋๋ฉด ์ธํฐ๋ฝํธ๋ฅผ ๋ณด๋ด์ ์๋ ค์ฃผ์๋ ๋ฐฉ์์ด๋ค.
I/O ์ฅ์น๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค๋ฅธ ์ผ์ ํ๊ณ ์์ ์ ์์ผ๋ฏ๋ก ํจ์จ์ ์ผ ์ ์๋ค.
interrupt์ ์ข
๋ฅ์๋ 2๊ฐ์ง๊ฐ ์๋ค.
Interrupt์ disable ๊ฐ๋ฅ ์ฌ๋ถ์ ๋ฐ๋ผ Nonmaskable, Maskable ์ธํฐ๋ฝํธ๋ก ๋๋๋ค.
Nonmaskable : Disable ์ํฌ ์ ์๋ ์ค์ํ ์ธํฐ๋ฝํธ
Maskable : Disable ์ํฌ ์ ์๋ ์ธํฐ๋ฝํธ
์ธํฐ๋ฝํธ๊ฐ ์์ ๋, ์ธํฐ๋ฝํธ ์ข
๋ฅ์ ๋ง๋ ํธ๋ค๋ฌ๋ฅผ ํธ์ถํด์ผ ํ๋ค.
ํด๋น ์ธํฐ๋ฝํธ์ ํด๋นํ๋ ํธ๋ค๋ฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ช ๋ฒ์ง์ ์๋์ง ์์์ผ ํ๋๋ฐ ๊ทธ๋ฌํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ด ๋ฐ๋ก Interrupt vector์ด๋ค.
A kernel I/O Structure
์๋ง์ I/O ๋๋ฐ์ด์ค๋ค์ OS๊ฐ ์ด๋ป๊ฒ ์ธ์งํ๊ณ ๊ตฌ๋์ํฌ๊น?
๋ ํฐ ๋ฌธ์ ๋ ํ์กดํ๋ ๋๋ฐ์ด์ค๋ ์ด๋ป๊ฒ๋ ์ปค๋์ด ์ธ์งํด์ ์ง์ํ ์ ์๋ค๊ณ ์น๋๋ผ๋ ์์ผ๋ก ๋ง๋ค์ด์ง ์๋ก์ด ๋๋ฐ์ด์ค๋ ์ด๋ป๊ฒ OS๊ฐ ์ธ์์ ํ๊ฒ ๋ ๊น?
๊ณผ๊ฑฐ์ OS๊ฐ ๋ฏธ๋์ ๋๋ฐ์ด์ค๋ฅผ ์ง์?
Kernel I/O subsystem๊น์ง๋ OS๊ฐ ๋ํดํธ๋ก ์ ๊ณต์ ํ๊ฒ ๋ค.
๊ฐ ๋๋ฐ์ด์ค๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ปจํธ๋กค๋ฌ์ ๊ตฌ์ฒด์ ์ธ ๋ช
๋ น์ ๋ด๋ฆฌ๋ ๊ฒ์ ์ปจํธ๋กค๋ฌ๊ฐ ์ง์ํ๋ ๋ช
๋ น์ผ๋ก ๋ด๋ ค์ผ ํ๋๋ฐ, ๊ทธ๊ฒ์ ๋๋ฐ์ด์ค๋ฅผ ๋ง๋ ์ฌ๋๋ค์ด ์ ํ๋ ๊ฒ์ด๋ค.
๋๋ฐ์ด์ค๋ฅผ ๋ง๋๋ ํ์ฌ๋ ๊ทธ ๋๋ฐ์ด์ค๋ฅผ ๊ตฌ๋ํ๊ธฐ ์ํ ์ํํธ์จ์ด๋ ๊ฐ์ด ๋ง๋ค์ด์ ์ ๊ณต์ ํด๋ผ.
๊ตฌ์ฒด์ ์ผ๋ก ํน์ ๋๋ฐ์ด์ค๋ฅผ ๊ตฌ๋ํ๋ ์ํํธ์จ์ด์ธ ๋๋ผ์ด๋ฒ๋ ๋๋ฐ์ด์ค ํ์ฌ์์ ์์์ ๋ง๋ค์ด์ผ ํ๋ค.
๋ณ๋๋ก ์ ๊ณตํ์ง ์์ผ๋ฉด ํ์ค ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํด์ ๊ตฌ๋ํด๋ ๋๋ ๊ฒ์ผ๋ก ์๊ฒ ๋ค๋ผ๋ ์ ์ฑ
Application I/O Interface
์ ํ๋ฆฌ์ผ์ด์
์ ์ง์ I/O ๋๋ฐ์ด์ค์ ์ ๊ทผํ ์๊ฐ ์๋ค.
=> OS์๊ฒ ๋์ ์์ฒญํ๋ค.
๊ทธ ์์ฒญํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก System call์ด์๋ค.
์์ฒญํ๋ ๋๋ฐ์ด์ค์ ์ข
๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ์์คํ
์ฝ์ ํธ์ถํด์ผ ํ๋ ๊ฒ์ด ์๋์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์
์ฅ์์ ์ด ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ ๊ธฐ๊ณ์ ํ๋ ๋์คํฌ๊ฐ ์ฐ๊ฒฐ๋์ด ์์์ง SSD๊ฐ ์ฐ๊ฒฐ๋์ด ์์์ง ์ ์ ์๋ค.
=> ์ผ๋ฐํ๋ ์์คํ
์ฝ์ ์ ๊ณตํ๋ค.
์ผ๋ฐํ๋ ์์คํ
์ฝ์ ํธ์ถํ๋ฉด ๊ฐ ๋๋ฐ์ด์ค ๋ง๋ค์ ์ฐจ์ด๋ ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ๊ฐ ์์์ ์ฒ๋ฆฌํด์ค๋ค.
ํ์ง๋ง ๋ช ํํ ์ฐจ์ด๊ฐ ์์ ๋๋ ๋ค๋ฅธ ์์คํ ์ฝ์ ํธ์ถํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด Character-stream๊ณผ Block์ด ์๋ค.
Character-stream ๋๋ฐ์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ๋ธ๋ญ ๋จ์๊ฐ ์๋ stream์ ํํ๋ก ์ญ ํ๋ฌ๊ฐ๋ ๋๋ฐ์ด์ค์ด๋ค.
๋ํ์ ์ผ๋ก ์ค๋์ค ์นด๋๊ฐ ์๋ค. ์์
๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ ์ญ ํ๋ฌ๊ฐ๋ค.
๋๋ ํ๋ฆฐํธ์ ๊ฒฝ์ฐ ์ถ๋ ฅํ ๋ฐ์ดํฐ๊ฐ ์ญ ํ๋ฌ๊ฐ๋ค.
Character-stream ๋๋ฐ์ด์ค์ block ๋๋ฐ์ด์ค๊ฐ์ ์ฐจ์ด๋ฅผ I/O systemcall์์ ๊ตฌ๋ถํด์ ์ ๊ณตํ๋ค.
์ฌ์ฉ์์ ์ํด ์๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋๋ฐ์ด์ค์ ๋ํด์๋ ์บ๋ฆญํฐ ๋๋ฐ์ด์ค๋ฅผ ๋ง์ด ์ฐ๋๋ผ.
๋ธ๋ญ ๋๋ฐ์ด์ค์ ๋ํ ์ ๊ทผ์ ์ผ๋ฐ์ ์ผ๋ก ํ์ผ ์์คํ ์ ํตํด ์ ๊ทผ๋๋ค.
์บ๋ฆญํฐ ๋๋ฐ์ด์ค๋ฅผ ์ํด ์ ๊ณต๋๋ ์์คํ ์ฝ์๋ get, put ๋ฑ์ด ์๋ค.
get์ read์ ๋์๋๊ณ , put์ write์ ๋์๋๋๋ฐ, ์บ๋ฆญํฐ ๋จ์๋ก I/O๊ฐ ์ผ์ด๋๋ค.
Blocking and Nonblocking I/O
Blocking I/O
I/O๋ฅผ ์์ฒญํ๊ณ I/O๊ฐ ๋๋ ๋๊น์ง suspend๊ฐ ๋ ์ฑ๋ก ๊ธฐ๋ค๋ฆฐ๋ค
Non-blocking I/O
I/O๋ฅผ ์์ฒญํ๊ณ ๋๋์ง ์์๋ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฆฌํดํ๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ง ์๋ ๊ฒ์ ์๋๊ณ , ๋ฆฌํดํ๋ ์์ ์ ์งํ๋ I/O ๋งํผ๋ง ๊ฐ์ง๊ณ ๋ฆฌํดํ๋ค.
Asynchronous I/O
ํ๋ก์ธ์ค๊ฐ I/O๋ฅผ ์์ผ๋๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ง ์๊ณ ๋ฐ๋ก ๋ค๋ฅธ ์ผ์ ํ๋ค.
I/O๊ฐ ๋๋ฌ๋ค๋ ๊ฒ์ ์ธํฐ๋ฝํธ๋ฅผ ํตํด ์ ์ ์๋ค.
Kernel I/O Subsystem
Kernel I/O Subsystem์ด๋ ์ปค๋์ด ๊ฐ์ง๋ I/O๋ฅผ ์ง์ํ๋ ๊ธฐ๋ฅ๋ค์ด๋ค
=> I/O์ ์ฑ๋ฅ ํฅ์์ ์ํ ๊ธฐ๋ฅ๋ค์ด ๋๋ถ๋ถ
Scheduling
I/O ์์ฒญ๋ค์ ์ด๋ ์์๋๋ก ์ฒ๋ฆฌํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์
Buffering
๋ ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ์ฃผ์ฒด ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ transferํ๋ ๊ณผ์ ์์ ์ค๊ฐ ๋จ๊ณ๋ก ์์ ์ ์ฅํ๋ ์ ์ฅ ์ฅ์น.
์๋ฅผ ๋ค์ด ๋คํธ์ํฌ ์นด๋์ ํ๋ ๋์คํฌ ์ฌ์ด์ ๋คํธ์ํฌ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ ๋์คํฌ์ ์ ์ฅํ๋ ค๊ณ ํ๋ค๊ณ ํ์.
๋คํธ์ํฌ ์นด๋์์ ์ ์กํ๋ ๋ฐ์ดํฐ์ ์๋๋ฅผ ํ๋ ๋์คํฌ๊ฐ ๋ฐ์๋ค์ด์ง ๋ชป ํ๋ค.
๋ํ transfer๋๋ ๋ฐ์ดํฐ์ ์ฌ์ด์ฆ ์ฌ์ด์๋ ์ฐจ์ด๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋คํธ์ํฌ ์นด๋๋ ํจํท ๋จ์๋ก ์ ์กํ๊ณ ํ๋ ๋์คํฌ๋ ๋ธ๋ญ ๋จ์๋ก ์ ์กํ๋ค.
=> ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ๋ฒํผ๋ฅผ ๋ฌ์ ๊ทธ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ๋ค.
Copy semantics๋ผ๋ ์์น์ ์งํค๊ธฐ ์ํด์, I/O๋ ํ๋ก์ธ์ค์ address space์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ฐ๋ ๊ฒ์ด ์๋๋ผ
๋ฒํผ์ ์๋ ๊ฐ์ I/O ๋๋ฐ์ด์ค์ ๋ด๋ฆฌ๊ฒ ๋๋ค.
=> ์ด๋ฌํ ์ฉ๋๋ก๋ ๋ฒํผ๊ฐ ์ฌ์ฉ๋๋ค.
Copy semantics๋?
์ ํ๋ฆฌ์ผ์ด์
์ด ์ด๋ค ๋ฐ์ดํฐ ์์ดํ
A์๋ค๊ฐ 1์ ์ผ๋ค.
์ด๊ฑด ์ ํ๋ฆฌ์ผ์ด์
์ด ๊ฐ์ง๋ address space๋ด์ A์ ํด๋นํ๋ ์์น์ 1์ด ์จ์ง ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ ํ๋ฆฌ์ผ์ด์
์ด A๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ ๋์คํฌ์ ์จ๋ผ ๋ผ๋ ๋ช
๋ น์ ๋ด๋ ธ๋ค.
๊ทธ๋ฐ๋ฐ I/O๋ฅผ ํ๊ธฐ ์ํด์ ์ด๋ค ์ผ์ด ๋ฒ์ด์ง๋๋ฉด, ์ง๊ธ ๋น์ฅ ํ๋ ๋์คํฌ์ ๋๋ฆฐ ์๋๋ฅผ ๊ฐ์ํด์ 1 ๋ฐ์ดํธ๋ฅผ ์ฐ๊ธฐ ์ํด ๋ฐ๋ก I/O๋ฅผ ๋ฐ์์ํค์ง ์๋๋ค.
์ค๊ฐ์ ๋ฒํผ๋ง์ ํด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋งํ๋ฉด ๋ชจ์์ ์ด๋ค.
์ด ๋ฐ์ดํฐ๊ฐ ํ๋ ๋์คํฌ๋ก ๋ด๋ ค๊ฐ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์
์์ A๋ฅผ 2๋ก ๋ฐ๊ฟ๋ฒ๋ ธ๋ค๋ฉด, ์ค์ I/O๊ฐ ๋ฐ์ํ๋ ์์ ์ 2๋ฅผ ์จ์ผ ํ ๊น 1์ ์จ์ผํ ๊น?
๋น์ฐํ I/O ๋ช
๋ น์ด ๋ด๋ ค์ง ์์ ์ ๋ฐ์ดํฐ์ธ 1์ ์ฐ๋ ๊ฒ์ด ๋ง๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? A ๊ฐ์ ์ด๋ฏธ 1์์ 2๋ก ๋ฐ๋์๋๋ฐ ์ด๋ป๊ฒ ์ด์ ๊ฐ์ ์ธ ์ ์์๊น?
=> ๋ฒํผ๊ฐ ์ด์ ๊ฐ์ ์ ์ฅํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
I/O๊ฐ ๋ฐ์ํ ๋๋ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ ๋์คํฌ์ ์ฐ๊ฒ ๋๋ค.
Caching
๋ฒํผ์ ์บ์๋ ์์ฐํ ์ฐจ์ด๊ฐ ์๋ค.
์บ์๋ ์๋ณธ ๋ฐ์ดํฐ์ ๋๊ฐ์ ๋ณต์ฌ๋ณธ์ด๊ณ , ๋ฒํผ๋ ์ด๋๊ฐ๋ก ๊ฐ์ผํ ๋ฐ์ดํฐ์ ์๋ณธ์ด๋ค.
Spooling
๋๋ฐ์ด์ค์ ๋ณด๋ด๋ output data๋ฅผ ์ค๊ฐ์ ์์๋ก ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ.
output ๋๋ฐ์ด์ค๊ฐ ๋ฌด์ฒ ๋๋ ค์, ์ ํ๋ฆฌ์ผ์ด์
์ด ์ด ๋๋ฐ์ด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง ๋ณด๋ด๋๋ฐ ์ด ๋๋ฐ์ด์ค๊ฐ ๋ฌด์ง ๋๋ ค์ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ง๋ฅ ๊ธฐ๋ค๋ฆฌ๊ธฐ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค.
=> ๋๋ฐ์ด์ค๋ก ๋ณด๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ Spool์์ญ์ ๋ค ๋ณด๋ด๋ฉด, Spool์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋๋ฐ์ด์ค๋ก ๋ณด๋ด๋ ๊ฒ์ OS ์ปค๋์ Spooler๊ฐ ๋ณด๋ด์ฃผ๊ฒ ๋ค.
๋ํ์ ์ผ๋ก Spooling์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋ ํ๋ฆฐํธ๊ฐ ์๋ค. ํ๋ฆฐํธ๋ ์ถ๋ ฅ์ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋๋ฆฐ ์ฅ์น
Performance
CPU์ ๋นํ๋ฉด I/O ๋๋ฐ์ด์ค๋ ๋งค์ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์์คํ
์ ์ฑ๋ฅ์ ๋ง์ ์ํฅ์ ๋ฏธ์น๋ค.
์ด๋ฌํ ๋๋ฆฐ ์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์ ๊ณต๋๋ค.
I/O ์ฑ๋ฅ ํฅ์์ ์ ์ ๊ณต๋๋ ์ธํฐ๋ฝํธ๋ ์์ฒญ ์ข์๋ณด์ด์ง๋ง, ์ฌ์ค์ ์ํํธ์จ์ด์ ์ผ๋ก ๋งค์ฐ ๋ณต์กํ ๋งค์ปค๋์ฆ์ด๋ค.
์ธํฐ๋ฝํธ๊ฐ ์ค๋ฉด context switch๊ฐ ๋ฐ์ํ๊ณ , ๊ทธ๋ก ์ธํด context switch ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
๋ํ ์ฑ๋ฅ ํฅ์์ ์ํด I/O๋ฅผ ์ํด ๋ฉ๋ชจ๋ฆฌ->๋ฉ๋ชจ๋ฆฌ๋ก์ copy๊ฐ ๋ง์ด ์ผ์ด๋๋ค.
=> ์๋ฅผ ๋ค์ด ์๊น ๋ณธ Buffering
I/O Performance Improvement
I/O ์ฑ๋ฅ ๊ฐ์ ์ ์ํ ๊ธฐ๋ฅ๋ค์ ๊ฐ๋ฐํ ๋ ์ฃผ์ํด์ผ ํ ์ฌํญ
- ์ปจํ ์คํธ ์ค์์น๋ฅผ ์ต์ํ ํด์ผ ํ๋ค.
- ๋ฐ์ดํฐ ์นดํผ๊ฐ ์ต๋ํ ์ ๊ฒ ์ผ์ด๋๋๋ก ํด์ผ ํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ง์ด ๊ฐ์ ธ์ค๋ ์ง ํด์ ์ธํฐ๋ฝ๋ฅผ ์ต๋ํ ์ค์ฌ๋ผ => ์ธํฐ๋ฝํธ๋ ์ค๋ฒํค๋๊ฐ ๊ฝค ํฐ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ
์ฌ๊ธฐ๊น์ง๊ฐ Operating System ๊ฐ์์์ ๋ฐฐ์ด ๋ชจ๋ ๋ด์ฉ๋ค์ด๋ค.
OS๋ ๊ฑฐ๋ํ ์ฌ๊ธฐ์ ์ ์งํฉ์ด๋ผ๊ณ ํ๋ค.
๊ณต๋ถํ๋ฉด์ ์ ๊ต์๋์ด OS๋ ๊ฑฐ๋ํ ์ฌ๊ธฐ์ ์ ์งํฉ์ด๋ผ๊ณ ํ์ จ๋์ง ๋ค์ ์๊ฐํด๋ณด์.
'HYU > ์ด์์ฒด์ (OS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
13. Mass Storage Management (0) | 2023.06.02 |
---|---|
12. File System (2) | 2023.05.27 |
11. Virtual Memory (2) (0) | 2023.05.19 |
7. Deadlocks (0) | 2023.05.18 |
10. Virtual Memory (1) (1) | 2023.05.12 |