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 ์ž…์žฅ์—์„  ์–ด๋–ค ํ•˜๋“œ์›จ์–ด๋“  ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด๋œ๋‹ค. ๋•Œ๋ฌธ์— ํŒŒ์ผ์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ›๋Š” ๋Œ€์ƒ์ด ๋””์Šคํฌ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ๊ฒƒ์ด๊ณ , ์†Œ์ผ“์ด๋ฉด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ์ฐจ์ด์ผ ๋ฟ.