Live Today

[운영체제] μΈν„°λŸ½νŠΈ λ³Έλ¬Έ

Computer Science/운영체제

[운영체제] μΈν„°λŸ½νŠΈ

ilivetoday 2023. 2. 5. 21:37
λ°˜μ‘ν˜•

πŸ”ΉμΈν„°λŸ½νŠΈλž€ ?

 

CPUκ°€ νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 도쀑에 κΈ‰ν•˜κ²Œ λ‹€λ₯Έ 일을 μ²˜λ¦¬ν•˜κ³ μž ν•  λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” κΈ°λŠ₯이닀. λŒ€λΆ€λΆ„μ˜ μ»΄ν“¨ν„°λŠ” ν•œ 개의 CPUλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ ν•œ μˆœκ°„μ—λŠ” ν•˜λ‚˜μ˜ 일 밖에 μ²˜λ¦¬ν•  수 μ—†κΈ° λ•Œλ¬Έμ— μ–΄λ–€ 일을 μ²˜λ¦¬ν•˜λŠ” 도쀑에 μš°μ„  μˆœμœ„κ°€ κΈ‰ν•œ 일을 μ²˜λ¦¬ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ λŒ€μ²˜ν•  수 μžˆλŠ” λ°©μ•ˆμ΄ ν•„μš”ν•˜λ‹€.

예λ₯Ό λ“€λ©΄, ν‚€λ³΄λ“œμ˜ ν‚€λ₯Ό ν•˜λ‚˜ λˆ„λ₯΄λ©΄, λˆŒλ €μ§„ ν‚€ μ½”λ“œ 값이 ν‚€λ³΄λ“œ 버퍼에 μž…λ ₯된 ν›„ CPU에 μΈν„°λŸ½νŠΈκ°€ κ±Έλ¦°λ‹€. 그럼 ν˜„μž¬ μ²˜λ¦¬ν•˜λ˜ μž‘μ—…μ— λŒ€ν•œ 정보λ₯Ό μˆ˜μ§‘ν•˜μ—¬ μ €μž₯ν•œ 뒀에 μΈν„°λŸ½νŠΈ μ„œλΉ„μŠ€ 루틴(Interrupt Service Routine)을 μˆ˜ν–‰ν•œλ‹€.(이 κ²½μš°μ—λŠ” ν‚€λ³΄λ“œ 버퍼에 μžˆλŠ” ν‚€ μ½”λ“œ 값을 κ°€μ Έκ°€λŠ” 일을 ν•œλ‹€.) μ΄λ ‡κ²Œ μΈν„°λŸ½νŠΈ 처리λ₯Ό 마친 ν›„μ—λŠ” λ‹€μ‹œ 이전에 μ²˜λ¦¬ν•˜λ˜ μž‘μ—…μœΌλ‘œ λŒμ•„κ°„λ‹€.

|좜처: λ‚˜λ¬΄μœ„ν‚€

 

 

  • μΈν„°λŸ½νŠΈλž€, CPUκ°€ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  μžˆμ„ λ•Œ, μž…μΆœλ ₯ ν•˜λ“œμ›¨μ–΄ λ“±μ˜ μž₯μΉ˜λ‚˜ λ˜λŠ” μ˜ˆμ™Έμƒν™©μ΄ λ°œμƒν•˜μ—¬ μ²˜λ¦¬κ°€ ν•„μš”ν•  경우 CPU에 μ•Œλ € μ²˜λ¦¬ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€.

 

  • λ˜λŠ” μ˜ˆμ™Έ 상황이 μžˆμ„ λ•Œ, μ˜ˆμ™Έμƒν™© λ°œμƒμ„ μš΄μ˜μ²΄μ œμ— μ•Œλ¦¬κ³ , μš΄μ˜μ²΄μ œκ°€ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰ 쀑지와 ν•¨κ»˜ μ—λŸ¬λ₯Ό ν‘œμ‹œν•˜κ²Œ λ©λ‹ˆλ‹€.

Interrupt: λ§ˆμ΄ν¬λ‘œν”„λ‘œμ„Έμ„œ(CPU)κ°€ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  μžˆμ„ λ•Œ, μž…μΆœλ ₯ ν•˜λ“œμ›¨μ–΄ λ“±μ˜ μž₯μΉ˜λ‚˜ λ˜λŠ” μ˜ˆμ™Έμƒν™©μ΄ λ°œμƒν•˜μ—¬ μ²˜λ¦¬κ°€ ν•„μš”ν•  κ²½μš°μ— λ§ˆμ΄ν¬λ‘œν”„λ‘œμ„Έμ„œμ—κ²Œ μ•Œλ € μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것 - 좜처: μœ„ν‚€λ°±κ³Ό

 

 

