-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: [OS] OS κ°λ‘ (2) * add: μΈν°λ½νΈ λ΄μ© μΆκ°
- Loading branch information
Showing
4 changed files
with
160 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
#OS | ||
|
||
>operating system concepts 10th 1μ₯μ ν λλ‘ μ 리νμμ΅λλ€. | ||
# 1οΈβ£ Events(μ΄λ²€νΈ μ²λ¦¬) | ||
|
||
μ΄μ OS κ°λ‘ (1)μμ λμλ€μνΌ μ»΄ν¨ν° νλμ¨μ΄λ κΈ°λ³Έμ μΌλ‘ CPU, λ©λͺ¨λ¦¬, I/O deviceλ‘ κ΅¬μ±λμ΄ μμ΅λλ€. | ||
CPUμ I/O deviceλ λμμ μ€νλ μ μλλ°μ. μ₯μΉ μ»¨νΈλ‘€λ¬λ CPUμκ² μ΄λ²€νΈ λ°μμ μ리λλ°, μ΄λ²€νΈ λ°μμ μ리λ κ²μΒ ==**μΈν°λ½νΈ**(Interrupt)==λΌκ³ λΆλ¦ λλ€. | ||
|
||
μΈν°λ½νΈλ 'λ°©ν΄νλ€βλΌλ λ»μΌλ‘, μ»΄ν¨ν°μμλ μ νΈλ₯Ό λ³΄λ΄ μ΄λ²€νΈ λ°μμ μ리λ κ²μ μλ―Έν©λλ€. | ||
λ³΄ν΅ μ»΄ν¨ν°λ μ¬λ¬ μμ μ λμμ μ²λ¦¬νλλ°, μ΄λ λΉμ₯ μ²λ¦¬ν΄μΌ νλ μΌμ΄ μ겨μ κΈ°μ‘΄μ μμ μ μ μ μ€λ¨ν΄μΌ νλ κ²½μ° μΈν°λ½νΈ μ νΈλ₯Ό 보λ΄κ² λ©λλ€. | ||
κ·Έλ¬λ©΄ 컀λμ μμ μ λ©μΆκ³ μΈν°λ½νΈλ₯Ό μ²λ¦¬ν λ€ λ€μ κΈ°μ‘΄ μμ μΌλ‘ λμμ€κ² λ©λλ€. | ||
|
||
μΈν°λ½νΈλ νλμ¨μ΄λ μννΈμ¨μ΄μ μν΄ λ°μν μ μμΌλ©°, | ||
|
||
μννΈμ¨μ΄μ μν΄ λ°μνλ μΈν°λ½νΈλ ==**νΈλ©**(Trap)==κ³Ό ==**μμ€ν μ½**==μ΄ μμ΅λλ€. | ||
|
||
νλμ¨μ΄μ κ²½μ° μμ€ν λ²μ€(System bus)λ₯Ό ν΅ν΄ CPUμ μ νΈλ₯Ό 보λμΌλ‘μ¨ μΈν°λ½νΈλ₯Ό λ°μμν΅λλ€. | ||
|
||
![[Pasted image 20250106112629.png]] | ||
|
||
### Common Functions of Interrupts | ||
|
||
μ»΄ν¨ν°λ μ¬λ¬ μμ μ λμμ μ²λ¦¬νλλ°, λ§μ½ CPUκ° μΈν°λ½νΈ μ νΈλ₯Ό λ°μΌλ©΄, μμ λ§νλ―μ΄ νλ μΌμ μ μ λ©μΆκ³ λ©λͺ¨λ¦¬μ μ΄λ€ κ³ μ λ μμΉ(Fixed location)λ₯Ό μ°Ύκ²λ©λλ€. | ||
|
||
μ΄ μμΉλΒ **μΈν°λ½νΈ 벑ν°**(Interrupt vector)μ μ μ₯λμ΄ μμ΅λλ€. | ||
|
||
>β**μΈν°λ½νΈ 벑ν°?** | ||
μΈν°λ½νΈ λ°±νΈλ μΈν°λ½νΈλ₯Ό μ²λ¦¬ν μ μλΒ **μλΉμ€ 루ν΄**(Service routine)λ€μ μ£Όμλ₯Ό κ°μ§κ³ μλ 곡κ°μ λ§ν¨(μ§μ μ μ£Όμλ§ μ 곡) | ||
μΈν°λ½νΈ λ²νΈλ μ΄μ체μ κ° κ²°μ ν¨. | ||
|
||
>**리λ μ€μμ μΈν°λ½νΈ λ²νΈ** | ||
0 ~ 31 : μμΈμν© μΈν°λ½νΈ | ||
32 ~ 47 : νλμ¨μ΄ μΈν°λ½νΈ | ||
128 : μμ€ν μ½ | ||
|
||
##### κ·Έλ λ€λ©΄ μΈν°λ½νΈ μ²λ¦¬ λ°©μμ λν΄ μμλ΄ μλ€! | ||
|
||
μΈν°λ½νΈκ° λ°μνλ©΄ CPUλ μ¬μ μ μ μλ λ°©μμΌλ‘ μΈν°λ½νΈ νΈλ€λ¬λ₯Ό νΈμΆνμ¬ λ¬Έμ λ₯Ό μ²λ¦¬ν©λλ€. | ||
CPUλ ν μ΄λΈμμ μ°Ύμ μμΈ νΈλ€λ¬μ μμ μ£Όμλ‘ μ ννμ¬, 컀λμ΄ μμ±ν΄ λ μμΈ μ²λ¦¬ μ½λλ₯Ό μ€ννκ² λ©λλ€. | ||
|
||
μΈν°λ½νΈκ° λ°μνμ λ, CPUκ° μ΄λ€ μ½λ(μΈν°λ½νΈ νΈλ€λ¬)λ₯Ό μ€νν μ§λ₯Ό κ²°μ νκΈ° μν΄μλ, λ¨Όμ ν΄λΉ μΈν°λ½νΈ λ²νΈμ λμνλ νΈλ€λ¬μ μμ μ£Όμλ₯Ό μμμΌ ν©λλ€. | ||
μ΄ μ 보λ₯Ό μ μ₯ν΄ λμ μλ£κ΅¬μ‘°κ° λ°λ‘ ==μΈν°λ½νΈ λ²‘ν° ν μ΄λΈ(IVT)== μ λλ€ | ||
|
||
> **IVTμ μΈν°λ½νΈ νΈλ€λ¬μ κ΄κ³λ...** | ||
> | ||
> 1. IVTμλ μΈν°λ½νΈ νΈλ€λ¬μ μ£Όμκ° μ μ₯λμ΄ μμ | ||
> μΈν°λ½νΈ λ²νΈ β νΈλ€λ¬ μ½λκ° μμλλ λ©λͺ¨λ¦¬ μ£Όμ | ||
> 2. μΈν°λ½νΈ λ°μ | ||
> CPUκ° βμΈν°λ½νΈ λ²νΈβλ₯Ό νμΈνκ³ , ν΄λΉ λ²νΈμ λ§λ μνΈλ¦¬λ₯Ό IVTμμ μ‘°ν | ||
> 3. νΈλ€λ¬ μ€ν | ||
> IVTμ κΈ°λ‘λ νΈλ€λ¬μ μμ μ£Όμλ‘ μ ν(λΆκΈ°)νμ¬ μΈν°λ½νΈ μ²λ¦¬λ₯Ό μν | ||
μ¦, IVTλ μΈν°λ½νΈ νΈλ€λ¬λ₯Ό νΈμΆνκΈ° μν μ£Όμ μλ΄ν μν μ νκ³ , μ€μ λ‘ μΈν°λ½νΈλ₯Ό μ²λ¦¬νλ λ‘μ§μ μΈν°λ½νΈ νΈλ€λ¬(ISR) μͺ½μ ꡬνλμ΄ μλ€κ³ λ³Ό μ μμ΅λλ€. | ||
|
||
μ΄λ κ² μΈν°λ½νΈλ₯Ό μ²λ¦¬νκ³ λλ©΄ CPUλ λ€μ μλ μμ μΌλ‘ λμμ€κ² λ©λλ€. | ||
μ΄λ€ κ°μ 0μΌλ‘ λλλ κ²(Division by zero)λ μΈν°λ½νΈμ΄λ©°, μ΄λ¬ν λ΄λΆ μΈν°λ½νΈ(Internal interrupt)λ μμΈ(Exception)λΌκ³ λΆλ¦ λλ€. | ||
|
||
μ°Έκ³ λ‘ system callμ μ’ λ₯λ λ€μκ³Ό κ°μ΅λλ€. | ||
|
||
![[Pasted image 20250106114208.png|500]] | ||
|
||
# 2οΈβ£ Timer | ||
|
||
Timerλ λ κ°μ§ μ’ λ₯κ° μμ΅λλ€. | ||
|
||
1. **CPU λ΄λΆμ μκ³** | ||
2. **μ΄μ체μ μμ μ¬μ©νλ μκ³** | ||
|
||
**CPU λ΄λΆμ μκ³**λ ==**ν΄λ(Clock)**==μ΄λΌκ³ νλ©°, CPUκ° λͺ λ Ήμ μ²λ¦¬νλ κΈ°λ³Έμ μΈ λμ μ£ΌκΈ°λ₯Ό μ 곡ν©λλ€. | ||
μλ₯Ό λ€μ΄, 4.3GHz ν΄λ μλλΌλ©΄, CPUλ μ΄λΉ 43μ΅ νμ ν΄λ μ¬μ΄ν΄μ μνν μ μλ€λ λ»μ λλ€. | ||
μ΄λ¬ν ν΄λμ CPU λ΄λΆμ κ° κ΅¬μ± μμ(μ°μ λ Όλ¦¬ μ λ(ALU), λ μ§μ€ν° λ±)μ μΈλΆ μ₯μΉ κ°μ λκΈ°νλ₯Ό μ μ§ν©λλ€. | ||
|
||
**μ΄μ체μ μμ μ¬μ©νλ μκ³**λ μ£ΌκΈ°μ μΌλ‘ ==**νμ΄λ¨Έ μΈν°λ½νΈ**==λ₯Ό λ°μμμΌ μκ³λ₯Ό κ΄λ¦¬ν©λλ€. | ||
νμ΄λ¨Έ μΈν°λ½νΈλ μΌμ ν μ£ΌκΈ°λ‘ λ°μνλ©°, μ΄λ₯Ό ν΅ν΄ CPUλ νμ¬ μκ°μ κ³μ°νκ±°λ νλ‘μΈμ€λ₯Ό μ€μΌμ€λ§ν©λλ€. | ||
μν λ‘λ μμ€ν μκ° κ΄λ¦¬, νλ‘μΈμ€ μ€μΌμ€λ§, λλ°μ΄μ€ λκΈ°νκ° μμ΅λλ€. | ||
|
||
# 3οΈβ£ Resource Management | ||
|
||
리μμ€λ μ¬μ©μκ° μμ μ νκΈ° μν μμ(CPU,λ©λͺ¨λ¦¬,μ μΆλ ₯μ₯μΉ)μ λ§ν©λλ€. | ||
|
||
μ΄λ¬ν μμλ€μ κ΄λ¦¬ νμμ±μ λ€μκ³Ό κ°μ΅λλ€. | ||
|
||
- **μμμ νμ μ±** : μ»΄ν¨ν°μ μμμ νμ λμ΄ μμΌλ―λ‘, μ¬λ¬ νλ‘μΈμ€κ° λμμ μ€νλλ νκ²½μμ μ μ ν κ΄λ¦¬νμ§ μμΌλ©΄ λ³λͺ© νμμ΄ λ°μνκ±°λ νΉμ νλ‘μΈμ€κ° μμμ λ μ ν μ μμ΅λλ€. | ||
- **곡μ ν μ¬μ©** : λͺ¨λ νλ‘μΈμ€κ° 곡μ νκ² μμμ μ¬μ©ν μ μλλ‘ λ³΄μ₯ν΄μΌ ν©λλ€. | ||
- **ν¨μ¨μ±** : μμ€ν μ μ±λ₯μ κ·Ήλννλ €λ©΄ μμμ λλΉ μμ΄ ν¨μ¨μ μΌλ‘ ν λΉν΄μΌ ν©λλ€. | ||
- **μμ μ±** : μλͺ»λ μμ κ΄λ¦¬λ‘ μΈν΄ λ°λλ½(Deadlock)μ΄λ μμ λΆμ‘±μΌλ‘ μμ€ν μ΄ λΉμ μμ μΌλ‘ μλνλ μν©μ λ°©μ§ν΄μΌ ν©λλ€. | ||
|
||
μ΄μ 체μ λ κ³ κ°(**νλ‘μΈμ€**)μ΄ ν¨μ¨μ μ΄κ³ 곡μ νκ² μμμ μ¬μ©ν μ μλλ‘ μ€κ° κ΄λ¦¬μμ μν μ μννλ©°, μμ€ν μ μ±λ₯κ³Ό μμ μ±μ μ μ§ν©λλ€. | ||
|
||
μ΄λ₯Ό μν΄ μ΄μ체μ λ Process, Memory, Storage, File-System, Mass-Storage Managementλ₯Ό μνν©λλ€. λ μμΈν 건 κ° μμ κ΄λ¦¬μ λν΄ λ°λ‘ μ 리ν΄λ³΄κ² μ΅λλ€. | ||
|
||
# 4οΈβ£ Caching | ||
|
||
μ νμ΄μ§μμ μ»΄ν¨ν°λ ν° λ Έμ΄λ§ κ΅¬μ‘°λ‘ μ΄λ£¨μ΄μ Έ μλ€κ³ νμμ΅λλ€. | ||
ν° λ Έμ΄λ§ ꡬ쑰λ CPUκ° **λͺ λ Ήμ΄λ₯Ό Fetch β Decode β Execute**νλ λ¨κ³λ₯Ό λ°λ³΅μ μΌλ‘ μννλκ±Έ λ§νλλ°μ. | ||
μ΄λ CPUμ λ©λͺ¨λ¦¬ μ¬μ΄μ λ¨μΌ λ²μ€λ₯Ό ν΅ν΄ λ°μ΄ν°μ λͺ λ Ήμ΄λ₯Ό μ£Όκ³ λ°λ ꡬ쑰λΌκ³ λ§ν μ μμ΅λλ€. | ||
|
||
μ΄ κ΅¬μ‘°μ νΉμ§μΈ **λ¨μΌ λ²μ€**λ λ°μ΄ν°μ λͺ λ Ήμ΄λ₯Ό λμμ μ²λ¦¬νμ§ λͺ»νκΈ° λλ¬Έμ λ³λͺ©(Bottleneck)μ΄ λ°μν μ μμ΅λλ€. μ΄λ₯Ό **ν° λ Έμ΄λ§ λ³λͺ© νμ**(Von Neumann Bottleneck)μ΄λΌ λΆλ₯΄λλ°μ. | ||
|
||
λ³λͺ© νμμ μμΈμΌλ‘λ λ©λͺ¨λ¦¬μ μ κ·Ό μλκ° CPUμ μ°μ° μλλ³΄λ€ λλ¦¬κ³ , CPUκ° λ λ§μ μ°μ°μ λΉ λ₯΄κ² μ²λ¦¬ν μ μμ΄λ λ©λͺ¨λ¦¬λ‘λΆν° λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λ° κ±Έλ¦¬λ μκ°μ΄ μ 체 μ±λ₯μ μ ννκΈ° λλ¬Έμ λλ€. | ||
|
||
μμ CPUμ λ©λͺ¨λ¦¬ κ°μ μλλ₯Ό μ€μ΄κΈ° μν΄ ==**μΊμ λ©λͺ¨λ¦¬(Cache Memory)**==κ° λμ λμμ΅λλ€. | ||
μΊμ λ©λͺ¨λ¦¬λ CPU λ΄λΆλ κ°κΉμ΄ μμΉμ λ°°μΉλμ΄ **κ°μ₯ μμ£Ό μ¬μ©λλ λ°μ΄ν°**(λͺ λ Ήμ΄ λ° μ°μ° λ°μ΄ν°)λ₯Ό μ μ₯ν©λλ€. | ||
μΊμλ κ΅μ₯ν μμ μ μ₯μ₯μΉλ‘ SRAM(Static RAM) κΈ°μ μ μ¬μ©νμ¬ DRAM(μΌλ° λ©λͺ¨λ¦¬)λ³΄λ€ ν¨μ¬ λΉ λ₯Έ μλλ₯Ό μ 곡ν΄μ£Όμ΄ λ³λͺ©νμμ ν΄κ²°ν΄ μ€ μ μμ΅λλ€. | ||
|
||
μλ μ리λ‘λ λ€μκ³Ό κ°μ΅λλ€. | ||
|
||
1. CPUκ° λ°μ΄ν°λ₯Ό μμ²νλ©΄ λ¨Όμ μΊμλ₯Ό νμΈν©λλ€(**cache hit**) | ||
2. μΊμμ λ°μ΄ν°κ° μλ κ²½μ° λ©λͺ¨λ¦¬μμ λ°μ΄ν°λ₯Ό κ°μ Έμ μΊμμ μ μ₯νκ³ , CPUκ° μ΄λ₯Ό μ¬μ©ν©λλ€(**cache miss**) | ||
|
||
μ¬κΈ°μ μΊμ μ±λ₯μ μ λμ μΌλ‘ νκ°νκ±°λ λΆμνκΈ° μν΄μ κΈ°λκ°μ μ¬μ©ν μ μμ΅λλ€. | ||
μΊμ λ©λͺ¨λ¦¬μ κΈ°λκ°μ κ³μ°νλ©΄ μ±λ₯ λ³λͺ©μ μ λμ μΌλ‘ νκ°νκ³ , ν¨μ¨μ μΈ μ€κ³μ μ΅μ νλ₯Ό μ§μν μ μμ΅λλ€. | ||
|
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.