[CS/Operating System] - [Operating System] ์ด์์ฒด์ Caching [1]
์บ์ฑ์ ๊ธฐ๋ณธ ์ง์์ ๋ํด ๋ค๋ฃฌ ๋ถ๋ถ์ด Caching 1ํธ์ด๋ค.
[Operating System] ์ด์์ฒด์ Caching [1]
์๋ ๋ชจ๋ ๋ด์ฉ์ ์ ํ๋ธ[10๋ถ ํ ์ฝํก] ํํผ์ Chching(์บ์ฑ)๊ณผ ๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์์ต๋๋ค. ์ฌ์ค ๊ฐ๋ฐ๊ณต๋ถ๋ฅผ ์์ํ ์ง ์ผ๋ง ์๋๊ธฐ๋ ํ๊ณ , ํญ์ ํ๋์ฉ ํ๋์ฉ ์คํ
world-developer.tistory.com
์๋ ๋ชจ๋ ๋ด์ฉ์ ์ ํ๋ธ[10๋ถ ํ ์ฝํก] ํํผ์ Chching(์บ์ฑ)๊ณผ ๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์์ต๋๋ค.
โ๏ธ ์บ์์ ๋์์๋ฆฌ
Cache๋? ์์ฃผ ํ์ํ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ณต์ฌ๋ณธ์ ์ผ์์ ์ผ๋ก ์ ์ฅ, ๋ณด๊ดํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ณณ
๊ทธ๋ผ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ํ์ํ์ง ์๋์ง๋ ์ด๋ป๊ฒ ์ ์ ์์๊น?
โ๐ป ๋ฐ์ดํฐ ์ง์ญ์ฑ์ ์๋ฆฌ
๋ฐ์ดํฐ ์ง์ญ์ฑ์ ์๋ฆฌ๋ ๋ฐ์ดํฐ ์ ๊ทผ์ด ์๊ฐ์ , ๊ณต๊ฐ์ ์ผ๋ก ๊ฐ๊น๊ฒ ์ผ์ด๋๋ ๊ฒ์ ์๋ฏธํ๋ค. (์๊ฐ์ = ํ ๋ฒ ์ฐธ์กฐ๋ ๋ณ์๋ ์ ์ ํ์ ๋ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. / ๊ณต๊ฐ์ = ์ด๋ค ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋, ๊ทธ ๋ฐ์ดํฐ ๊ทผ์ฒ์ ์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.)
์๊ฐ ์ง์ญ์ฑ : ํน์ ๋ฐ์ดํฐ๊ฐ ์ ๊ทผ๋์์ ๋, ๊ฐ๊น์ด ๋ฏธ๋์ ๋ ํ๋ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒ์ด๋ค. (ex - for ์ ์กฐ๊ฑด ๋ณ์ i)
๊ณต๊ฐ ์ง์ญ์ฑ : ํน์ ๋ฐ์ดํฐ์ ๊ฐ๊น์ด ์ฃผ์๊ฐ ์์๋๋ก ์ ๊ทผ๋๋ ๊ฒฝ์ฐ (ex - ๋ฐฐ์ด์ ์์๋๋ก ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ์์)
for(i=0; i<3; i++){ // i ๊ณ์ ์ ๊ทผ(์๊ฐ์ )
data[i+1] = data[i] + 1; // 0, 1, 2 ๋ฐฐ์ด ์์ฐจ์ ์ ๊ทผ(๊ณต๊ฐ์ )
}
// ์คํ๊ฒฐ๊ณผ
data[1] = data[0] + 1;
data[2] = data[1] + 1;
data[3] = data[2] + 1;
์ ์ฝ๋๋ ์๊ฐ ์ง์ญ์ฑ๊ณผ ๊ณต๊ฐ ์ง์ญ์ฑ์ ์ถฉ์กฑํ๋ ์ฝ๋ ์์ .
์ด๋ ๊ฒ ๋ฐ์ดํฐ ์ง์ญ์ฑ์ ๋ฐ๋ผ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฒ ๋๋ค.
โ๐ป ์บ์ ํํธ์ ์บ์ ๋ฏธ์ค
CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ๊ทผํ๊ธฐ ์ ์ ์บ์๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ ๋ฐ์ดํฐ์ ์กด์ฌ์ฌ๋ถ๋ฅผ ํ์ธํ ๊ฒ์ด๋ค.
์บ์๋ฉ๋ชจ๋ฆฌ์๋ ๋ฐ์ดํฐ๊ฐ ์์์๋, ์์ ์๋ ์๋ค.
1๏ธโฃ ์บ์ HIT(์บ์ ์ ์ค)
์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
2๏ธโฃ ์บ์ MISS
ํด๋น ๋ฐ์ดํฐ๊ฐ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ด์ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผํ๋ค.
โ๐ป ์บ์ ๋งคํ
์บ์๋งคํ์ ์บ์๊ฐ ํํธ๋๊ธฐ ์ํด ๋งคํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
1๏ธโฃ ์ง์ ๋งคํ
๋ฉ๋ชจ๋ฆฌ๊ฐ 1-100์ด ์๊ณ , ์บ์๊ฐ 1-10์ด ์๋ค๋ฉด, 1:1~10, 2:1~20... ์ด๋ ๊ฒ ๋งคํ.
์ฒ๋ฆฌ๊ฐ ๋น ๋ฅด์ง๋ง ์ถฉ๋์ด ์ฆ์.
2๏ธโฃ ์ฐ๊ด ๋งคํ
์์๋ฅผ ์ผ์น์ํค์ง ์๊ณ ๊ด๋ จ ์๋ ์บ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งคํ.
์ถฉ๋์ด ์ ์ง๋ง ๋ชจ๋ ๋ธ๋ก์ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ฆผ
3๏ธโฃ ์งํฉ ์ฐ๊ด ๋งคํ
์ง์ ๋งคํ๊ณผ ์ฐ๊ด ๋งคํ์ ํฉ์ณ ๋์ ๊ฒ. ์์๋ ์ผ์น์ํค์ง๋ง ์งํฉ์ ๋ฌ์ ์ ์ฅํ๋ฉฐ ๋ธ๋กํ๋์ด์๊ธฐ ๋๋ฌธ์ ๊ฒ์์ ์ข ๋ ํจ์จ์ .
๋ฉ๋ชจ๋ฆฌ๊ฐ 1-100์ด ์๊ณ , ์บ์๊ฐ 1-10์ด ์๋ค๋ฉด, ์บ์ 1~5์๋ ๋ฉ๋ชจ๋ฆฌ 1~50์ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์์๋ก ์ ์ฅ
โ๐ป ์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋๋ค๋ฉด?(์บ์ ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ ์ ์ฑ ๊ณผ ์บ์์ ์ผ๊ด์ฑ)
CPU์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋์์ด ์๋๋ผ ์ ๋ ฅ(์ฐ๊ธฐ)ํ๋ ๋์์ด ๋ฐ์ํ๋ค๊ณ ํ์. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ณ๊ฒฝ๋๋ ์ฃผ์๊ฐ ์บ์ฑ๋ ์ํ๋ผ๋ฉด ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ๊ฒ์ด ์๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋๋ค.
๋ฐ๋ผ์ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์๋ ์ ๋ฐ์ดํธ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์ ์ธ์ ์ ๋ฐ์ดํธ๋ฅผ ํด์ฃผ๋์ ๋ฐ๋ผ ์ ์ฑ ์ด 2๊ฐ์ง๋ก ๋๋๋ค.
1๏ธโฃ Write Through ์ ์ฑ
์บ์๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฐ๋๋๋ง๋ค ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ ๋ฐ์ดํธ
+ ๋จ์ํ๊ณ ์บ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๊ด์ฑ ์ ์ง ๊ฐ๋ฅ,
- ๋งค๋ฒ ๋ฐ๊ฟ์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฆผ.
2๏ธโฃ Write Back ์ ์ฑ
์บ์๋ง ์ ๋ฐ์ดํธ ํ๋ค๊ฐ, ์ ๋ฐ์ดํธ ๋ ๋ฐ์ดํฐ๊ฐ ์บ์์์ ๋น ์ง๊ฒ ๋ ๋, ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ.
๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋์ง ํ์ธํ๊ธฐ ์ํด ์บ์ ๋ธ๋ก๋ง๋ค dirty ๋นํธ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด 1๋ก ๋ฐ๊ฟ์ค๋ค. ํด๋น ๋ฐ์ดํฐ๊ฐ ๊ต์ฒด๋ ๋ dirty bit๊ฐ 1์ด๋ผ๋ฉด ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ์
+ ์๋ ๋น ๋ฆ
- ์บ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ก ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๋ฐ์ ๊ฐ๋ฅ
์ฐธ๊ณ
https://www.youtube.com/watch?v=JBFT4KyEvoY ์ ํ๋ธ
๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋
ธํธ ์ฑ
'CS > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Operating System] ์ด์์ฒด์ Caching [1] (0) | 2024.03.07 |
---|---|
[์ด์์ฒด์ ] Chapter7. Synchronization Examples (0) | 2022.06.01 |
[์ด์์ฒด์ ] Chapter6. Synchronization Tools(๋๊ธฐํ) (0) | 2022.05.30 |