π λ€μ΄κ°λ©°
μ°λ¦¬κ° λ§€μΌ μ°λ μ»΄ν¨ν°λ μ€λ§νΈν°μ λ μ¬λ €λ³΄μ.
κ²μΌλ‘λ λΈλΌμ°μ λ λ©μ μ , κ²μ λ±μ μ±λ€λ§ 보μ΄κ² μ§λ§,
κ·Έ μμμλ λ§€μ° λ³΅μ‘ν λΆνλ€μ΄ λμμμ΄ λμκ°κ³ μλ€.
λνμ μΌλ‘λ CPU, RAM, SSD/HDD, GPU λ±μ΄ μλλ°,
μ΄ λͺ¨λ κ²μ μ¬μ€ λ¨μν νλμ¨μ΄ λ©μ΄λ¦¬μ λΆκ³Όνλ€.
μ¬λμ΄ μ΄ μ₯μΉλ€μ μ λλ‘ νμ©νλ €λ©΄, μ€λ μμλ³Ό μ΄μ체μ (OS)κ° λ°λμ νμνλ€.

π§© μ΄μ체μ λ
μ΄μ체μ (Operating System, OS)λ μ¬μ©μμ νλμ¨μ΄ μ¬μ΄λ₯Ό μ΄μ΄μ£Όλ λ€λ¦¬λΌκ³ μκ°νλ©΄ λλ€.
μ»΄ν¨ν° μμλ CPU, λ©λͺ¨λ¦¬, μ μ₯μ₯μΉ, λ€νΈμν¬ μΉ΄λ κ°μ λΆνλ€μ΄ μλλ°, μ΄ λΆνλ€μ 0κ³Ό 1λ§μ μμλ€μ μ μλ€.
κ·Έλ κΈ°μ μ¬λμ΄λ μΌλ° νλ‘κ·Έλ¨μ΄ μ΄λ¬ν λΆνλ€μ μ§μ λ€λ£¨λ©΄ μννκ³ λ³΅μ‘ν΄μ§λκΉ μ΄μ체μ κ° μ€κ°μμ μ΄λ₯Ό λμ μ²λ¦¬ν΄μ£Όλ κ²μ΄λ€.
μ΄μ체μ κ° νλ ν° μν μ μλμ κ°λ€.
- μμ κ΄λ¦¬
μ¬λ¬ νλ‘κ·Έλ¨μ΄ λμμ λμκ° λ CPU μκ°μ 곡μ νκ² λλ μ£Όκ³ , λ©λͺ¨λ¦¬λ₯Ό λΉλ €μ£Όκ±°λ λλ €λ°κ³ , λμ€ν¬ 곡κ°μ λ°°λΆν΄μ€λ€. - μ¬μ©μ νΈμ μ 곡(μΆμν)
"νμΌμ μ°κΈ°", "νλ©΄μ νμνκΈ°"μ²λΌ μ½κ³ μΌκ΄λ κΈ°λ₯λ§ μ 곡νκ³ , μ€μ νλμ¨μ΄ μ μ΄μ 볡μ‘ν¨μ κ°μΆλ€.
(μλ₯Ό λ€μ΄ μ°λ¦¬λ test.txt νμΌμ ν μ€νΈλ₯Ό μΈ μ μλ€λ κ²λ§ μλ©΄ λκ³ , SSDμ 물리 λΈλ‘ μ£Όμλ μ νμκ° μλ€.) - λ³΄νΈ λ° μμ μ± μ 곡
ν νλ‘κ·Έλ¨μ΄ λ€λ₯Έ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬λ₯Ό λ§κ°λ¨λ¦¬κ±°λ, κΆν μμ΄ μ€μν νμΌμ 건λ€μ§ λͺ» νλλ‘ λ³΄μ κ·μΉμ μ§μΌμ€λ€.
μ¦, μ½κ² λ§νμλ©΄ OSλ μ»΄ν¨ν°μ κ΄λ¦¬μ + λ²μκ° μν μ νλ€κ³ 보면 λλ€.
μ°λ¦¬κ° λ¨μν "μ΄ νμΌ μ΄κ³ μΆμ΄"λΌκ³ νλ©΄, OSκ° μμμ μ΄ λ§μ νλμ¨μ΄κ° μ΄ν΄ν μ μλ μ νΈλ‘ λ°κΏμ μ€ννκ³ , κ·Έ κ²°κ³Όλ₯Ό λ€μ μ¬μ©μμκ² λλ €μ£Όλ κ²μ΄λ€.
βοΈ μ»€λμ΄λ
컀λ(Kernel)μ μ΄μ체μ μ ν΅μ¬ μμ§μ΄λ€.
μ΄μ체μ μ ꡬμ±μμλ‘λ 컀λ λ§κ³ λ μ Έ(λͺ λ Ήμ΄ μ°½), κΈ°λ³Έ μ νΈλ¦¬ν°(νΈμ§κΈ° λ±), λΌμ΄λΈλ¬λ¦¬ κ°μ κ²λ€μ΄ μμ§λ§,
μ΄ μ€μμ νλμ¨μ΄λ₯Ό μ§μ λ§μ§κ³ μμμ μ§μ§λ‘ κ΄λ¦¬νλ λΆλΆμ 컀λμ΄λ€.
μ΄λ¬ν 컀λμ΄ κ΅¬μ²΄μ μΌλ‘ νλ μΌμ ν¬κ² λ€ κ°μ§λ‘ μ 리ν μ μλ€.
- νλ‘μΈμ€ κ΄λ¦¬
νλ‘κ·Έλ¨μ΄ μ νλλ©΄ νλ‘μΈμ€κ° λ§λ€μ΄μ§κ² λλλ°, 컀λμ μ΄λ€ νλ‘μΈμ€κ° μΈμ , μ΄λ CPU μ½μ΄μμ, μΌλ§λ μ€νλ μ§λ₯Ό μ ν΄μ€λ€. (μ€μΌμ€λ§) - λ©λͺ¨λ¦¬ κ΄λ¦¬
κ° νλ‘μΈμ€μκ² λ 립μ μΈ κ°μ μ£Όμ 곡κ°μ μ€μ A νλ‘κ·Έλ¨μ΄ B νλ‘κ·Έλ¨ λ©λͺ¨λ¦¬λ₯Ό μΉ¨λ²νμ§ λͺ» νλλ‘ ν΄μ€λ€. - νμΌ μμ€ν
컀λμ VFS(κ°μ νμΌ μμ€ν )λΌλ κ³΅ν΅ κ³μΈ΅μ ν΅ν΄μ ext4, xfs, NTFS κ°μ μλ‘ λ€λ₯Έ νμΌμμ€ν λ― νλμ "νμΌ"μ΄λΌλ μΈν°νμ΄μ€λ‘ 보μ¬μ€λ€.
κ·Έλ¦¬κ³ μ€μ λ‘λ νλ‘κ·Έλ¨μ΄ open, read, write κ°μ μμ²μ νλ©΄, 컀λμ νμ΄μ§ μΊμμ μ΄λ₯Ό λ¨Όμ λ°μνκ³ , μ μ ν μμ μ SSDλ HDDλ‘ λ΄λ €λ³΄λ΄μ£Όλ κ²μ΄λ€. - μ₯μΉ λλΌμ΄λ²μ 보μ
ν€λ³΄λ, λ§μ°μ€, κ·Έλν½μΉ΄λ, λ€νΈμν¬ μΉ΄λ, SSD λ± λͺ¨λ μ₯μΉλ κ°μ λλΌμ΄λ²κ° μμ΄μΌ μμ§μΌ μ μλλ°,
컀λμ μ΄ λλΌμ΄λ²λ€μ ν΅ν΄μ κ°κ°μ μ₯μΉμ λννλ€.
λν, λμμ μ¬μ©μ, κ·Έλ£Ή, κΆν κ°μ 보μ κ·μΉμ μ§ν€κ³ , λ§μ½ λ¬Έμ κ° μκΈ°λ©΄ μμ€ν μ 보νΈν΄μ£ΌκΈ°λ νλ€.
π μ΄μ체μ μ 컀λμ κ΄κ³
μ΄μ체μ μ 컀λμ κ΄κ³λ₯Ό μμλλ‘ μ 리ν΄μ νλμ νλ¦μΌλ‘ μ 리ν΄λ³΄λ©΄ μλμ κ°λ€.
1) νλ‘κ·Έλ¨ μ€ν μμ
μ¬μ©μκ° μμ΄μ½μ λλ₯΄κ±°λ μ Έμμ λͺ λ Ήμ μΉλ©΄, μ΄μ체μ λ μ νλ‘μΈμ€λ₯Ό λ§λ λ€.
μ΄λ 컀λμ΄ κ°μ λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό μ‘κ³ (μ½λ, λ°μ΄ν°, ν, μ€ν, 곡μ λΌμ΄λΈλ¬λ¦¬),
첫 μ€λ λλ₯Ό CPUμ νμμ μ¬μ©μ λͺ¨λλ‘ μ€νμν¨λ€
2) νλ‘κ·Έλ¨μ΄ OSμ λμ μμ²
νλ‘κ·Έλ¨μ νλμ¨μ΄λ₯Ό μ§μ λ§μ§ μ μκΈ° λλ¬Έμ 컀λμκ² system callλ‘ λΆνμ νκ² λλ€.
μλ₯Ό λ€λ©΄, open("test.txt"), write(fd, buf, n), mmap, fork κ°μ μμ²μ΄ μμ κ²μ΄λ€.
μ΄λ¬ν μμ€ν μ½μ΄ μ€νλλ©΄ λͺ¨λ μ ν(context switch)μ΄ μΌμ΄λκ³ , μ¬μ©μ λͺ¨λμμ 컀λ λͺ¨λλ‘ λ°λκ² λλ€.
3) 컀λμ΄ μ€μ μΌμ μ²λ¦¬
μλ₯Ό λ€μ΄μ open λͺ λ Ήμ΄μ κ²½μ°
κ²½λ‘λ₯Ό ν΄μνκ³ κΆνμ νμΈν λ€, κ·Έ νμΌμ λννλ inodeλ₯Ό μ°Ύμμ νμ¬ νλ‘μΈμ€μ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ°°μ ν΄μ€λ€.
writeλΌλ©΄, μ¬μ©μ λ²νΌμμ λ°μ΄ν°λ₯Ό copy_from_userλ‘ μ»€λ λ©λͺ¨λ¦¬(νμ΄μ§ μΊμ)μ 볡μ¬νκ³ ,
νμ΄μ§λ₯Ό dirty(μμ λ¨)λ‘ νμν λ€ μ μ ν μμ μ λμ€ν¬λ‘ λ΄λ €λ³΄λ΄μ€λ€.
mallocμ΄ λ©λͺ¨λ¦¬νμ λ¨μ λ©λͺ¨λ¦¬κ° λΆμ‘±ν΄μ 컀λμ μμ²μ μ¬λ¦¬κ² λλ©΄,
컀λμ buddy allocatorκ° λ¬Όλ¦¬ λ©λͺ¨λ¦¬λ₯Ό λΌμ΄μ£Όκ³ , νμ΄μ§ ν μ΄λΈμ κ°±μ ν΄μ κ°μ μ£Όμλ‘ μ°κ²°ν΄μ€λ€.
4) μ¬μ©μ λͺ¨λλ‘ λ³΅κ·
컀λμ΄ μμ κ°μ μΌλ€μ λ§μΉλ©΄ μμ€ν μ½μ΄ λλκ³ , CPUλ λ€μ μ¬μ©μ λͺ¨λμμ νλ‘κ·Έλ¨μ κ³μ μ€ννλ€
κ·Έλ¦¬κ³ , μ΄ κ³Όμ μμ νμνλ©΄ λ€λ₯Έ νλ‘μΈμ€λ‘ 컨ν μ€νΈ μ€μμΉκ° μΌμ΄λκΈ°λ νλ€.
.
μμ κ°μ νλ¦ λλΆμ μ°λ¦¬λ "νμΌ μ μ₯"μ²λΌ λ¨μν μΌμ νλλΌλ
보μμ΄ μΌμ§κ³ , μλμ ν¨μ¨μ΄ ν보λλ©°, νλμ¨μ΄λ§λ€ λμ λ°©μμ΄ λ€λ₯΄λ€λ μ¬μ€μ μ κ²½μΈ νμ μμ΄ κ°μ μΈν°νμ΄μ€λ‘ μ¬μ©ν μ μλ κ²μ΄λ€.
μ΄μ체μ (OS): 컀λ + λΌμ΄λΈλ¬λ¦¬ + Shell + μ νΈλ¦¬ν° μ 체
컀λ(Kernel): νλμ¨μ΄λ₯Ό μ§μ λ€λ£¨λ μμ§
β μ΄μ 리
- μ΄μ체μ (OS)
μ»΄ν¨ν°λ₯Ό μ°κ² ν΄μ£Όλ μ 체 νκ²½
ex. Ubuntu, Windows, Android λ± - 컀λ(Kernel)
OSμ ν΅μ¬ μμ§
νλμ¨μ΄λ₯Ό μ§μ μ μ΄νκ³ , μμκ³Ό 보μ λ±μ μ± μμ§ - μμ€ν
μ½(System Call)
νλ‘κ·Έλ¨μ΄ 컀λ κΈ°λ₯μ μ°κΈ° μν΄ μ§λκ°λ 곡μ ν΅λ‘
- OSκ° μμΌλ©΄ νλμ¨μ΄λ λ¨μν λΆνμΌ λΏ, μ¬λμ΄ μ°κΈ°λ νλ€λ€.
- 컀λμ΄ νλμ¨μ΄λ₯Ό μ§μ λ€λ£¨λ©°, μμ νκ³ κ³΅μ νκ² μμμ κ΄λ¦¬ν΄μ€λ€.
- νλ‘κ·Έλ¨μ μμ€ν μ½μ ν΅ν΄μλ§ μ»€λμ μμ²ν μ μκ³ , 컀λμ κ·Έ μμ²μ μμ νκ² μνν΄μ€λ€.
π κ²°λ‘
μ΄λ²μ 리λ μ€ μμ μ 첫 κ°μ λ΄μ©μ μ 리νλ©΄μ
λ¨μν μ»΄ν¨ν°λ₯Ό μΌλ©΄ κ·Έλ₯ λμκ°λ μννΈμ¨μ΄μ λλ‘ μκ°νλ μ΄μ체μ κ°
μ¬μ€μ λͺ¨λ νλμ¨μ΄μ μννΈμ¨μ΄μ μ‘°μ¨μ μν μ νκ³ μμμμ κΉ¨λ¬μ μ μμλ€.
νΉν μΈμ κΉμλ μ μ΄ λ κ°μ§κ° μμλλ° μλμ κ°λ€.
- user spaceμ kernel spaceμ λΆλ¦¬λ₯Ό ν΅ν΄ 보μμ±κ³Ό μμ μ±μ ν보νλ€λ μ
νλ‘κ·Έλ¨μ΄ μ§μ νλμ¨μ΄λ₯Ό 건λλ¦¬μ§ λͺ»νκ² νκ³ , λ°λμ μμ€ν μ½μ ν΅ν΄μλ§ μ κ·Όνκ² νλ€λ μμΉμ΄ OS μ€κ³μμ κ°μ₯ μ€μν λΆλΆμ΄λΌλ κ²μ κΉ¨λ¬μλ€. - μ°λ¦¬κ° μ½κ² μ°λ open, malloc, write κ°μ ν¨μ ν μ€ λ€μλ, 컀λ λ΄λΆμμ μλ§μ 볡μ‘ν μ μ°¨μ μ΅μ νκ° μ΄λ£¨μ΄μ§κ³ μλ€λ μ
μ΄ λλΆμ κ°λ°μλ νλμ¨μ΄μ μΈλΆ ꡬ쑰λ₯Ό λͺ°λΌλ μΌκ΄λ μΈν°νμ΄μ€λ‘ μμ νκ² νλ‘κ·Έλ¨μ μμ±ν μ μλ κ²μ΄μλ€.
μ΄λ¬ν λΆλΆμμ μ§μμ΄ λ§μ΄ λΆμ‘±ν΄μ 곡λΆνλ λ°μ μκ°μ΄ κ΅μ₯ν μ€λ κ±Έλ Έμ§λ§,
μμΌλ‘ κ°λ°μ ν λμλ μ€λ μ 리νλ λ΄μ©μ λ°νμΌλ‘ 'λ΄ μ½λ λ€μμ OSκ° μ΄λ€ μ΄μ νκ³ μλκ°'λ₯Ό νμ μμν¨μΌλ‘μ¨ λ κΉμ΄ μλ μ νμ ν μ μλλ‘ μ±μ₯ν΄μΌκ² λ€.
μ΄λ¬ν νλλ₯Ό κΈ°λ₯Έλ€λ©΄ μ€μ μλΉμ€ κ°λ°μμ μ±λ₯ μ΅μ ν, μμ κ΄λ¦¬, 보μ μ€κ³ κ°μ μ€μ§μ μΈ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°μ ν° κ°μ μ΄ λμ§ μμκΉ μ¬μ© κΈ°λν΄λ³Έλ€ π
'π« νκ΅ > π 리λ μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [리λ μ€] GitHub `git clone` μΈμ¦ μλ¬ ν΄κ²° λ°©λ² (Ubuntu + VirtualBox) (0) | 2025.09.23 |
|---|---|
| [리λ μ€] VirtualBox μ 체 νλ©΄ μ€μ νκΈ° (0) | 2025.09.23 |
| [리λ μ€] cscope μ€μΉ λ° μ¬μ© λ°©λ² (0) | 2025.09.17 |
| [리λ μ€] ctags μ€μΉ λ° μ¬μ© λ°©λ² (0) | 2025.09.17 |
| [리λ μ€] Windows 11μμ VirtualBox Ubuntu μ€ν μλ¬ ν΄κ²° λ°©λ² (VERR_NEM_VM_CREATE_FAILED) (0) | 2025.09.17 |