[Linux] Virtual Device (๊ฐ์ ์ฅ์น)
Virtual Device
์ค์ ์์คํ
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก VM์์๋ ์ฑ๋ฅ, ๋ฉ๋ชจ๋ฆฌ, ์คํ ๋ฆฌ์ง, ๋คํธ์ํน ๋๋ ๊ทธ๋ํฝ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์์คํ
์ ์ ๊ณตํ๋ ํน์ ์ฅ์น๊ฐ ํ์ํ๋ค. ๋ฌผ๋ฆฌ์ ์์คํ
์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๋ชฉ์ ์ผ๋ก ํ๋์จ์ด ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋ VM์ ์ํํธ์จ์ด ๊ตฌํ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ฅ์น๋ผ๊ณ ํ๋ ์ด๋ฌํ ์ฅ์น์ ๋ํ ์ํํธ์จ์ด ์ถ์ํ๋ฅผ ํ๋ค.
๋ฆฌ๋
์ค์์ virtual device๋, ์ค์ ๋ก ์ฐ๊ฒฐ๋ ํ๋์จ์ด๊ฐ ์๋ ๋๋ฐ์ด์ค ํ์ผ์ ๋งํ๋ค.
virtual device๋ sw ํํ๋ก ์กด์ฌํ๋ hw์ธ ์ฒ(?)์ ํ๋ค. ๋ฐ๋ผ์ ์์คํ
์ผ๋ก ํ์ฌ๊ธ ํน์ hw๊ฐ ์กด์ฌํ๋ ๊ฒ์ผ๋ก ์ฐฉ๊ฐํ๊ฒ ํ๋ค.
๊ทธ๋ผ ์ด๋ฌํ virtual device๋ ์ ์กด์ฌํ๋?
๋ณดํต OS์์ ์๋ฌ๋ฅผ ๊ณ ์น๊ธฐ ์ํด ์ฌ์ฉ๋๋ค๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด external device๊ฐ ๋ชจ๋ํฐ๋ง ํ๋ค๊ณ ๊ฐ์ ํ๊ณ ๋ฒ๊ทธ๋ ๋ฐ์ด๋ฌ์ค๋ค์ ํ์งํ ์ ์๋ค.
https://www.techopedia.com/definition/12632/virtual-device#:~:text=A%20virtual%20device%2C%20in%20operating,exists%20only%20in%20software%20form.
์์
๊ฐ์ ์ฅ์น | ์ค๋ช |
/dev/null | ๋(null) ๋๋ฐ์ด์ค ์ด ๊ฐ์์ฅ์น๋ ์ฅ์น๋ก ๋ณด๋ด๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์ํด๋ฒ๋ฆด ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง. ์ด์ฅ์น์ ์ฐ๊ธฐ ์์ ์ ํ๋ฉด ์ธ์ ๋ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉฐ, ์ด ์ฅ์น๋ก๋ถํฐ ์ฝ๊ธฐ ์์ ์ ํ๋ฉด ์๋ฌด ๋ฐ์ดํฐ๋ ๋์ด์ค์ง ์๋๋ค. ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ์ ๋ฌด์ํจ์ผ๋ก์จ ํ๋ฉด์์ ์๋ฌด๋ฐ ํ ์คํธ๋ ํ์ํ์ง ์๊ฒ ํ ๋ ํนํ ์ ์ฉ. |
/dev/random | ๋์(random number) ๋ฐ์๊ธฐ |
/dev/urandom | ๋์ ํ๋ฆ์ ๋ฐ์์ํค๋ ์คํธ๋ฆผ. /dev/random์ด ์ง์ง ๋์๋ฅผ ๋ฐ์์ํค๋ ๋ฐ๋ฉด์ /dev/urandom์ ์์ฌ๋์(pseudorandom number)๋ฅผ ์ ๊ณตํ๋ค. ์ํธ๋กํผ ํ์ ์ฑ์ฐ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ด ์ฅ์น์ ์ฐ๊ธฐ ์์ ์ ํ ์๋ ์๋ค. ๋ฐ์๋๋ ๋ฐ์ดํฐ๋ ๋ฐ์ด๋๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ /dev/random๊ณผ /dev/urandom์ผ๋ก๋ถํฐ ์ค๋ ์ซ์๋ ์ฝ์ ํฐ๋ฏธ๋์ ํ์ํ ์ ์์! ์ด ์ฅ์น๋ค์ ๋๋ถ๋ถ ์ ๋ขฐ์ฑ ์๋ ๋์๋ฅผ ์์งํ๋ ค๋ ๊ฐ๋ฐ์์ ์ํด ์ฌ์ฉ. |
/dev/full | ์ด ๊ฐ์์ฅ์น๋ ํญ์ ๊ฝ์ฐฌ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ ์ด ์ฅ์น์ ์ฐ๊ธฐ๋ฅผ ํ๋ฉด ์๋ฌ๊ฐ ๋ฆฌํด ์ฝ๊ธฐ๋ฅผ ํ๋ฉด null ๋ฌธ์๊ฐ ๋ฌดํํ ๋ฆฌํด /dev/full ์ฅ์น์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋จธ์ ๊ด๋ฆฌ์์๊ฒ ์๋์ ์ธ ์๋ฌ๋ฅผ ์ ๋ฐํ๋ ์์ ์ ๊ณตํ๋ค. |
/dev/zero | null ๋๋ฐ์ด์ค์ ๋น์ทํจ. ์ฐ๊ธฐ๋ฅผ ํ์๋๋ ํญ์ ์ฑ๊ณต ์ฝ๊ธฐ๋ฅผ ํ์๋๋ null ๋ฌธ์๋ฅผ ๋ฌดํํ ์ถ๋ ฅ ์ด๊ธฐํ๋ ํน์ ํฌ๊ธฐ์ ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ ์ฅ ์ฅ์น๋ฅผ ํฌ๋งทํ๊ธฐ ์ํด ์ฐ๊ธฐ ์์ ์ ํ๋ ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ณต๊ธํ๋ ๊ฒฝ์ฐ ๋ฑ.. |
์ฐธ๊ณ ๋ก /dev/null์ ํ์ผ๋ก ์ด์ด์ ์ด ์ ์ด ์๋๋ฐ ๊ฑ๋ flush ๋๊ธฐ ์ ๊น์ง๋ ์ค๊ฐ ๋ฒํผ์ ๊ฐ์ด ๋จ์์๋ค. ์์ ์ฐ์๋ง์ ๋ฟ
!์ ์๋ ๊ฒ ๊ฐ๋ค.
(์๋๋ /dev/null์ 1234๋ฅผ fprintf ํด์คฌ์ ๋์. ์์ง ๋ฒํผ๊ฐ flush๋์ง ์์์ ๋ด์ฉ์ด ๋จ์์์)
Reference
https://mungi.kr/430
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_virtualization/managing-virtual-devices_configuring-and-managing-virtualization