Skip to content

Commit

Permalink
feat: [OS] OS 개둠(2) (#32)
Browse files Browse the repository at this point in the history
* feat: [OS] OS 개둠(2)

* add: μΈν„°λŸ½νŠΈ λ‚΄μš© μΆ”κ°€
  • Loading branch information
sunnny619 authored Jan 10, 2025
1 parent 6837650 commit cf02a2c
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 9 deletions.
55 changes: 46 additions & 9 deletions .obsidian/workspace.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
"state": {
"type": "markdown",
"state": {
"file": "OS/OS 개둠(1).md",
"file": "OS/OS 개둠(2).md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "OS 개둠(1)"
"title": "OS 개둠(2)"
}
}
]
Expand Down Expand Up @@ -93,7 +93,7 @@
"state": {
"type": "backlink",
"state": {
"file": "OS/OS 개둠(1).md",
"file": "OS/OS 개둠(2).md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
Expand All @@ -103,7 +103,7 @@
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "OS 개둠(1)의 백링크"
"title": "OS 개둠(2)의 백링크"
}
},
{
Expand All @@ -112,12 +112,12 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "OS/OS 개둠(1).md",
"file": "OS/OS 개둠(2).md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "OS 개둠(1)의 λ‚˜κ°€λŠ” 링크"
"title": "OS 개둠(2)의 λ‚˜κ°€λŠ” 링크"
}
},
{
Expand All @@ -139,10 +139,10 @@
"state": {
"type": "outline",
"state": {
"file": "OS/OS 개둠(1).md"
"file": "OS/OS 개둠(2).md"
},
"icon": "lucide-list",
"title": "OS 개둠(1) κ°œμš”"
"title": "OS 개둠(2) κ°œμš”"
}
}
]
Expand All @@ -164,6 +164,43 @@
},
"active": "21fcf842d395c9fd",
"lastOpenFiles": [
"OS/OS 개둠(1).md"
"OS/OS 개둠(1).md",
"OS/OS 개둠(2).md",
"Pasted image 20250106114208.png",
"Pasted image 20250106112629.png",
"config.py",
"Network/osi7계측.md",
"Network/ny_http_msg.png",
"Network/http_request_message.md",
"Network/SSL-TLS.md",
"Network/REST-API.md",
"Network/OSI7Layer.md",
"Network/LoadBalancing.md",
"Network/Intro_HTTP.md",
"Network/HTTP-HTTPS.md",
"Network/HTTP, IP, DNS.md",
"Network/DNS.md",
"Linux/http_request_message.md",
"Linux/Signal.md",
"DB/View.md",
"DB/Key.md",
"DB/Between&In.md",
"Computer architecture/컴퓨터 ꡬ쑰 λͺ©μ°¨.md",
"Computer architecture/2. 컴퓨터 λ‚΄λΆ€μ˜ 데이터 ν‘œν˜„.md",
"Computer architecture",
"Algorithm/λ°±νŠΈλž˜ν‚Ή.md",
"Algorithm/img/image.png",
"Algorithm/img/image-8.png",
"Algorithm/img/image-7.png",
"Algorithm/img/image-6.png",
"Algorithm/img/image-5.png",
"Algorithm/img/image-4.png",
"Algorithm/img/image-3.png",
"Algorithm/img",
"Algorithm/Greedy.md",
"Algorithm/DFS&BFS.md",
"AWS/Terraform.md",
"AWS/SwapMemoryInCloud.md",
"AWS/Lambda.md"
]
}
114 changes: 114 additions & 0 deletions OS/OS 개둠(2).md
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**)

μ—¬κΈ°μ„œ μΊμ‹œ μ„±λŠ₯을 μ •λŸ‰μ μœΌλ‘œ ν‰κ°€ν•˜κ±°λ‚˜ λΆ„μ„ν•˜κΈ° μœ„ν•΄μ„œ κΈ°λŒ€κ°’μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μΊμ‹œ λ©”λͺ¨λ¦¬μ˜ κΈ°λŒ€κ°’μ„ κ³„μ‚°ν•˜λ©΄ μ„±λŠ₯ 병λͺ©μ„ μ •λŸ‰μ μœΌλ‘œ ν‰κ°€ν•˜κ³ , 효율적인 섀계와 μ΅œμ ν™”λ₯Ό 지원할 수 μžˆμŠ΅λ‹ˆλ‹€.

Binary file added Pasted image 20250106112629.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pasted image 20250106114208.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit cf02a2c

Please sign in to comment.