Operating System (운영체제)

ν”„λ‘œκ·Έλž¨κ³Ό ν”„λ‘œμ„ΈμŠ€μ˜ 차이/(feat. μ‹œμŠ€ν…œ 콜)

9taetae9 2023. 10. 16. 04:33
728x90

ν”„λ‘œκ·Έλž¨
λ””μŠ€ν¬μ— μ €μž₯된 μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œμ˜ μ§‘ν•©
 
ν”„λ‘œμ„ΈμŠ€ 
μ‹€ν–‰ μ€‘인 ν”„λ‘œκ·Έλž¨μ˜ μΈμŠ€ν„΄μŠ€λ‘œ, μš΄μ˜ μ²΄μ œκ°€ κ΄€λ¦¬ν•˜λŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ
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)

728x90