μμ€ν μ½μ΄ μ¬μ©μ νλ‘κ·Έλ¨κ³Ό OS 컀λ κ°μ μμ νκ³ μ²΄κ³μ μΈ ν΅μ μ κ°λ₯νκ² νλ€
π§ππ ππ’π‘π‘πππ§ππ’π‘ πππ§πͺπππ‘ π¨π¦ππ₯ π£π₯π’ππ₯ππ π¦ ππ‘π π’π¦ πππ₯π‘ππ
AI μμ½
Context
μ¬μ©μ νλ‘κ·Έλ¨μ μ νλ κΆνλ§ λ³΄μ νλ©° μμ€ν μ 체μ νλμ¨μ΄μ unrestricted accessλ₯Ό κ°μ§ 컀λ λͺ¨λμ λΆλ¦¬λμ΄ μλ€. μ΄λ¬ν λΆλ¦¬ ꡬ쑰λ μμ€ν μμ μ±μ 보μ₯νμ§λ§ μ§μ μ μΈ ν΅μ μ±λμ΄ λΆμ¬ν μνλ₯Ό μ΄λνλ€.
Technical Solution
- μ¬μ©μ νλ‘κ·Έλ¨ β νμ€ λΌμ΄λΈλ¬λ¦¬ ν¨μλ₯Ό νΈμΆνμ¬ μμ²μ μμ±νλ κ³Όμ
- CPU β trap λͺ λ Ήμ΄ μ€ν μ program counterμ register μνλ₯Ό kernel stackμ μ μ₯νλ κ³Όμ
- νλμ¨μ΄ β trap λ°μ μ privilege levelμ user modeμμ kernel modeλ‘ μ ννλ κ³Όμ
- OS β trap tableμ μ°Έμ‘°νμ¬ ν΄λΉ μμ€ν μ½μ entry pointλ₯Ό κ²°μ νλ κ³Όμ
- 컀λ λͺ¨λ β μ§μ λ entry pointμμ μμ²λ μμ μ μ€ννλ κ³Όμ
Impact
λ³Έ μν€ν μ²λ μμ€ν μμ μ±κ³Ό κΈ°λ₯μ±μ΄λΌλ λ κ°μ§ μμΆ©λλ λͺ©νλ₯Ό λμμ λ¬μ±νλ€.
Key Takeaway
μμ€ν μ½μ μΆμμ κ°λ μ΄μ§λ§ μ€μ ꡬνμ trapμ΄λΌλ νλμ¨μ΄ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§λ©°, μ΄ κ³Όμ μμ νλμ¨μ΄μ OSκ° νλ ₯νμ¬ privilege levelμ μ ννλ€.
μ€μ² ν¬μΈνΈ
C νλ‘κ·Έλ¨μμ printf() νΈμΆ μ write() μμ€ν μ½μ ν΅ν΄ OS 컀λμ display driverμ ν΅μ νλ λ°©μμΌλ‘, μμ λ 벨 APIκ° μμ€ν 리μμ€ μ κ·Όμ μμ νκ² μΆμννλ€