π« CS
β
Kernel
βοΈ 1. 컀λμ΄λ?
- 컀λ(Kernel): μ΄μ체μ μ ν΅μ¬μ΄λ©°, νλμ¨μ΄μ μμ© νλ‘κ·Έλ¨ μ¬μ΄μ μ€μ¬μ μν μ νλ€.
- μ£Όμ κΈ°λ₯: μμ€ν
μμ(CPU, λ©λͺ¨λ¦¬, I/O λ±) κ΄λ¦¬, νλ‘μΈμ€ μ μ΄, 보μ, μ€λ₯ 격리 λ±μ μννλ€.
- μμ€ν
μ½(System Call)μ ν΅ν΄ μ¬μ©μ μμ²μ μ²λ¦¬νλ©°, λͺ¨λ μμ μ κ·Όμ 컀λμ ν΅ν΄ μ΄λ£¨μ΄μ§λ€.
βοΈ 2. 컀λ λͺ¨λ vs μ¬μ©μ λͺ¨λ
| νλͺ© | 컀λ λͺ¨λ | μ¬μ©μ λͺ¨λ |
|---|
| κΆν | μ΅κ³ κΆν | μ νλ κΆν |
| μ€ν μ½λ | 컀λ, λλΌμ΄λ² | μμ© νλ‘κ·Έλ¨ |
| μ κ·Ό κ°λ₯ μμ | λͺ¨λ μμ€ν
μμ | μ νλ λ©λͺ¨λ¦¬, API |
- μμ€ν
μ½μ΄λ μΈν°λ½νΈλ₯Ό ν΅ν΄ μ¬μ©μ λͺ¨λ β 컀λ λͺ¨λλ‘ μ νλλ€.
π¨βπ» 3. μμ κ΄λ¦¬ κΈ°λ₯
β νλ‘μΈμ€ κ΄λ¦¬
fork(), exec()λ‘ νλ‘μΈμ€λ₯Ό μμ±νλ€.
- μ€μΌμ€λ§: μ μ ν(RR, Priority) / λΉμ μ ν(FCFS, SJF)
- λ¬Έλ§₯ κ΅νμ ν΅ν΄ μ€ν μνλ₯Ό 보쑴νλ€.
β‘ λ©λͺ¨λ¦¬ κ΄λ¦¬
- κ°μ λ©λͺ¨λ¦¬λ κ° νλ‘μΈμ€μ λ
립λ μ£Όμ 곡κ°μ μ 곡νλ€.
- νμ΄μ§μ μ£Όμ λ³νμ μ²λ¦¬νκ³ TLBλ₯Ό ν΅ν΄ μλλ₯Ό ν₯μμν¨λ€.
- μ€μνμ 물리 λ©λͺ¨λ¦¬κ° λΆμ‘±ν λ λμ€ν¬λ‘ μΌλΆ νμ΄μ§λ₯Ό κ΅μ²΄νλ€.
β’ μ
μΆλ ₯ λ° μ₯μΉ κ΄λ¦¬
- λλ°μ΄μ€ λλΌμ΄λ²λ₯Ό ν΅ν΄ μ₯μΉλ₯Ό μ μ΄νλ€.
- I/O μ²λ¦¬ λ°©μ: ν΄λ§ / μΈν°λ½νΈ / DMA
- λ²νΌλ§Β·μΊμ±μ ν΅ν΄ μ
μΆλ ₯ μλ μ°¨μ΄λ₯Ό μννλ€.
β£ νμΌ μμ€ν
κ΄λ¦¬
- νμΌ λ° λλ ν°λ¦¬, λ©νλ°μ΄ν°λ₯Ό κ΄λ¦¬νλ€.
- ν λΉ λ°©μ: μ°μ, μ°κ²°, μΈλ±μ€ λ°©μμ΄ μλ€.
- μ λλ§μ ν΅ν΄ νμΌ μμ€ν
μ 무결μ±μ 보μ₯νλ€ (μ: ext4, NTFS).
π§± 4. 컀λ ꡬ쑰 λΉκ΅
| ꡬ쑰 | μ₯μ | λ¨μ |
|---|
| λͺ¨λ리μ | λΉ λ₯Έ μ±λ₯ μ 곡 | λ²κ·Έ λ°μ μ μ 체 μμ€ν
μ μν₯ |
| λ§μ΄ν¬λ‘컀λ | μμ μ±Β·λͺ¨λμ± μ°μ | μ±λ₯ μ ν (μ ν μ€λ²ν€λ μ‘΄μ¬) |
- Linuxλ λͺ¨λ리μ ꡬ쑰λ₯Ό μ±ννλ€.
- Windows/macOSλ λͺ¨λ리μκ³Ό λ§μ΄ν¬λ‘컀λμ νΌν©ν νμ΄λΈλ¦¬λ 컀λ ꡬ쑰λ€.
π μμ½
- 컀λμ μ΄μ체μ μ μ€μ¬μΌλ‘, λͺ¨λ μμκ³Ό νλμ¨μ΄ μ μ΄λ₯Ό λ΄λΉνλ€.
- λͺ¨λ μ ν, μμ κ΄λ¦¬, μμ€ν
νΈμΆμ ν΅ν΄ μμ νκ³ ν¨μ¨μ μΈ μμ€ν
μ΄μμ 보μ₯νλ€.
- 컀λ ꡬ쑰μ μ νμ μμ€ν
μ μ±λ₯Β·μμ μ±Β·νμ₯μ±μ μ§μ μ μΈ μν₯μ μ€λ€.
컀λ λμ μ리λ₯Ό μ΄ν΄νλ©΄ μμ€ν
νλ‘κ·Έλλ°, 보μ, μ±λ₯ μ΅μ νμ κΈ°λ°μ λ§λ ¨ν μ μλ€.
π« JS
βοΈ λ³μ
| ν€μλ | μ¬μ μΈ | μ¬ν λΉ | μ€μ½ν | νΈμ΄μ€ν
| μ΄κΈ°ν νμ |
|---|
var | O | O | ν¨μ μ€μ½ν | O | X |
let | X | O | λΈλ‘ μ€μ½ν | O (TDZ) | X |
const | X | X | λΈλ‘ μ€μ½ν | O (TDZ) | O (νμ) |
βοΈ νΈμ΄μ€ν
"λ³μλ ν¨μ μ μΈμ΄ μ½λ 맨 μλ‘ λμ΄μ¬λ €μ§λ νμ"
μλ°μ€ν¬λ¦½νΈλ μ€ν μ μ λ³μ μ μΈκ³Ό ν¨μ μ μΈμ λ©λͺ¨λ¦¬μ λ±λ‘ν΄λ²λ¦°λ€.
κ·Έλμ μ½λμμ μ μΈλ³΄λ€ λ¨Όμ μ¬μ©ν΄λ μλ¬κ° μ λ μλ μλ€.
| κ΅¬λΆ | νΈμ΄μ€ν
λ¨? | μ΄κΈ°νλ¨? | μ μΈ μ μ¬μ© |
|---|
var | O | O (undefined) | κ°λ₯ (νμ§λ§ κ°μ undefined) |
let, const | O | β (TDZ) | β ReferenceError |
| ν¨μ μ μΈμ | O | O | β
μ¬μ© κ°λ₯ |
ν¨μ ννμ(var) | O (varλ§) | β | β TypeError |
-
let, constλ νΈμ΄μ€ν
μ λμ§λ§ μ λ λ¨Όμ μ°λ©΄ μλ¨
-
varλ λκΈ΄ νμ§λ§ μν β μμ¦μ κ±°μ μ μ
-
ν¨μλ μ μΈμμ΄λ©΄ λ¨Όμ μ¨λ OK
βοΈ Rexical Scope
"ν¨μκ° μ΄λμ νΈμΆλλμ§κ° μλλΌ, μ΄λμ μ μλλμ§(μμ±λλμ§)μ λ°λΌ μμ μ€μ½νκ° κ²°μ λλ κ·μΉ"
μλ°μ€ν¬λ¦½νΈλ μ½λλ₯Ό μμ±ν μμΉλ₯Ό κΈ°μ€μΌλ‘ λ³μ μ κ·Ό λ²μλ₯Ό μ νλ€.
| μ©μ΄ | μλ―Έ |
|---|
| λ μ컬(Lexical) | "λ¬Έμ κ·Έλλ‘", "μμ€ μ½λμ μ ν κ·Έλλ‘"λΌλ μλ―Έ |
| μ μ (Static) | "μ€ν μ€μ λ³νμ§ μλ", "κ³ μ λ" μλ―Έ |