인프런 커뮤니티 질문&답변

김영빈님의 프로필 이미지
김영빈

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

캐시 #2. 캐시매핑 : 직접매핑, 연관매핑, 집합 - 연관매핑 ★★★

캐시매핑에 대해 질문드립니다

작성

·

326

0

안녕하세요? 좋은 강의 감사드립니다

꾸준한 업데이트와 친절한 답변에 정말 감사합니다 ㅠㅠ


캐시 매핑부분에 좀 이해되지 않는 부분이 있어 질문 드립니다.

직접 매핑 부분이 조금 헷갈리는데요

대략적인 방식은 알겠는데, 검색속도가 빠르다는 부분에서 의문이 좀 있습니다

말씀해주신 부분에 의하면, 특정 데이터의 블록이 0이라면 캐시에서 블록이 0인 부분을 확인하면 되기 때문에 속도가 빠르다 라고 말씀해주셨습니다

그런데 이 특정 데이터의 블록이 0이라는 것을 어떻게 확인하나요??

제 생각에는 결국 메모리의 영역까지 가서 원하는 데이터를 찾은다음, 그 데이터의 블록을 확인해야만 캐시메모리에 적재되는 블록을 확인할 수 있을 것 같은데 혹시 제가 잘못 이해한 부분이 있을까요??

 

*추가로, 수강평이벤트를 확인했는데, 혹시 이력서 첨삭(?)이나 한번 보고 어떤느낌인지 평가를 해주실 수도 있으신가요?
감사합니다!

 

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 김영빈님 ㅎㅎ

특정 데이터의 블록이 0이라면 캐시에서 블록이 0인 부분을 확인하면 되기 때문에 속도가 빠르다 라고 말씀해주셨습니다

그런데 이 특정 데이터의 블록이 0이라는 것을 어떻게 확인하나요??

>> 이 부분이 bd가 00인 라인에 구성천, 주홍철, 김건우 밖에 못들어간다 부분에서 bd가 00인 것을 확인하는 부분을 말씀하시는건가요?

제 생각에는 결국 메모리의 영역까지 가서 원하는 데이터를 찾은다음, 그 데이터의 블록을 확인해야만 캐시메모리에 적재되는 블록을 확인할 수 있을 것 같은데 혹시 제가 잘못 이해한 부분이 있을까요??

>> 데이터를 찾을 때 >> 캐시 >> 메모리 순으로 확인합니다.

추가로, 수강평이벤트를 확인했는데, 혹시 이력서 첨삭(?)이나 한번 보고 어떤느낌인지 평가를 해주실 수도 있으신가요?

>> 네 피드백드립니다.

감사합니다.

김영빈님의 프로필 이미지
김영빈
질문자

>> 이 부분이 bd가 00인 라인에 구성천, 주홍철, 김건우 밖에 못들어간다 부분에서 bd가 00인 것을 확인하는 부분을 말씀하시는건가요?

넵 맞습니다. 어떤식으로 bd가 0인것을 확인할 수 있는지가 궁금합니다.

큰돌님의 프로필 이미지
큰돌
지식공유자

  1. bd가 00, 01인 것은 변수를 캐시메모리에 할당할 때 정해집니다.

  2. 그리고 캐시메모리에 "매핑"을 해놓는 것입니다. 이 때문에 확인이라는 작업이 필요없습니다.

00 : 구성천

00 : 주홍철

00 : 김건우로요.

그렇게 한 다음 구성천이 나오면 00 부분의 캐시메모리를 쓰고 그 다음 또 주홍철이 나오면 스와핑이 일어나면서 해당 자리에 주홍철이 들어가게 되는 것입니다.

 

Q. 제 생각에는 결국 메모리의 영역까지 가서 원하는 데이터를 찾은다음, 그 데이터의 블록을 확인해야만 캐시메모리에 적재되는 블록을 확인할 수 있을 것 같은데 혹시 제가 잘못 이해한 부분이 있을까요??

>> 일단 데이터가 아니라 변수로 용어를 바꿀게요. 변수를 메모리에 할당할 때 이미 매핑이 되어있고 해당 변수를 쓸 때 해당 매핑되어있는 블록을 쓰게 되는 것입니다. 따라서 찾는 과정은 일어나지 않습니다.

사실 이 찾는다는 과정이라는 용어가 좀 애매하긴 해요. 자료구조적으로 생각해보면 찾는다는게 맞거든요. 예를 들어 map이란 자료구조에 00 : 홍철 이렇게 key, value 형태로 할당한 뒤 map[00] 을 통해 key를 통해 홍철이라는 값을 추출할 수 있거든요.

이게 O(logN) 정도의 시간복잡도가 걸립니다. 맵은 레드블랙 트리라는 자료구조를 써서 구현이 되어있고 이는 탐색, 삽입, 삭제, 수정에 O(logN)의 시간복잡도가 걸리거든요.

하지만, 운영체제에서 캐시매핑 - 직접매핑을 설명할 때 자료구조를 기반으로 설명하지는 않습니다. 매핑을 해놓고 해당 자리에 맞는 변수를 그저 참조한다는게 올바른 설명인 것같아요. 즉, 주홍철, 구성천이 들어올 때 그 변수에 맞는 자리인 00에 계속해서 들어간다고 생각하시면 될 것같아요.

감사합니다.

김영빈님의 프로필 이미지
김영빈

작성한 질문수

질문하기