메모리 계층
- 레지스터
- CPU 안에 있는 작은 메모리, 휘발성, 가장 빠른속도, 가장 적은 용량
- 캐시
- 데이터를 미리 복사해 놓는 임시 저장소
- 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
- 위치는 CPU의 레지스터와 주기억장치 사이에 위치한다
- 같은 의미로 캐시 계층이라는 의미는 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 의마하며
캐시 메모리와 보조기억장치 사이에 있는 주기억장치를 보조기억장치의 캐싱 계층이라고 부를 수 있다. - 휘발성, 빠른속도, 적은 용량을 같는다. 캐시는 L1 ~ L3 까지있다.
- 주기억장치
- RAM을 지칭하며 휘발성, 보통 속도, 용량 보통
- 보조기억장치
- 휘발성, 낮은 속도, 큰 용량
캐시
캐시를 데이터 기반으로 설명한다면 다음 특징과 함께 설명할 수 있다.
시간 지역성 [ temporal locality ]
- 최근 사용한 데이터를 접근하는 특성
공간 지역성 [ spatial locality ]
- 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성
- 배열을 접근할 때를 예로 들 수 있다.
다음은 캐시에서 데이터를 찾았을 때와 못 찾앗을 때를 부르는 단어를 알아보자
- 캐시히트
- 캐시에서 데이터를 찾았을 때
- 캐시미스
- 캐시에 데이터가 없어 주기억장치에서 데이터를 가져올 때
웹 브라우저의 캐시
실제 웹에서 캐시 역할을 하는 저장소들을 살펴보자.
쿠키
- 만료기한이 있는 key-value 저장소
- 최대 4KB 까지 저장가능
- 클라이언트와 서버에서 만료기한을 정할 수 있으며 보통 서버에서 지정한다.
- 서버가 응답할 때 Header에 Set-Cookie 필드를 통해 쿠키를 지정한다.
- 쿠키를 서버로부터 받으면 클라이언트는 동일한 서버에 reqeust 시 쿠키에 대한 데이터를 함께 전송하다.
- 위 특징을 통해 아래 와 같은 목적으로 사용된다.
- 세션 관리: 서버에 저장해야할 로그인, 장바구니, 게임스코어 등 개인정보 관리
- 개인화: 각 사용자에게 적절한 페이지를 보여줌 (.사용자 선호 테마 등 세팅 등)
- 트래킹: 사용자의 행동과 패턴 분석을 기록하는 용도
세션 스토리지
- 만료기한이 없는 key-value wjwkdth
- 탭 단위로 세션 스토리지를 생성하며 탭을 닫을 때 데이터가 삭제된다.
- 5MB까지 저장 가능
- 클라이언트에서만 수정 가능
로컬 스토리지
- 만료기한이 없는 key-value 저장소
- 브라우저를 닫아도 유지되며 도메인 단위로 저장
- 10MB 까지 저장 가능
- 클라이언트에서만 수정 가능
데이터 베이스의 캐싱 계층
데이터베이스 시스템을 구축할 때 메인 데이터 베이스 위에 redis 데이터 베이스 계층을
"캐싱 계층"으로 둬서 성능을 향상 시키기도 한다.
메모리 접근 순서도
마지막으로 메모리를 실질적으로 어떤식으로 접근하는 지 그림으로 정리하며 마무리해보자.
여기서 주기억장치에서 가져온 데이터를 모두 캐시에 적재하는 것은 아니다.
왜냐하면 주기억장치와 용량의 큰 차이가 있기때문에 캐시 정책(예: LRU, FIFO 등)에 따라
어떤 데이터를 캐시에 올릴지 결정한다.
또한 여기서 캐시 메모리가 빠른이유가 나오는데 캐시는 우취도 가깝고 CPU 내부 버스 기반으로 작동한다.
하지만 캐시 미스가 발생하면 메모리에서 가져오게 되는데 이 때 시스템 버스를
기반으로 작동하기 때문에 다소 느리게 작동한다.
참고
'CS > OS' 카테고리의 다른 글
코어 / 프로세스 / 스레드, 동기 / 비동기, 직렬 / 동시 / 병렬 프로그래밍 (0) | 2024.10.23 |
---|---|
프로세스와 스레드 (0) | 2024.09.27 |
가상메모리 (0) | 2024.09.22 |
컴퓨터의 요소 (0) | 2024.09.21 |
운영체제 [ 역할과 구조, 시스템콜 ,커널 ] (1) | 2024.09.21 |