🐯[TIL] 250728-040

byoΒ·2025λ…„ 7μ›” 28일

πŸ’« 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

β˜‘οΈ λ³€μˆ˜

ν‚€μ›Œλ“œμž¬μ„ μ–Έμž¬ν• λ‹ΉμŠ€μ½”ν”„ν˜Έμ΄μŠ€νŒ…μ΄ˆκΈ°ν™” ν•„μš”
varOOν•¨μˆ˜ μŠ€μ½”ν”„OX
letXO블둝 μŠ€μ½”ν”„O (TDZ)X
constXX블둝 μŠ€μ½”ν”„O (TDZ)O (ν•„μˆ˜)

β˜‘οΈ ν˜Έμ΄μŠ€νŒ…

"λ³€μˆ˜λ‚˜ ν•¨μˆ˜ 선언이 μ½”λ“œ 맨 μœ„λ‘œ λŒμ–΄μ˜¬λ €μ§€λŠ” ν˜„μƒ"

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹€ν–‰ 전에 λ³€μˆ˜ μ„ μ–Έκ³Ό ν•¨μˆ˜ 선언을 λ©”λͺ¨λ¦¬μ— 등둝해버린닀.
κ·Έλž˜μ„œ μ½”λ“œμ—μ„œ 선언보닀 λ¨Όμ € μ‚¬μš©ν•΄λ„ μ—λŸ¬κ°€ μ•ˆ λ‚  μˆ˜λ„ μžˆλ‹€.

κ΅¬λΆ„ν˜Έμ΄μŠ€νŒ… 됨?μ΄ˆκΈ°ν™”λ¨?μ„ μ–Έ μ „ μ‚¬μš©
varOO (undefined)κ°€λŠ₯ (ν•˜μ§€λ§Œ 값은 undefined)
let, constO❌ (TDZ)❌ ReferenceError
ν•¨μˆ˜ 선언식OOβœ… μ‚¬μš© κ°€λŠ₯
ν•¨μˆ˜ ν‘œν˜„μ‹(var)O (var만)❌❌ TypeError
  • let, constλŠ” ν˜Έμ΄μŠ€νŒ…μ€ λ˜μ§€λ§Œ μ ˆλŒ€ λ¨Όμ € μ“°λ©΄ μ•ˆλ¨

  • varλŠ” 되긴 ν•˜μ§€λ§Œ μœ„ν—˜ β†’ μš”μ¦˜μ€ 거의 μ•ˆ 씀

  • ν•¨μˆ˜λŠ” 선언식이면 λ¨Όμ € 써도 OK

β˜‘οΈ Rexical Scope

"ν•¨μˆ˜κ°€ μ–΄λ””μ„œ ν˜ΈμΆœλλŠ”μ§€κ°€ μ•„λ‹ˆλΌ, μ–΄λ””μ„œ μ •μ˜λλŠ”μ§€(μž‘μ„±λλŠ”μ§€)에 따라 μƒμœ„ μŠ€μ½”ν”„κ°€ κ²°μ •λ˜λŠ” κ·œμΉ™"

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•œ μœ„μΉ˜λ₯Ό κΈ°μ€€μœΌλ‘œ λ³€μˆ˜ μ ‘κ·Ό λ²”μœ„λ₯Ό μ •ν•œλ‹€.

μš©μ–΄μ˜λ―Έ
λ ‰μ‹œμ»¬(Lexical)"문자 κ·ΈλŒ€λ‘œ", "μ†ŒμŠ€ μ½”λ“œμ— 적힌 κ·ΈλŒ€λ‘œ"λΌλŠ” 의미
정적(Static)"μ‹€ν–‰ 쀑에 λ³€ν•˜μ§€ μ•ŠλŠ”", "κ³ μ •λœ" 의미
profile
πŸ—‚οΈ hamstern

0개의 λŒ“κΈ€