ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toInfrastructure
์๋ฌธ ์ฝ๊ธฐ
Hardware TTY์ Software PTY๋ฅผ ํตํ Linux I/O ์ธํฐํ์ด์ค ๊ตฌ์กฐ ๋ถ์
TTY & PTY Explained ๐จ๏ธ๐ง
AI ์์ฝ
Context
๋ฌผ๋ฆฌ์ ๋จ๋ง๊ธฐ ๊ธฐ๋ฐ์ TTY ์ธํฐํ์ด์ค๊ฐ ํ๋์ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์๊ฒฉ ์ ์ ๋ฐ ์ํํธ์จ์ด ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ด์ ํ๊ฒฝ์ ์ง์ํ๋ ๋ฐ ํ๊ณ ๋ฐ์. ํ๋์จ์ด ์ข ์์ ์ธ I/O ๊ฒฝ๋ก๋ฅผ ์ํํธ์จ์ด ๊ณ์ธต์ผ๋ก ์ถ์ํํ์ฌ ์ ์ฐํ ์ธ์ ๊ด๋ฆฌ๊ฐ ํ์ํจ.
Technical Solution
- Character Device ํ์ผ ์์คํ ์ ํ์ฉํ OS-์ฌ์ฉ์ ๊ฐ ์ธํฐํ์ด์ค ํ์คํ
- Terminal Driver๋ฅผ ํตํ ์ฌ์ฉ์ ์ ๋ ฅ์ /dev/ttyX ๋ฒํผ๋ง ๋ฐ Bash Shell stdin ์ ๋ฌ ๊ตฌ์กฐ ์ค๊ณ
- ๋ฌผ๋ฆฌ ํ๋์จ์ด๊ฐ ์๋ ๊ฐ์ ํ๊ฒฝ์ ์ํด Master-Slave ์์ผ๋ก ๊ตฌ์ฑ๋ Pseudoterminal(PTY) ๋์
- sshd์ ๊ฐ์ ์๋ฒ ํ๋ก์ธ์ค๊ฐ PTY Master๋ฅผ ํตํด ๋คํธ์ํฌ ํจํท์ ์์ ํ๊ณ , PTY Slave๋ฅผ ํตํด Bash Shell๊ณผ ์๋ฐฉํฅ ํต์ ์ํ
- /dev/tty(์ ์ด ํฐ๋ฏธ๋)์ /dev/pts(๊ฐ์ ํฐ๋ฏธ๋)์ ๊ตฌ๋ถ์ผ๋ก ํ๋ก์ธ์ค๋ณ ์ถ๋ ฅ ๊ฒฝ๋ก ์ต์ ํ
- ํ๋์จ์ด ์ฐ๊ฒฐ ์ OS๊ฐ ์๋ ์์ฑํ๋ TTY์ ๋ฌ๋ฆฌ, ์ํํธ์จ์ด ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์์ฑ ๊ฐ๋ฅํ PTY ๊ตฌ์กฐ ์ฑํ
์ค์ฒ ํฌ์ธํธ
1. ์๊ฒฉ ์ ์ ์ธ์ ๋ถ์ ์ /dev/pts/X ๊ฒฝ๋ก๋ฅผ ํตํด Pseudoterminal ํ ๋น ์ฌ๋ถ ํ์ธ
2. ํฐ๋ฏธ๋ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณ ์ stdin/stdout์ด ์ฐ๊ฒฐ๋ ์ ์ด ํฐ๋ฏธ๋(/dev/tty) ์๋ณ ๋ก์ง ๊ฒํ
3. ํ๋์จ์ด ์ข ์์ ์ธํฐํ์ด์ค์ ์ํํธ์จ์ด ์ถ์ํ ๋ ์ด์ด(PTY)์ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ I/O ํ์ดํ๋ผ์ธ ์ค๊ณ