OS

- Operating System, OS ๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋์จ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ํํธ์จ์ด์ธ Windows, Linux ์ ๋๋ก ์๋ ค์ ธ์๋ค.
- ์ปจํ
์ด๋๋ฅผ ์ ๋๋ก ์ดํดํ๊ธฐ ์ํด์ ์ปจํ
์ด๋ํ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ธ Linux ๋ฅผ ์ ๋๋ก ์ดํดํด์ผํ๊ณ , Linux ๋ฅผ ์ ๋๋ก ์ดํดํ๋ ค๋ฉด OS ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์์์ผ ํ๋ค.
- OS ์ ๊ตฌ์กฐ๋ ํฌ๊ฒ Kernel, Shell, System Program ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ์ด์์ฒด์ ์ 3์์๋ค.
Kernel
- Kernel ์ ์ค์ ๋ก ํ๋์จ์ด๋ฅผ ์ ์ดํ๋ค.
- CPU, ๋ฉ๋ชจ๋ฆฌ, ํ์ผ ์์คํ
, ๋คํธ์ํฌ ๋ฑ์ ๊ด๋ฆฌํ๋ค.
- ์ด์์ฒด์ ์ ํต์ฌ์ด๋ค.
- Application ์ system call ์ ํตํด Kernel ๊ณผ ์ํตํ๋ ๊ฒ.
- ๋ํ์ ์ผ๋ก Linux Kernel ์ด ์๋ค.
Shell
- ์ฐ๋ฆฌ๋ Shell ์ ํตํด Kernel ์ ๋ช
๋ น์ ๋ด๋ฆฐ๋ค. ์ฆ, ์ ์ ์ Kernel ์ฌ์ด์ ์ธํฐํ์ด์ค
- ์ฐ๋ฆฌ๊ฐ ls ๋ฅผ ์
๋ ฅํ๋ฉด Shell ์ Kernel ์ด ์ดํดํ ์ ์๋ ๋ช
๋ น์ผ๋ก ๋ณํํ๋ค. ์ผ์ข
์ ๋ช
๋ น์ด ์ธํฐํ๋ฆฌํฐ์ธ์
- ๋ํ์ ์ผ๋ก sh, bash, zsh ๋ฑ์ด ์๋ค.
- sh ์ ๊ฐ์ฅ ์ค๋๋ UNIX ์์คํ
์ ํ์ค Shell ๋ก ๊ณ๋ํ์ธ bash, zsh ๋ฑ์ด ์๋ค.
- bash ๋ Linux ์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ Shell ์ด๋ค.
/bin/bash
์ ์์นํ๋ค.
- zsh ์ macOS Catalina ์ดํ ์ ๊ณต๋๋ ๊ธฐ๋ณธ Shell ๋ก
oh-my-zsh
๋ฑ ํ๋ฌ๊ทธ์ธ์ ํตํด ์ฌ์ฉ์ ํธ์ ๊ธฐ๋ฅ์ด ๋ง์ด ์ ๊ณต๋๋ค. /bin/zsh
์ ์์นํ๋ค.
echo $SHELL
/bin/zsh
- ์ ๋ช
๋ น์ด๋ฅผ ํตํด ํ์ฌ ์ฌ์ฉ์ค์ธ Shell ์ ํ์ธํ ์ ์๋ค.
- CLI ๋๋ GUI ๋ก ์ ๊ณต๋๋๋ฐ, CLI ๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ Terminal ์ด๊ณ , GUI ๋ ์๋์ฐ ํ์๊ธฐ, macOS ์ Finder ๊ฐ ํด๋น๋๋ค. ํฌ๊ฒ๋ณด๋ฉด ๋ฐํํ๋ฉด๋ GUI Shell ์ด๋ค.
- Terminal ์ Shell ์ ์คํํ๋ ์
์ถ๋ ฅ ์ฐฝ์ด๋ค.
- ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ํค๋ณด๋๋ก ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ ์ธํฐํ์ด์ค
- ๋ํ์ ์ผ๋ก iTerm2 ๊ฐ ์๋ค.
System Program
- Kernel ๊ณผ Shell ์ ์ด์ฉํ ํ๋ก๊ทธ๋จ์ด๋ค. Application Software, ๊ทธ๋ฌ๋๊น ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋ System Software, ์ปดํจํฐ ์์คํ
์์ฒด๋ฅผ ์ ์ดํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ์ด๋ค.
- ๊ฐ๋ฐ์๋ค์ด ํํ ์ฌ์ฉํ๋ Java, Python ๋ฑ ๊ณ ์์ค ์ธ์ด๋ฅผ ์ฌ์ฉํด ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ํ๋์จ์ด๋ฅผ ์ง์ ์ ์ผ๋ก ์ ์ดํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋๋ค. System Software ๊ฐ ์ด ๊ฐ๊ทน์ ๋ฉ๊ฟ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
- System Software ๋ ์์ ์ด Kernel ์ ์ง์ ํธ์ถํ๊ณ ํ๋์จ์ด ์์์ ์กฐ์ํ๊ณ , ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ๊ทธ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
- System Call ์ Kernel ์ ๋ช
๋ น์ ์ ๋ฌํ๊ธฐ ์ํด ์๋ ์ธํฐํ์ด์ค๋ค.
- System Call ์ด ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ ์๋ฐํ ๋งํด, System Call ์ด ๊ณง ์ด์์ฒด์ ๋ค.
- System Programming ์ System Call ์ ๋ค๋ฃจ๋ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
- C ์์ read() ํจ์๋ ํ์ผ์ ์ฝ๋ System Call ์ด๋ค. read() ํจ์๊ฐ ์คํ๋๋ ์๊ฐ, Kernel ์ System Call ์ด ์ ๋ฌ๋๋ค. ์ด๋ ์คํ์ ์ ์ด๊ถ์ด User Mode ์์ Kernel Mode ๋ก ๋์ด๊ฐ๋ค.
- System Programming ํ๋ค๋ ๋ง์ ๊ณง C ๋ก ํ๋ก๊ทธ๋๋ฐ ํ๋ค๋ ๋ป
- ๋ณต์กํ System Call ์ ์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ํ ๋จ๊ณ ๋ ์ถ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํตํด System Call ์ ์ฌ์ฉํ ์ ์๋ค.
- Shell ์ ํตํด์๋ Kernel ์ System Call ์ ํธ์ถํ ์ ์๋ค.
- ls ๋ System Software ๋ค. Shell ์์ ls ๋ช
๋ น์ด๋ฅผ ํธ์ถํ๋ฉด ์์ ls ๋ผ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒ. ์คํ๋ ls ๋ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ System Call ์ ํธ์ถํด์ ๋๋ ํฐ๋ฆฌ ๋ด ํ์ผ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ์ถ๋ ฅํ๋ค.
- ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฐ๊ตญ์ ํ๋์จ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํ Kernel ์ ํธ์ถํ๊ธฐ ์ํ System Call ์ ์ฌ์ฉํ๊ธฐ ์ํ ์ผ์ ํ๊ณ ์๋ ์
์ด๊ณ , System Call ์ ์ง์ ํธ์ถํ๊ฑฐ๋ ํ ๋จ๊ณ ์ถ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ๋๋ ์์ ์ฌ์ฉํด ํ๋์จ์ด๋ฅผ ์ ์ดํ๋ ๊ฒ์ด๋ค.
Linux
- ๊ทธ๋ ๋ค๋ฉด Linux ๋ OS ์ธ๊ฐ?
- Linux ๋ ๋์ถฉ OS ๋ผ๊ณ ํ๋ค.
- ์ฌ์ค Linux ๋ฅผ ์ ํํ๊ฒ ์๊ธฐํ๋ฉด Kernel ์ด๋ค.
- OS ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์ ์์์ ์ค๋ช
ํ 3์์๊ฐ ๋ชจ๋ ๊ฐ์ถฐ์ ธ์ผํ๋ค.
- Linux ๋ Kernel ๋ง ๋ง๋ค์๊ธฐ ๋๋ฌธ์ OS ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ์ Shell ์ด๋ System Program ์ด ๋ถ์กฑํ ์ํ์ธ ๊ฒ.
- ๊ทธ๋์ Shell ๊ณผ System Program ์ Open Source ์์ ๊ฐ์ ธ์์ Linux OS ๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค.
- ์ด๋ฐ ํน์ฑ ๋๋ฌธ์ Kernel ์ Linux ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ Shell ๊ณผ System Program ์ ํฌํจํ์ฌ ๋ง๋ ๊ฒ๋ค์ด RedHat ์ CentOS, Fedora, Debian ์ Ubuntu, Amazon ์ Amazon Linux ๋ฑ์ Linux ๋ฐฐํฌํ์ด๋ค.
File System
- ์ปดํจํฐ๋ ์ ๋ณด๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด File System ์ ์ฌ์ฉํ๋ค.
- ๋ํ์ ์ผ๋ก Linux ๋ ext2/3/4 ๋ฑ์ File System ์ ์ฌ์ฉํ๋ค.
๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ํ์ผ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
- ํ์ผ ํฌ๊ธฐ
- ๋ง๋ค์ด์ง ์๊ฐ
- ๋ง์ง๋ง ์ ๊ทผ ์๊ฐ
- ๋ณ๊ฒฝ๋ ์๊ฐ
- ํ์ผ ์์ ์
- ํ์ผ ์ ๊ทผ ๋ชจ๋
- ์ ๋์ค ๊ณ์ด์์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ i-node ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋๋ฌธ์ ls -i ๋ช
๋ น์ด๋ฅผ ์ณค์ ๋ i-node ๋ฒํธ๊ฐ ํฌํจ๋๋ ๊ฒ
๋ชจ๋ ๊ฒ์ด ํ์ผ์ด๋ค
- ์ ๋์ค์์ ๋ชจ๋ ๊ฒ์ ํ์ผ๋ก ๊ด๋ฆฌํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ผ์ ํ๋ก๊ทธ๋จ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉํ๋๋ฐ, ์ ๋์ค์์ ์ ์ฅ ์ฅ์น, ์
์ถ๋ ฅ ์ฅ์น, ๋คํธ์ํฌ ํต์ ๋ ๋ชจ๋ ํ์ผ๋ก ๊ด๋ฆฌํ๋ค.
- ์ด์ ์์ผ.. ์์ผ์ด ๊ฒฐ๊ตญ ํ์ผ์ด๋ผ๋ ๋ง์ ์ ํํ๊ฒ ์ดํดํ๊ฒ ๋์๋ค. ๋น์์ ๋๊ฐ ์ดํดํ๊ธฐ๋ง ํ๋๋ฐ ํ์คํ CS ๊ฐ ์ค์ํ๋ค. ๊ฒฐ๊ตญ Kernel ์
์ฅ์์ ์ด๋ค ํ๋์จ์ด๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ธฐ๋ง ํ๋ฉด๋๋ค. ๋๋ฌธ์ ํ์ผ์ด๋ผ๋ ์ด๋ฆ์ ์ธํฐํ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๋์ง๋ ๊ฒ์ด๋ค. ๋ฐ๋ ๋์์ด ๋์คํฌ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๊ฒ์ด๊ณ , ์์ผ์ด๋ฉด ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ์ฐจ์ด์ผ ๋ฟ.