β˜‘οΈ ν•˜λ“œμ›¨μ–΄ μΈν„°λŸ½νŠΈ

ν•˜λ“œμ›¨μ–΄κ°€ λ°œμƒμ‹œν‚€λŠ” μΈν„°λŸ½νŠΈλ‘œ, CPUκ°€ μ•„λ‹Œ λ‹€λ₯Έ ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜κ°€ cpu에 μ–΄λ–€ 사싀을 μ•Œλ €μ£Όκ±°λ‚˜ cpu μ„œλΉ„μŠ€λ₯Ό μš”μ²­ν•΄μ•Ό ν•  경우 λ°œμƒμ‹œν‚¨λ‹€.

β˜‘οΈ μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°λŸ½νŠΈ

μ†Œν”„νŠΈμ›¨μ–΄κ°€ λ°œμƒμ‹œν‚€λŠ” μΈν„°λŸ½νŠΈμ΄λ‹€. μ†Œν”„νŠΈμ›¨μ–΄(μ‚¬μš©μž ν”„λ‘œκ·Έλž¨)κ°€ 슀슀둜 μΈν„°λŸ½νŠΈ 라인을 μ„ΈνŒ…ν•œλ‹€.

μ’…λ₯˜: μ˜ˆμ™Έ 상황, system call

μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚€κΈ° μœ„ν•΄ ν•˜λ“œμ›¨μ–΄/μ†Œν”„νŠΈμ›¨μ–΄λŠ” cpu내에 μžˆλŠ” μΈν„°λŸ½νŠΈ 라인을 μ„ΈνŒ…ν•˜μ—¬ μΈν„°λŸ½νŠΈλ₯Ό λ°œμƒμ‹œν‚¨λ‹€. λ”°λΌμ„œ cpuλŠ” 맀번 λͺ…령을 μˆ˜ν–‰ν•˜κΈ° 전에 μΈν„°λŸ½νŠΈλΌμΈμ΄ μ„ΈνŒ…λ˜μ–΄μžˆλŠ”μ§€λ₯Ό κ²€μ‚¬ν•œλ‹€.

 

βœ”οΈ μΈν„°λŸ½νŠΈμ˜ 처리 과정은 λ‹€μŒκ³Ό κ°™λ‹€.

1️⃣ μ£Ό ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œλ‹€.

2️⃣ μΈν„°λŸ½νŠΈμ˜ λ°œμƒμ„ κ°μ§€ν•œλ‹€.

3️⃣ ISR을 μ²˜λ¦¬ν•˜κ³  λ‚œ λ’€ μ‹€ν–‰μ€‘μ΄λ˜ μ£Ό ν”„λ‘œκ·Έλž¨μœΌλ‘œ λ‹€μ‹œ 볡귀해야 ν•˜κΈ° λ•Œλ¬Έμ— 볡귀 μ£Όμ†Œλ₯Ό 미리 μ €μž₯ν•œλ‹€.

4️⃣ μΈν„°λŸ½νŠΈ 벑터 ν…Œμ΄λΈ”μ—μ„œ ISR μ£Όμ†Œκ°’μ„ μ–»μ–΄μ„œ ISR둜 μ ν”„ν•œλ‹€.

5️⃣ ISRμ—μ„œ μΈν„°λŸ½νŠΈ λ°œμƒ 상황을 μ²˜λ¦¬ν•œλ‹€.

6️⃣ 볡귀 μ£Όμ†Œλ₯Ό κ°€μ Έμ˜¨λ‹€.

7️⃣ μ£Ό ν”„λ‘œκ·Έλž¨μ—μ„œ λ§ˆμ§€λ§‰μœΌλ‘œ μ‹€ν–‰μ€‘μ΄λ˜ μ£Όμ†Œλ₯Ό κ°€μ Έμ˜¨ λ’€, 1번으둜 λŒμ•„κ°€ 정상 μˆ˜ν–‰ν•œλ‹€.

 

 

 


 

🌐 참고 링크

[OS기초] μΈν„°λŸ½νŠΈ μ œλŒ€λ‘œ μ΄ν•΄ν•˜κΈ°