[OS] 2์ฅ ์ฃผ์ ๊ฐ๋ . Interrupt์ DMA ์ด๋?
๐ DMA(Direct Memory Access)
DMA์ ๋ํด ์๊ธฐ ์ ,
์ผ๋จ ์์น์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ CPU์ ์ํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ ์ฅ์น์ด๋ค.
๋ฐ๋ผ์, ์ฃผ๋ณ ์ฅ์น๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ค๋ฉด CPU์๊ฒ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์์ผ CPU๊ฐ ์ผ์ ๋ํํ๋ ์์ผ๋ก๋ง ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง, ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฐ์ฐ์ด CPU์ ์ํด์๋ง ์ด๋ฃจ์ด์ง๋ฉด ์ฃผ๋ณ ์ฅ์น๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ํ ๋๋ง๋ค ์ธํฐ๋ฝํธ๋ฅผ ํตํด CPU์ ์ ๋ฌด๊ฐ ๋ฐฉํด๋ฅผ ๋ฐ๊ฒ ๋ผ CPU ์ฌ์ฉ์ ํจ์จ์ฑ์ด ๋จ์ด์ง๋ค.
์ด๋ฌํ ๋นํจ์จ์ฑ์ ๊ทน๋ณตํ๊ธฐ ์ํด CPU ์ด์ธ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ฅ์น๋ฅผ ๋์๋๋ฐ,
์ด๊ฒ์ด ๋ฐ๋ก DMA(Direct Memoey Access)์ด๋ค.
DMA (Direct Memoey Access)
- ์ผ์ข ์ ์ปจํธ๋กค๋ฌ๋ก์, CPU๊ฐ ์ฃผ๋ณ ์ฅ์น๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์์ฒญ์ ์ํด ์์ฃผ interrupt ๋นํ๋ ๊ฒ์ ๋ง์์ค
- CPU ์ด์ธ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ฅ์น
- ๋ฐ์ดํธ๋น ํ๋์ interrupt๊ฐ ์๋, block๋น ํ๋์ interrupt
- ํจ์ฌ ํจ์จ์
๐ Interrupt
โ CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ์์ ๋, ์ ์ถ๋ ฅ ํ๋์จ์ด ๋ฑ์ ์ฅ์น์ ์์ธ์ํฉ์ด ๋ฐ์ํ์ฌ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ CPU์๊ฒ ์๋ ค ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ ๊ฒ
- ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ ์ผ์ด ๋ฐ์ํ์์ ๋, ๊ทธ๊ฒ์ ์ฒ๋ฆฌํ๊ณ ์๋ ๋์์ผ๋ก ๋์์ด
โ ๊ทธ๋์ Interrupt, ์ ํ๋๋ฐ?
โ ์ ์ถ๋ ฅ ์ฐ์ฐ์ด CPU ๋ช ๋ น ์ํ ์๋๋ณด๋ค ํ์ ํ ๋๋ฆฌ๊ธฐ ๋๋ฌธ!
์ค๋ ๊ฑธ๋ฆฌ๋ ์ ์ถ๋ ฅ ์ฐ์ฐ์ CPU๊ฐ ๋งค๋ฒ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ, ์ผ๋ง๋ ๋นํจ์จ์ ์ธ๊ฐ!
๋ฐ๋ผ์ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋๊น์ง CPU์๊ฒ ๋ค๋ฅธ ์ผ์ ์ํจ๋ค.
์
์ถ๋ ฅ ์ง์์ด ์์ ์ ์
๋ฌด๊ฐ ์๋ฃ๋๋ฉด ๊ทธ๋, CPU ์ ๋ฐฐ๋์๊ฒ ์์
์๋ฃ๋ฅผ ์๋ฆฌ๋ผ๊ณ ์ผ๋ฌ๋์ด CPU๊ฐ ๋ค์ ํด๋น ์์
์ ์ด์ด์ ํ ์ ์๊ฒ ํ๋ค. (CPU๋ ์ผํ๊ณ ์ผํ๊ณ ๋ ์ผํ๊ณ ,,)
์ฌ๊ธฐ์, ์ ์ถ๋ ฅ ์ง์์ด CPU ์ ๋ฐฐ๋์๊ฒ ์์ ์๋ฃ๋ฅผ ์๋ ค์ฃผ๋ ๊ฒ์ด ์ธํฐ๋ฝํธ์ด๋ค.
โ๏ธ Interrupt Mechanism
โช๏ธ Interrupt ๋ฐ์ ์,
- ํ์ฌ ๋ช ๋ น์ด ์๋ฃ๋ ํ, ํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์ค์ง (ํ์ฌ ํ๋ ์ผ๊น์ง๋ง ๋ง๋ฌด๋ฆฌํ๊ณ ์ง๊ธ์ ์ ๋ณด๋ค์ memory์ ์ ์ฅ)
- ์ค๋จ๋ ๋ช ๋ น์ ์ฃผ์๋ฅผ ์ ์ฅ
- IRQ ๋ฒํธ ๋ฐ Interrupt ๋ฒกํฐ ํ ์ด๋ธ์ ํตํด ISR(Interrupt Service Routine)์ ์ฃผ์๋ฅผ ๊ฐ์ ธ์ด
โช๏ธ Interrupt๊ฐ ์ฒ๋ฆฌ๋๋ ๋์,
- ๋ค์ด์ค๋ Interrupt๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ์ฌ Interrupt ์์ค์ ๋ฐฉ์งํจ
โช๏ธ ISR ์คํ ํ,
- ์ ์ฅ๋ ์ฃผ์๋ฅผ ํตํด ์ค๋จ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ๋์์ด
โ ์ ๊น, ์ฌ๊ธฐ์ ISR์ด๋?
ISR(Interrupt Service Routine)
- ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ(Interrupt Handler)๋ผ๊ณ ๋ ๋ถ๋ฆผ
- ์ธํฐ๋ฝํธ๊ฐ ์ ์๋๋ฉด ๊ฐ๊ฐ์ ์ธํฐ๋ฝํธ์ ๋์ํ์ฌ ํน์ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ๊ธฐ๊ณ์ด ์ฝ๋ ๋ฃจํด(์ปค๋์ด ์คํ)
ex) ํค๋ณด๋ ์ํ์ ๋๋ฌ ํค๋ณด๋ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด์ ํด๋นํ๋ ISR์ด ์คํ๋จ
โ๏ธ Interrupt Timeline
์ฐธ๊ณ ์ฌ์ดํธ
https://velog.io/@adam2/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8
[OS๊ธฐ์ด] ์ธํฐ๋ฝํธ ์ ๋๋ก ์ดํดํ๊ธฐ
์ฃผ๋ณ์ฅ์น์ ์ ์ถ๋ ฅ ์ฅ์น๋ CPU๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌ๋ฆฌ ์ธํฐ๋ฝํธ๋ผ๋ ๋ฉ์ปค๋์ฆ์ ํตํด ๊ด๋ฆฌ๋๋ค. ๊ทธ๋์ ์ธํฐ๋ฝํธ, ์ ํ๋๊ฑฐ์? ๊ทธ ์ด์ ๋ ์ ์ถ๋ ฅ ์ฐ์ฐ์ด CPU ๋ช ๋ น ์ํ์๋๋ณด๋ค ํ์ ํ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ด
velog.io
https://velog.io/@sparkbosing/DMA
DMA
์ด์ ์ฒด์ ์ ์ ๋ณด ๊ธฐ์ ์ ์๋ฆฌ๋ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.์์น์ ์ผ๋ก๋ ๋ฉ๋ชจ๋ฆฌ๋ CPU์ ์ํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ ์ฅ์น์ ๋๋ค. ๋ฐ๋ผ์, ์ฃผ๋ณ ์ฅ์น๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ CPU์๊ฒ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ
velog.io