νλ‘κ·Έλ¨κ³Ό νλ‘μΈμ€μ μ°¨μ΄/(feat. μμ€ν μ½)
νλ‘κ·Έλ¨
λμ€ν¬μ μ μ₯λ μ€ν κ°λ₯ν μ½λμ μ§ν©
νλ‘μΈμ€
μ€ν μ€μΈ νλ‘κ·Έλ¨μ μΈμ€ν΄μ€λ‘, μ΄μ 체μ κ° κ΄λ¦¬νλ μ€ν 컨ν
μ€νΈ
test.cλ μμ€ μ½λ νμΌ μ΄ μμ€ μ½λλ₯Ό μ»΄νμΌνμ¬ μ€ν κ°λ₯ν λ°μ΄λ리(νλ‘κ·Έλ¨)λ₯Ό λ§λ λ€. μ΄ νλ‘κ·Έλ¨μ μ€ννλ©΄ testλΌλ νλ‘μΈμ€κ° μμ±λμ΄ μ€νλλ€.
test.c μμ€ μ½λ λ΄μ a()λΌλ μμ€ν
μ½μ΄ μλ€κ³ κ°μ ν΄λ³΄μ.
a()λ testνλ‘μΈμ€ λ΄μμ νΈμΆλλ μμ€ν
μ½μ΄λ€. λ°λΌμ λ³λμ νλ‘μΈμ€λ‘ μ€νλλ κ²μ΄ μλλ€( a() μμ€ν
μ½μ΄ μ’
λ£λ κ²μ΄μ§ testνλ‘μΈμ€κ° μ’
λ£λ κ²μ΄ μλ, νΈμΆ κ·Έλνλ₯Ό 그리λ κ³Όμ μμ μ΄ λΆλΆμ νΌλνκ³ μμλ€ ). νμ¬ μ€ν μ€μΈ test νλ‘μΈμ€μ 컨ν
μ€νΈμμ 컀λ λͺ¨λλ‘ μ ννμ¬ a() μμ€ν
μ½μ΄ μ²λ¦¬λλ€. (context switch μλ)
user mode μ kernel mode μ¬μ΄μ μ νμΌλ‘ mode switching μ΄λΌ νλ€.
(μ¬μ©μ λͺ¨λ -> 컀λ λͺ¨λ)
1. μΈλΆ μΈν°λ½νΈ (timer interrupt, I/O interruptμ κ°μ΄ HWμμ λ°μ) λ°μμ
2. μ¬μ©μκ° os μλΉμ€λ₯Ό νΈμΆ μ
(컀λ λͺ¨λ -> μ¬μ©μ λͺ¨λ)
1. μ μ΄κ° ν΄λΉ os μλΉμ€μμ μ¬μ©μ νλ‘μΈμ€λ‘ 볡κ·ν λ (Return from System call)