[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 |