Synchronization
Race Condition์ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ์ด Synchronization์ด๋ค.
+) ์์ฐ์-์๋น์ ๋ฌธ์ (ํ๋ก์ธ์ค ๋๊ธฐํ์ ๋ํ ๋ฌธ์ -> ์น์๋ฒ์ ์ฐ๊ฒฐ์ํฌ ์ ์๋ค | ์์ฐ์:ํด๋ผ(์์ฒญ์ ๋ง๋ ๋ค,๋ฒํผ์ ๋ฃ๋๋ค) | ์๋น์:์๋ฒ(์์ฒญ์ ์ฒ๋ฆฌํ๋ค,๋ฒํผ๋ฅผ ๋น์ด๋ค))
https://copycode.tistory.com/67
์ด์์ฒด์ 9์ฅ - ํ๋ก์ธ์ค ๊ด๋ฆฌ(6) : ์์ฐ์-์๋น์ ๋ฌธ์ -
์ด์์ฒด์ 9์ฅ- ํ๋ก์ธ์ค ๊ด๋ฆฌ(6) : ์์ฐ์-์๋น์ ๋ฌธ์ - ํ๋ก์ธ์ค ๋๊ธฐํ๋ ํ๋ก์ธ์ค ๊ด๋ฆฌ ๋ถ์ผ์์ ์ค์ํ ๋ถ์ผ์ด๋ค. ์์ ์ฅ๋ค์ ๋๊ธฐํ๋ฅผ ๊ณต๋ถํ๊ธฐ ์ํด ์ํ๊ณ์ข ๋ฌธ์ ๋ฅผ ์์๋ก ๋ค์ด์ ์ค๋ช
copycode.tistory.com
๋ฐ๋๋ฝ์ด๋?
ใ ใ
๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ ์กฐ๊ฑด 4๊ฐ์ง
1. mutual exclusion : ์ค์ง ํ๋์ ํ๋ก์ธ์ค๋ง ๋ฆฌ์์ค์ ์ ๊ทผ
2. hold and wait : ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ด๋ค ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง ์ํ์์ ๋ ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ์ฐจ์งํ๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํฉ
3. no preemption : ๊ฐ์ ๋ก ๋ฑ์ด๋ด์ง ๋ชปํจ. ์๋ฐ์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋์ค์ผ ํ๋ค
4. circular wait : ์ํ๊ตฌ์กฐ๋ก ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ
- ํด๊ฒฐ ๋ฐฉ์ : ๋ชจ๋ ์์์ ์ซ์๋ฅผ ๋ถ์ฌ์ ์ค๋ฆ์ฐจ์์ผ๋ก๋ง ์์ฒญ ๊ฐ๋ฅํ๊ฒ ํ๋ฉด ์ํ๊ตฌ์กฐ ํํผ ๊ฐ๋ฅ
- ํ์ค์ ์ผ๋ก๋, ๋ฐ๋๋ฝ ๊ฑธ๋ฆด ์ ์๋ ๋ชจ๋ ์์์ int๋ฅผ ๋ถ์ฌ์ฃผ๊ธฐ ์ด๋ ค์
๋ฐ๋๋ฝ์ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊น?
1. ์๋ฐฉ
- ๋ฐ๋๋ฝ์ ๋ค ๊ฐ์ง ์ ์ ๋ฅผ ์์ ๋ ๊ฒ
2. ํํผ
- resource allocation graph : ๋ชจ๋ ๊ฐ์ ์ ๋ํ ์์ธก ์๊ฐ์ ๊ณ์ฐํ๋ค, ์์ํ ๋น ๊ทธ๋ํ๋ฅผ ๊ณ์ ํ์ธํ๋ฉฐ ํผํ๋ค -> ์๋๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค -> ๊ทธ๋์ ๋์จ๊ฒ ๋ฑ ์ปค์ค ์๊ณ ๋ฆฌ์ฆ
- ๋ฑ ์ปค์ค ์๊ณ ๋ฆฌ์ฆ : ์์ ์ํ์ด๋ฉด ์ฃผ๊ณ , ์์ ์ํ๊ฐ ์๋๋ฉด ์์ค๋ค.
3. ํ์ง์ ํ๋ณต
4. ๋ฌด์
- ์ ์ธ๊ณ ์ด์์ฒด์ 99%๊ฐ ์ด ๋ฐฉ๋ฒ์ ์ฑํ
- ๋ฐ๋๋ฝ์ด ์์ฐ์ ์ผ๋ก ๋ฐ์ํ ์ ์๋ ํ๋ฅ ์ด ๋งค์ฐ ๋ฎ๊ธฐ ๋๋ฌธ. 24์๊ฐ ์ปดํจํฐ๋ฅผ ์ผ๋๋๋ค๊ณ ํ์ ๋, ์ผ๋ ์ ๋ช ๋ฒ ์๋ค.
+) ๋ฐ๋๋ฝ vs ๋ผ์ด๋ธ๋ฝ(live lock)
๋ผ์ด๋ธ๋ฝ์ด๋? ์ง์ ์ด ์๋ ์ํฉ์์ ์ฃฝ์ง ์๋๋ค
๋ผ์ด๋ธ๋ฝ ํด๊ฒฐ๋ฐฉ์ : ์์ ์์ฒญ ์๊ฐ์ ๋๋ค์ผ๋ก ํ๋ฉด ๋๋ค
+) ์์ฌํ๋ ์ฒ ํ์ ๋ฌธ์
https://dkswnkk.tistory.com/412
[OS] ์์ฌํ๋ ์ฒ ํ์๋ค ๋ฌธ์ (The Dining-Philosophers Problem)
์์ฌํ๋ ์ฒ ํ์๋ค ๋ฌธ์ (_The Dining-Philosophers Problem) ์๊ฐํ๊ณ ๋จน์ผ๋ฉด์ ๊ทธ๋ค์ ์์ ๋ฅผ ๋ณด๋ด๋ 5๋ช ์ ์ฒ ํ์๋ฅผ ๊ณ ๋ คํด ๋ด ์๋ค. ์ฒ ํ์๋ค์ ์ํ ํ ์ด๋ธ์ ๊ณต์ ํ๋ฉฐ, ์ด ํ ์ด๋ธ์ ๊ฐ๊ฐ ํ ์ฒ ํ์์
dkswnkk.tistory.com
Race Condition
๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณตํต ์์์ ๋ณํ์ ์ผ๋ก(concurrently) ์ฝ๊ฑฐ๋ ์ฐ๋ ๋์์ ํ ๋, ๊ณต์ฉ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ด ์ด๋ค ์์์ ๋ฐ๋ผ ์ด๋ฃจ์ด์ก๋์ง์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ์ํฉ.
Race์ ๋ป ๊ทธ๋๋ก ๋ ๊ฐ์ ์ค๋ ๋๊ฐ ํ๋์ ์์์ ๋๊ณ ์๋ก ์ฌ์ฉํ๋ ค๊ณ ๊ฒฝ์ํ๋ ์ํฉ.
ํ๋ก์ธ์ค์ race condition -> ์ปค๋์ฝ๋์์ ๋ฐ์
์ค๋ ๋์ race condition -> ๊ณต์ ์์์์ ๋ฐ์
Critical Section์ด๋?
๊ณต์ ๋ฆฌ์์ค์ ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๋ค์ด ๋์์ ์ ๊ทผํ์ฌ ๊ณ ์น๋ ๋ถ๋ถ์ผ๋ก, Race Condition์ด ๋ฐ์ํ ์ ์๋ ๊ตฌ๊ฐ.
critical section์ด ์ ์์ ์ผ๋ก ๋์ํ๊ธฐ ์ํด์๋ mutual execlusion์ ๋ณด์ฅํด์ผ ํ๋ค.
ex. ํ์ฅ์ค ์นธ์ ์ฌ๋ฌ๋ช ์ด ๋์์ ๋ค์ด๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ critical section์ด๋ค. ํ์ฅ์ค์ด๋ผ๋ critical section์ ๋ณดํธํ๊ธฐ ์ํด, ํ ์นธ์๋ ํ ๋ช ๋ง ๋ค์ด๊ฐ ์ ์๋๋ก mutual execlusion property๋ฅผ ๋ง๋ ๊ฒ!
Mutual Exclusion (์ํธ ๋ฐฐ์ )
ํ ํ๋ก์ธ์ค(์ค๋ ๋)๊ฐ ๊ณต์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค(์ค๋ ๋)๊ฐ ๊ทธ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ๋ง๋๋ค.
Lock
Mutual Exclusionํ ์ํ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด Lock์ด๋ค.
Lock์ ์๋ ๋ ๊ฐ์ ์ฐ์ฐ์ ์ง์ํ๋ค.
void acquire() : Wait until lock is free, then grab it
void release() : Unlock and wake up any thread waiting in acquire()
Requirements for Lock
- Mutual execlusion : critical section์ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ์ง์ ๊ฐ๋ฅ
- Progress : ๊ณต์ ๋ฆฌ์์ค๋ฅผ ์ํ๋ ์ฌ๋ฌ ์ค๋ ๋๋ค์ด ์์ ๋, ํ๋์ ์ค๋ ๋๋ critical section์ ์ง์ ํ ์ ์์ด์ผ ํ๋ค.
- Bounded waiting : starvation-free. ๊ธฐ๋ค๋ฆฌ๋ฉด ์ธ์ ๊ฐ๋ ๋ด ์ฐจ๋ก๊ฐ ์์ผ ํ๋ค.
ํ์ง๋ง ๊ธฐ๋ณธ์ ์ธ Lock์ผ๋ก๋ง Syncronization์ ๊ตฌํํ๊ธฐ์๋ ํ์ค์ ์ผ๋ก ๋ฌด๋ฆฌ๊ฐ ์๋ค.
๊ณ์ spin ํ๋ ๋ฐฉ์์ธ Lock๋ณด๋ค ๋ ์ฐ์ํ Syncronization ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋๊ฒ ์ธ๋งํฌ์ด์ ๋ฎคํ ์ค.
๋ฎคํ ์ค(MUTual EXclusive lock)๋?
- ๊ณต์ ๋ ์์์ ํ ํ๋ก์ธ์ค(์ค๋ ๋)๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ๋ง์์ค๋ค. (๋๊ธฐํ ๋์์ด ํ๋)
- ํ ์ค๋ ๋(ํ๋ก์ธ์ค)์ ์ํด ์์ ๋ ์ ์๋ key๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ํธ๋ฐฐ์ ๊ธฐ๋ฒ.
- contending ๋์์ ๋๋ busy-wait ํ๋ ๋ฐฉ๋ฒ๊ณผ blocked ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ๋ฝ ์์ ์(๋ฝ์ ๊ฑด ์ฌ๋)๋ง ๋ฝ์ ํด์ ํ ์ ์๋ค. (์ธ๋งํฌ์ด์๋ ๋ฝ ์์ ์๋ผ๋ ๊ฐ๋ ์ด ์๋ค)
- ์ธ๋งํฌ์ด๋ฅผ ์ฌ๋ฆฌ๋ ํจ์ ์๋ค์๋ค ๋ฎคํ ์ค๋ฅผ ๊ฑธ์ด์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
- Busy-wait (Spinlock) : ๋ฌธ๊ณ ๋ฆฌ๋ฅผ ๊ณ์ ํ๋ค๋ฉฐ ๊ธฐ๋ค๋ฆฐ๋ค.
- Blocked (Wait-Signal) : ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉ์ค์ด๋ผ ๋ฆฌ์์ค๋ฅผ ๋ชป ์ก๋ ์ํฉ์ผ ๋, ๋ฌธ๊ณ ๋ฆฌ๋ฅผ ๊ณ์ ๋๋ฆฌ๊ณ ์์ง ์๊ณ ์ ์๊ฒ sleep ํ๊ณ ์๋ค๊ฐ ๊นจ์ฐ๋ฉด ์ผ์ด๋๋ค.
(๊ต๊ณผ์์์๋ ๋ฎคํ ์ค๊ฐ ๋ณดํต spinlock์ ์ง์นญํ๋ค๊ณ ๋์์์ง๋ง, ํ์ค์์๋ blocked๋ฅผ ์ง์นญํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค!)
๊ทธ๋ผ ๋ชจ๋ ์ ์๊ฒ ๊ธฐ๋ค๋ฆฌ๋ฉด ์ข์ํ ๋ฐ, spinlock์ด ์ ํ์ํ ๊น? spinlock์ ์ฅ์ ์ด ์๋ค.
1. ๊ตฌํ์ด ๊ต์ฅํ ์ฝ๋ค. (blocking์ ๊ตฌํํ๋ ค๋ฉด ํ๋ก์ธ์ค๋ฅผ ์ ์ดํด์ผ ํ๋ค. ์ค์ผ์ค๋ฌ๋ ํ์.)
2. context switch ์ค๋ฒ ํค๋๊ฐ ์๋ค.
-> operation์ด ์งง์ contending์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์ ์ ์ํฉ์์๋ ํจ์จ์ ์ด๊ณ ์ฌ์ด ๋ฐฉ๋ฒ!
-> ๋ฐ๋ฉด, ๋ณดํธํด์ผ ํ๋ critical section์ด ๊ธด ๊ฒฝ์ฐ์๋, blocking ๋๋ ๋ฎคํ ์ค๊ฐ ํจ์จ์ ์ด๋ค.
+) ๋ฐ์ด๋๋ฆฌ ์ธ๋งํฌ์ด vs ๋ฎคํ ์ค์ ์ฐจ์ด
๋ฝ ์์ ๊ถ์ด ์๊ณ (๋ฎคํ ์ค) ์๊ณ (๋ฐ์ด๋๋ฆฌ ์ธ๋งํฌ์ด)!
์ธ๋งํฌ์ด -> ๋ฎคํ ์ค๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์ด
- ๊ณต์ ๋ ์์์ ์ฌ๋ฌ ํ๋ก์ธ์ค(์ค๋ ๋)๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ๋ง์์ค๋ค. (๋๊ธฐํ ๋์์ด ํ๋ ์ด์)
- ํ์ฌ ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ ์ค๋ ๋(ํ๋ก์ธ์ค)์ ์(S)๋ฅผ ๋ํ๋ด๋ ๊ฐ์ ๋์ด ์ํธ๋ฐฐ์ ๋ฅผ ๋ฌ์ฑํ๋ ๊ธฐ๋ฒ. S ๊ฐ์ด 1์ด ๋๋ฉด, ํ์ค์ ์ผ๋ก ๋ฎคํ ์ค์ ๋์ผํ๊ฒ ๋๋ค.
- Signaling mechanism.
# Wait() : decrease S by one, and wait until S >= 0
void wait(struct semaphore *sem) {
sem -> S--;
while (sem->S < 0); // S๊ฐ 0๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ ๊ณ์ ๋ฌดํ๋ฃจํํ๋ฉฐ ๋๊ธฐ
}
# Signal() : increase S by one
void signal(struct semaphore *sem) {
sem -> S++;
}
๋ชจ๋ํฐ -> ์ธ๋งํฌ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์ด
[์ด์์ฒด์ ] ๋ชจ๋ํฐ (Monitor)
์ธ๋งํฌ์ด์ ํ๊ณ์ Timing Errors๊ฐ ๋ฐ์ํ ์ ์๊ณ , ์ด๋ ์ถ์ ํ๊ธฐ์ ๋ชน์ ๊น๋ค๋กญ๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ด๋๋ฆฌ ์ธ๋งํฌ์ด๋ฅผ ์ฌ์ฉ ํ ์, ๊ฐ ํ๋ก์ธ์ค๋ค์ด wait->signal ์์๋ฅผ ์ง์ผ์ผํ๋๋ฐ ์ด๋ฅผ ์งํค์ง ์์
velog.io
๋ฌผ๋ฆฌ์ฃผ์๋ฅผ ์ฐ๋ฉด ๋๋๋ฐ ์ ๊ฐ์์ฃผ์๋ฅผ ์ฐ๋๊ฐ? (๊ฐ์์ฃผ์๊ฐ ๋ฑ์ฅํ๊ฒ ๋ ๋ฐฐ๊ฒฝ)
- ์ค์ ๋ฌผ๋ฆฌ์ฃผ์์ ์ด๋์ ์ฌ๋ผ๊ฐ์ง ๋ชฐ๋ผ์ ๋์ค์ ๋ฐ์ธ๋ฉ์ ํ๊ฒ ๋ค!
- ๊ทธ๋ ๊ฒ ํ๋๊น ๊ฐ๋ฐ์ ํธ์์ฑ๋ ์ข๋ค
- base bound ์ฒดํฌ
๋ ผ๋ฆฌ์ฃผ์(=๊ฐ์์ฃผ์) : ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐํ๋ ์ฃผ์
๋ฌผ๋ฆฌ์ฃผ์ : ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
๊ฐ์์ฃผ์์ bound๋ฅผ ๋ํ๋ฉด ๋ฌผ๋ฆฌ์ฃผ์๊ฐ ๋์จ๋ค. ์ด๊ฑธ ํ๋๊ฒ MMU
๋ฉ๋ชจ๋ฆฌ ํํธํ
- internal fragmentation (๋ด๋ถ๋จํธํ)
partition์์ ํ ์์
์ด ์ฐจ์งํ๊ณ ๋จ์ ์์ญ์ ์ฌ์ฉํ ์ ์๋๋ฐ, ์ด ๋ถ๋ถ์ internal fragmentation์ด๋ผ๊ณ ํจ.
- external fragmentation (์ธ๋ถ๋จํธํ)
ํ partition ์์ญ๋ณด๋ค ํ๋ก๊ทธ๋จ์ด ์ปค์ ํ ๋น ์์ฒด๋ฅผ ํ ์ ์์ด ์์ญ ์ ์ฒด๊ฐ ๋ญ๋น๋ ๋, ์ด ๋ถ๋ถ์ external fragmentaion์ด๋ผ๊ณ ํจ.
๋ฉ๋ชจ๋ฆฌ ํํธํ ํด๊ฒฐ ๋ฐฉ๋ฒ
- Binding
- Fragment
1. Segmentation ๊ธฐ๋ฒ (๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ, ๋ด๋ถ ๋จํธํ ํด๊ฒฐ)
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ๋ค๋ฅธ ๋ ผ๋ฆฌ์ ๋จ์์ธ segment๋ก ๋ถํ ํด์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น. (๋์ ํ ๋น์์ผ๋ก ๊ฐ๋ณ๊ธธ์ด)
mapping์ ์ํด segment table์ด ํ์ํ๋ค.
Segment table
ํ๋ก์ธ์ค๊ฐ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋งํผ ํ ๋นํด ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ด๋ถ๋จํธํ ๋ฌธ์ ๋ ์ผ์ด๋์ง ์์ง๋ง, ์ค๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ฉด ์๊ธฐ๋ ์ธ๋ถ๋จํธํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
2. Paging ๊ธฐ๋ฒ (๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ, ์ธ๋ถ ๋จํธํํด๊ฒฐ)
address space๋ฅผ ์ฐ์์ ์ผ๋ก ํ ๋นํ์ง ์๊ณ , page ๋ผ๋ ๋จ์๋ก ์ชผ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ.
๋จผ์ , ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ page ๋จ์๋ก ์๋ฅด๊ณ , ์ค์ physical ๋ฉ๋ชจ๋ฆฌ(ex. RAM)๋ page ๋จ์๋ก ์ชผ๊ฐ ๋ค. ์ด ๋ ์ชผ๊ฐ์ง physical memory๋ฅผ frame์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ทธ๋ฆฌ๊ณ virtual memory์ page๋ฅผ physical memory์ frame์ผ๋ก ๋งคํํ๋ค.
(= LA์ PA๋ฅผ ๊ฐ์ ํฌ๊ธฐ์ page๋ก ์ชผ๊ฐ ๋ค, page table์ด ์ด ๋์ ๋งคํํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ)
์ด๋ ๊ฒ paging์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ฉด, external fragmentation์ด ๋ฐ์ํ์ง ์๋๋ค. internal fragmentation์ ๋ฐ์ํ ์ ์์ง๋ง ์น๋ช ์ ์ธ ์ ๋๋ ์๋๋ค.
Page table
- Linear page table
๋ชจ๋ virtual address์ page๋ฅผ ์์๋๋ก ๋ด์๋์ page table์ด๋ค.
์ฆ, vpn (virtual page number) 0๋ฒ๋ถํฐ N๋ฒ๊น์ง ์ญ์ฑ ๋๋ ค๋์ ๊ฒ์ธ๋ฐ, ์ด๋ ํ๋ ์ปดํจํฐ ํ๊ฒฝ์์๋ ์ฌ์ฉ๋์ง ์๋๋ค.
- Hierarchical page table
์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, "์์ฐ๋ page table์ ํ ๋นํ์ง ์๊ณ ์๋ค๊ฐ ํ์ํ ๋๋ง ํ ๋นํ๋ฉด ๋์ง ์์๊น?" ๋ผ๋ ๋ฐฉ๋ฒ์ด hierarchical page table์ด๋ค.
outer page table๊ณผ page table์ ๋๋์ด์, ์ฌ์ฉํ๋ outer page table๋ง ํ์ page table์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
์์ ๊ฐ์ด Virtual Address๋ outer page table entry์ ์์น๋ฅผ ๋ํ๋ด๋ p1, page table entry์ ์์น๋ฅผ ๋ํ๋ด๋ p2, page frame์์ ์ค์ ์์น๋ฅผ ๋ํ๋ด๋ d๋ก ๊ตฌ์ฑ๋๋ค.
ํ๋ก์ธ์ค๋ ๊ฐ์ ์์ ์ VA(Virtual Address)๋ง ๋ค๊ณ ์์ง๋ง, ์ฌ์ค PA(Pyhsical Address)๋ ์๋ค.
MMU๋ PT(Page Table) ๋ฅผ ์ฌ์ฉํด์ VA(Virtual Address) ๋ฅผ PA(Pyhsical Address) ๋ก translate ํ์ฌ ์ฌ์ฉํ๋ค. ๋ง์ฝ Invalid bit ๊ฐ์๊ฒ ์๋ค๋ฉด page fault๋ฅผ ๋ง๋ ๋ค.
TLB (Translation Lookaside Buffer)๋?
์ค์ page table์ ์ฐพ์๋ณด์ง ์๊ณ ๋น ๋ฅด๊ฒ pfn์ ์ฐพ์ ์ ์๊ฒ ํ๋ ํ๋์จ์ด ๋ก์ง. (TLB๋ ์บ์์ ์ ์ฅํ๋ค)
Hierarchical page table์ ์ฌ์ฉํ๋, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋ฒ ์ฝ์ ๋ ์ฌ๋ฌ depth์ ํ์ด์ง ํ ์ด๋ธ์ ์ฝ์ด์ผ ํ๋๋ฐ, ์ค๋ฒํค๋๊ฐ ๋๋ฌด ํฌ๋ค -> VA (Virtual Address)๋ฅผ PA (Physical Address)๋ก ๋ณํํ๋๋ฐ ๊ต์ฅํ ๋ง์ ์๊ฐ์ด ํ์ํ๋ค.
๊ทธ๋์ TLB ๋ฑ์ฅ. ์ต๊ทผ์ translate ํ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฅํด๋๋ฉด ํธํ๊ฒ ๋ค.
TLB๋ vpn๊ณผ, vpn์ ๋งคํ๋๋ pfn์ ๊ฐ์ง๊ณ ์๋๋ฐ, ๋ง์ฝ ์ด๋ค vpn์ด TLB์ ์์ผ๋ฉด, page table์ ๋ค์ ธ๋ณด์ง ์๊ณ ๋ ๋ฐ๋ก pfn์ ์ ์ ์๋ค.
ํ์ง๋ง ํ๋ก์ธ์ค๊ฐ ๋ฐ๋ ๊ฒฝ์ฐ TLB๋ฅผ ๋ชจ๋ flush ํด์ค์ผ ํ๋ค๋ ๋ฌธ์ ์ ์ด ์๋ค. (TLB์ pid๋ฅผ ์ถ๊ฐ์์ผ flush ํด์ฃผ์ง ์์๋ ๋๋ TLB๋ ๋ง์ด ์ฌ์ฉ๋๋ค.)
https://ddongwon.tistory.com/49
22. ํ์ด์ง(Paging)๊ณผ ํ์ด์ง ํ ์ด๋ธ(Page table)
ํ์ด์ง๊ณผ ํ์ด์ง ํ ์ด๋ธ์ ํ๋ ์ด์์ฒด์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ปจ์ ์์ ์์ฃผ ์ค์ํ ๊ฒ์ด๋ฏ๋ก ์ ์ ๋ฆฌํด๋์! 1. ํ์ด์ง(Paging) address space๋ฅผ ์ฐ์์ ์ผ๋ก ํ ๋นํ์ง ๋ง๊ณ , ํ์ด์ง๋ผ๋ ๋จ์๋ก ์ชผ๊ฐ์ ์ฌ์ฉ
ddongwon.tistory.com
+) Page Fault๊ฐ ๋ฐ์ํ ๋ ์ด๋ป๊ฒ ๋ ๊น?
1. OS๊ฐ (MMU์ ์๋) page table์ ๋ค์ ธ๋ณธ๋ค
2. ์์ผ๋ OS์ ํธ๋ค๋ฌ์๊ฒ ๊ฒฐ์ ๊ถ์ ๋๊ธด๋ค
3. OS๊ฐ Back Store(์ค์๊ณต๊ฐ?)์ ์๋ page๋ฅผ ์ฐพ๋๋ค (Back Store ์ค์ !!)
4. ๋ฌผ๋ฆฌ ๊ณต๊ฐ์ ์ฐพ์ page๋ฅผ ์ฌ๋ฆฐ๋ค
5. page table์ ์ ๋ฐ์ดํธ ํด์ค๋ค
6. ์๊น ์์ด์ ์คํจํ๋ instruction ๋ค์ ์คํ
Swapping
- ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ์ํฉ์ด ๋ฐ์ํ๋ฉด, ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๋ ํ๋ก์ธ์ค ์ค ์ ์์ฐ๋ ํ๋ก์ธ์ค์ ๋ด์ฉ์ ํต์งธ๋ก ๋์คํฌ(ex. ssd)์ ์จ๋๊ณ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋น ๊ณต๊ฐ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ๋๋ฆฌ๋๋ฐ ์ฌ์ฉํ์!
- Swap out : ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฝ ์ฐผ์ ๋ ๋์คํฌ๋ก ๋ด๋ณด๋ด๋ ๊ฒ
- Swap in : ๋์คํฌ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ
- Swapping์ ์ฅ์ : ์ ์ฒด ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์ ํฉ์ด ํ์ฌ ๋ด๊ฐ ๊ฐ์ง ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ ๋ง์ ์ ์๋ค!
- ex. ๋ด ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 10๊ธฐ๊ฐ๋ฐ์ ์๋์ง๋ง, ๋ด๊ฐ ๋๋ฆฌ๊ณ ์๋ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉ์ค์ธ ๋ฉ๋ชจ๋ฆฌ์ ํฉ์ด ์๋ฐฑ๊ธฐ๊ฐ๊ฐ ๋ ์ ์๋ค.(ํ๋๋์คํฌ ๊ณต๊ฐ๋ง ์ถฉ๋ถํ๋ค๋ฉด..)
- Swapping์ ๋จ์ : ์ค๋ฒํค๋๊ฐ ํฌ๋ค.
2GB ํ๋ก์ธ์ค ํ๋๋ฅผ swap out ํ๋๋ฐ 2.7์ด ์ ๋ ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑ๋ฅผ ๋ค์ ์ฝ์ด๋ค์ด๋ ค๋ฉด 2.7์ด๊ฐ ๋ ๊ฑธ๋ฆฐ๋ค.
2GB ํ๋ก์ธ์ค๋ฅผ ํต์งธ๋ก ๋ฐ๊พธ๋ ค๋ฉด 5์ด ์ด์ ๊ฑธ๋ฆฐ๋ค..
-> ํ๋ก์ธ์ค ์ ์ฒด address space๋ฅผ ๋์คํฌ์ ๋ฃ๊ณ ๋นผ๋๊ฒ ์๋๋ผ, page ๋จ์๋ก ์ชผ๊ฐ์ ๋ฃ๊ณ ๋นผ์!
-> Demand Paging
Demand Paging
์๋ swapping์ ํ๋ก์ธ์ค ์ ์ฒด๋ฅผ ๋ฃ๊ณ ๋นผ๋ ๊ฐ๋ ์ด์๋ค.
demand paging์, page ๋จ์๋ก ๋ฃ๊ณ ๋นผ๋ ๊ฐ๋ !
๋ฑ ํ์ํ ๊ฒ๋ง ๋ฉ๋ชจ๋ฆฌ๋ก ๋ถ๋ฌ๋ค์ด๊ณ , ๋๋จธ์ง๋ ์ ์ฅ์ฅ์น์ ๋์.
+) ๋ฐ๋ ๊ฐ๋ ์ด PrePagingPrepaging - ๋น์ฅ ํ์ํ์ง ์์ง๋ง ์ง์ญ์ฑ์ ๊ณ ๋ คํด ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๋๊ฑฐDemand Paging - "์๊ตฌ"ํ ๋๋ง ๊ฐ์ ธ์ค๋๊ฑฐ (์ง๊ธ ๋น์ฅ ํ์ํ๊ฑฐ)
Main memory์ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๋, P2๊ฐ ๋ ๋ง์ page๋ฅผ ์์ฒญํ๋ค.
์ด ๋, Demand Paging ๋์ ๊ณผ์
1. OS๊ฐ page replacement policy์ ์ํด victim page๋ฅผ ์ ํํ๋ค.
2. ํด๋น page์ ์๋ ๋ด์ฉ์ ๋์คํฌ์ ์๋ swap file์ ์ฎ๊ธด๋ค.
3. PTE๊ฐ swap out๋ page๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๊ฐฑ์ ํ๋ค. (=ํด๋น page๋ ์ด์ ๋์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์์ง ์๊ณ swap file์ ์์ด.)
4. victim page๋ ์ด์ ์์ ๋กญ๊ฒ ํ ๋น ๊ฐ๋ฅํ๋ค. -> P2์๊ฒ ํ ๋นํด์ค๋ค.
demand paging์ ์ํฅ๋ ฅ์ ์ง์ญ์ฑ์ ๋ฐ๋ฅธ๋ค.
- Temporal locality : ํ ๋ฒ ์ฐธ์กฐํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ค์ ์ฐธ์กฐํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- Spatial locality : ์ฐธ์กฐํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ทผ์ฒ๊ฐ ์กฐ๋ง๊ฐ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
์ค๋ ์ฑ (Thrashing)
demand paging์ ์ฌ์ฉํ๋ ์ํฉ์์, ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ๊ฒ ๋ ๋ page fault ์จ์ด ๋์ ๊ฒ์ ์๋ฏธํ๋ฉฐ CPU ์ด์ฉ๋ฅ ์ด ๊ธ๊ฒฉํ ๋จ์ด์ง๋ ํ์ (์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ)
Thrashing ๋ฐ์ ๋ฐฉ์ง
- ์ํน์ ์๊ณ ๋ฆฌ์ฆ : page fault๊ฐ ๋ฐ์ํ์ ๋ ๋์คํฌ๋ก ์๋ค๊ฐ๋ค ํ๋ ์๊ฐ์ด ๊ธฐ๋๊น, ์ฌ๋ฌ๋ฒ ํ ๊ฑธ ํ๋ฒ์ ์ฒ๋ฆฌํ๋ ๊ฐ๋ ..?
https://zangzangs.tistory.com/144
[OS] ์ค๋ ์ฑ(thrashing)
์ค๋ ์ฑ(thrashing) ์๋ ํ์ธ์? ์ฅ์ฅ์ค์ ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ํํ๊ฒ ์ํ๋๊ธฐ ์ํด์๋ ์ผ์ ์์ค ์ด์์ ํ์ด์ง ํ๋ ์์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น ๋ฐ์์ผ ํฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ๋์ํ๋๋ฐ ํ์ํ ์ต
zangzangs.tistory.com
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ (page replacement policy)
- FIFO (First in First out) : ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ(=์ค๋๋) ํ์ด์ง๋ฅผ ๊ต์ฒด
- ๊ฐ๋จํ๊ณ ์ด๊ธฐํ ์ฝ๋์ ๋ํด ์ ์ ํ ๋ฐฉ๋ฒ. Belady's Anomaly(FIFO Anomaly) ๋ฐ์ ๊ฐ๋ฅ.
- LRU (Least Recently Used) : ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด
- ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์๋ ๋ฐ์ดํฐ๋ผ๋ฉด ์์ผ๋ก๋ ์ฌ์ฉํ ํ๋ฅ ์ด ์ ์ ๊ฒ์ด๋ค. ์๊ฐ ์ง์ญ์ฑ(temporal locality) ์ฑ์ง ๊ณ ๋ ค.
- ๋ณํ์ด ๋ง๋ค! ๊ทธ ์ค ๊ฐ์ฅ ์ค์ํ๊ฒ Second Chance Algorithm (=Clock Algorithm)
- LFU (Least Frequently Used) : ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ๋ฎ์ ํ์ด์ง๋ฅผ ๊ต์ฒด
- ๋จ์ : ๊ฐ์ฅ ์ต๊ทผ์ ๋ถ๋ฌ์จ ํ์ด์ง๊ฐ ๊ต์ฒด๋ ์ ์์.
- MFU (Most Frequently Used) : ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ๋ง์ ํ์ด์ง ๊ต์ฒด
- ๊ฐ์ : ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ํ์ด์ง๊ฐ ์์ผ๋ก๋ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ค.
[OS] ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ - FIFO/LRU/LFU/MFU/NUR
๐ก ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ ์ด์์ฒด์ ๋ ์ฃผ๊ธฐ์ต์ฅ์น๋ณด๋ค ๋ ํฐ ์ฉ๋์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ง ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฌํ์ฌ ์ฌ์ฉํ๋ค. ์ด๋ฅผ ๊ฐ์๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฒ์ด๋ผ ํ๋ค. ํ์ด์ง ๊ธฐ
doh-an.tistory.com
Shared Memory
forkํ ๋ ๋ ๊ฐ(parent, child)์ VA๊ฐ ์๋ก ๊ฐ์ PA๋ฅผ ๊ฐ๋ฆฌํค๋๋ก PT(Page Table)๋ง ๋ง๋ค์ด์ฃผ๋ฉด, memory copy๋ฅผ ํผํ ์ ์๋ค.
๊ทผ๋ฐ ๋ฌธ์ ์ !
๋ถ๋ชจ๋ ์์ ์ค ํ๋๊ฐ write ํ๋ค๋ฉด ๋ค๋ฅธ ํ๋๋ ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ณด๊ฒ ๋๋ค.
๊ทธ๋์ write ํ ๋ copyํ๋ copy-on-write ๊ฐ๋ ์ด ์๊ธด ๊ฒ์ด๋ค.
Copy-on-Write
parente process์ ์ด๋ฏธ์ง๋ฅผ child์ ๋ณต์ฌํ์ง ์๊ณ parent process๊ฐ ๊ฐ์ง๊ณ ์๋ pysical memory์ ์ฃผ์๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ์์ ํตํด child process๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
copy on write๋ ๊ธฐ๋ณธ์ ์ผ๋ก fork ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ์ด ์๋ค.
fork๋ parent process๋ฅผ ์ด์ฉํด์ child process๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ฒ์ผ๋ก ๋ณผ ์ ์๋ค. ๋๋ถ๋ถ์ ์์ ํ๋ก์ธ์ค๋ค์ ์ดํ์ exec๋ฅผ ํด์ ์๋ก์ด process๋ก overwrite ํ๋๋ฐ, ๊ทธ๋ฌ๋ฉด ๋ถ๋ชจ๋ก๋ถํฐ ๋ณต์ฌํด์จ ํ์ด์ง๋ค์ ๋ค ์ธ๋ชจ์๋ ๊ฒ์ด ๋๊ณ ๋ง๋ค.
๋ณต์ฌ๋ฅผ ํ๊ณ ๋ฐ๋ก exec๋ฅผ ํตํด ์๋ก์ด process๋ฅผ ๋ง๋ค์ด๋ผํ ๋ฐ ๊ตณ์ด ๋ณต์ฌ๋ฅผ ํ ํ์๊ฐ ์์๊น? ๋ผ๋ ์๋ฌธ์ ์ํด ํ์ํ ๊ฒ์ด copy on write ์ด๋ค.
https://hyeo-noo.tistory.com/83
[XV-6 ์ด์์ฒด์ ] Copy-on-Write #1
Copy-on-Write๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ์์๋ณด์ Copy on Write๋ ๊ธฐ๋ณธ์ ์ผ๋ก forks ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ์ด ์๋ค. forks๋ parent process๋ฅผ ์ด์ฉํด์ child process๋ฅผ ๋ง๋ค์ด ๋ด๋ ๊ฒ์ผ๋ก ๋ณผ ์ ์๋ค. (๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ชจ ํ๋ก
hyeo-noo.tistory.com
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต๊ตฌ์กฐ
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ๋ ์ง์คํฐ, ์บ์, ๋ฉ๋ชจ๋ฆฌ(RAM), ํ๋๋์คํฌ(์ ์ฅ์ฅ์น)๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ๋ ์ง์คํฐ, ์บ์๋ CPU ๋ด๋ถ์ ์กด์ฌํด ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋ค
- ๋ฉ๋ชจ๋ฆฌ๋ CPU ์ธ๋ถ์ ์กด์ฌํด ๋๋ฆฌ๊ฒ ์ ๊ทผํ๋ค
- ํ๋๋์คํฌ๋ CPU๊ฐ ์ง์ ์ ๊ทผํ ์ ์๋ค. ํ๋ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ์ด๋์ํค๊ณ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ทผํด์ผ ํ๋ค
Cache Memory๋?
- ์ฃผ๊ธฐ์ต์ฅ์น(CPU)์์ ์์ฃผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๊ณ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๋ฉ๋ชจ๋ฆฌ
- ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ CPU ์ฌ์ด์ ์์น
- ์บ์์ ์ ์ค๋ฅ ์ ๊ทน๋ํ ์ํค๊ธฐ ์ํด์๋ CPU๊ฐ ์ฐธ์กฐํ ์ ๋ณด์ ๋ํ ์์ธก์ด ์ ๋์ด์ผ ํจ. ์ด๋ ๋์ค๋ ๊ฐ๋ ์ด ์บ์์ ์ง์ญ์ฑ(Locality)
- CPU์ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ "CPU ์์์ ์บ์ ์ญํ ์ ํ๋ ์ ์ฅ ์ฅ์น"๋ผ๋ ๋ป์ด๋ค. '์บ์' ์์ฒด๋ ํน์ ํ ํ๋์จ์ด๋ฅผ ๊ฐ๋ฆฌํค์ง ์๋๋ค. ์บ์๋ ๋ ๋ณดํธ์ ์ด๊ณ ์ถ์์ ์ธ '์ญํ '์ด๋ค.
์บ์์ ์ง์ญ์ฑ(Locality)์ด๋?
๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ด ์๊ฐ์ -๊ณต๊ฐ์ ์ผ๋ก ๊ฐ๊น๊ฒ ๋ฐ์ํ๋ ๊ฒ์ ๋ปํจ.
- ์๊ฐ ์ง์ญ์ฑ : ์ต๊ทผ์ ์ฐธ์กฐ๋ ๋ฐ์ดํฐ๊ฐ ๊ณง ๋ค์ ์ฐธ์กฐ๋๋ ํน์ฑ
- ๊ณต๊ฐ ์ง์ญ์ฑ : ์ต๊ทผ์ ์ฐธ์กฐ๋ ๋ฐ์ดํฐ์ ์ธ์ ํ ๋ฐ์ดํฐ๊ฐ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ํน์ฑ
Caching Line์ด๋?
์บ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ ๋ฌถ์ด๋ ๊ธฐ๋ณธ์ ์ธ ๋จ์.
์บ์ฑ๋ผ์ธ์ CPU๊ฐ ์บ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ชฉ์ ๋ฐ์ดํฐ์ ๋ฐ๋ก ์ ๊ทผํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค.
์บ์ฑ๋ผ์ธ์ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์๋๋ฐ, ๋ํ์ ์ผ๋ก Full Associative, Set Associative, Direct Map ๋ฑ์ด ์๋ค.
+) ์บ์ฑ๋ผ์ธ์ด ์กด์ฌํ๋ ์ด์ ?
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋นํด ํฌ๊ธฐ๊ฐ ๋งค์ฐ ์๊ธฐ ๋๋ฌธ์, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ 1:1 ๋งค์นญ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์บ์๊ฐ ์๋ฌด๋ฆฌ CPU์ ๊ฐ๊น๊ฒ ์์นํ๋๋ผ๋, ๋ฐ์ดํฐ๊ฐ ์บ์ ๋ด์ ์ด๋๊ณณ์ ์ ์ฅ๋์ด ์๋์ง ์ฐพ๊ธฐ ์ด๋ ต๋ค๋ฉด, ๋นํจ์จ์ ์ธ ์์คํ ์ด ๋๋ค.
๊ทธ๋์ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ "์บ์ฑ ๋ผ์ธ"์ด๋ผ๋ ๋จ์์ ๋ฌถ์์ผ๋ก ์ ์ฅํ๋๋ฐ, ์ด ๋ ๋น๋ฒํ๊ฒ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ์ฃผ์๋ค์ด ์ผ์ ํ ํ๊ทธ๋ค๋ก ๋ฌถ์ฌ์์ผ๋ฉด ์ฐพ๊ธฐ ์ฌ์์ง ๊ฒ์ด๋ค.
[์ด์์ฒด์ ] ์บ์ฑ ๋ผ์ธ (Caching line)
์บ์ฑ ๋ผ์ธ (Caching line)์ ๋ํด ์ค๋ช ํ์ธ์ Keyword Script Additional Reference Book - ํผ์ ๊ณต๋ถํ๋ ์ปดํจํฐ ๊ตฌ์กฐ+์ด์์ฒด์
velog.io
https://coding-zzang.tistory.com/38
[์ด์์ฒด์ /OS] ์บ์(Cache)์ ์ง์ญ์ฑ(Locality) & ์บ์ฑ๋ผ์ธ(Caching Line)
Cache ์บ์ ๋ฉ๋ชจ๋ฆฌ(cache Memory) ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ? ์ฃผ๊ธฐ์ต์ฅ์น์์ ์์ฃผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๊ณ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๋ฉ๋ชจ๋ฆฌ ์๋๊ฐ ๋น ๋ฅธ ์ฅ์น์ ๋๋ฆฐ ์ฅ์น๊ฐ์ ๋ณ๋ชฉ ํ์์ ์ค์ฌ์ฃผ
coding-zzang.tistory.com
'๐ STUDY' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
240306 CS ์คํฐ๋ - ์ด์์ฒด์ ์ง๋ฌธ ๋ชจ์2 (0) | 2024.03.05 |
---|---|
240228 CS ์คํฐ๋ - ์ด์์ฒด์ (0) | 2024.02.26 |
240213 CS ์คํฐ๋ - ์ด์์ฒด์ (0) | 2024.02.13 |
240207 CS ์คํฐ๋ - ์น (0) | 2024.02.05 |
240130 CS ์คํฐ๋ - ๋คํธ์ํฌ (0) | 2024.01.30 |