일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 운영체제
- Kotlin
- db
- CS지식
- OS
- Database
- MVVM
- 개발
- React
- 액티비티
- 앱 개발
- 앱
- 메모리
- 디자인패턴
- 프로세스
- 스레드
- cs
- 안드로이드
- Operating System
- Android
- github
- reactnative
- 안드로이드 개발
- 리액트
- 앱개발
- 안드로이드 디자인 패턴
- 디자인 패턴
- 데이터베이스
- 코틀린
- 리액트네이티브
- Today
- Total
Tech Log
[Operating System] 캐시 본문
캐시
데이터를 미리 복사해 놓는 임시 저장소이자,
빠른 장치와 느린 장치의 속도 차이에 따른 병목 현상을 줄이기 위한 메모리.
캐시를 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고,
무언가를 다시 계산하는 과정을 생략하여 시간 절약할 수 있다.
캐싱을 할 때는 자주 사용하는 데이터를 기반으로 캐시를 직접 설정한다.
이때 자주 사용하는 데이터의 기준은 지역성으로 정한다.
지역성은 시간 지역성(temporal locality)과 공간 지역성(spatial locality)으로 나뉜다.
시간 지역성
최근 사용한 데이터에 다시 접근하려는 특성.
for(i in 0..10){
arr[i] = i
}
위와 같은 코드에서 시간 지역성을 기준으로 자주 사용하는 데이터는 i가 된다.
공간 지역성
최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하려는 특성.
앞의 코드에서 접근한 데이터를 이루고 있는 공간은 배열 arr인 것을 알 수 있다.
캐시의 구조
캐시 히트(cache hit)
캐시에서 원하는 데이터를 찾는 것, 그 데이터를 바로 사용한다.
제어 장치를 거쳐 데이터를 가져온다.
캐시히트의 경우 위치도 가깝고 CPU 내부 버스를 기반으로 작동하므로 빠르게 가져올 수 있다.
*CPU 내부 버스 : CPU 내부에 있는 장치를 연결하는 버스. BSB(Back-Side Bus), 즉 후면 버스라고 한다.
캐시 미스(cache miss)
원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾는다.
메모리로 가서 데이터를 가져오는 과정에서 시스템 버스를 기반으로 작동하므로 느리다.
*시스템 버스 : 메모리와 주변 장치를 연결하는 버스. FSB(Front-Side Bus), 즉 전면 버스라고 한다.
캐시 적중률(cache hit ratio)
캐시 히트가 되는 비율.
캐시 매핑
캐시가 히트되기 위해 매핑하는 방법. 레지스터와 RAM 간에 데이터를 주고 받을 때를 기준으로 설명.
레지스터는 굉장히 작고 RAM은 상대적으로 크므로 레지스터가 캐시 계층으로써 역할을 잘하려면 매핑이 중요하다.
- 직접 매핑(directed mapping) : 메모리가 1~100이 있고 캐시가 1~10이라면, 1:1~10 이렇게 매핑되는 것을 말한다. 처리가 빠르나 충돌이 잦다. 규칙을 정해서 매핑시키는 것이며, 이 규칙을 지키려면 캐시가 비효율적이게 교체되는 일이 잦다. 따라서, 충돌이 많으며 적중률도 낮은 매핑 방법이다. 다만 구현이 간단하다.
- 연관 매핑(associative mapping) : 순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑. 충돌이 적지만 모든 블록을 탐색해야 하므로 속도가 느리다. 하지만 정말 필요한 것들 위주로 저장할 수 있으므로 적중률은 높은 매핑 방법이다.
- 집합 연관 매핑(set associative mapping) : 직접 매핑과 연관 매핑을 합쳐놓은 것과 같다. 순서는 일치시키나 집합을 둬서 저장한다. 또한, 블록화가 되어 있으므로 검색은 더 효율적이다. 예) 메모리 1~100이 있고 캐시가 1~10 있다면 캐시 1~5에는 1~50의 데이터를 무작위로 저장시키는 것
웹 브라우저의 캐시
소프트웨어적인 대표적인 캐시로는 웹 브라우저의 쿠키, 로컬 스토리지, 세션 스토리지가 있다.
보통 사용자의 커스텀 정보나 인증 모듈 관련 사항들을 웹 브라우저에 저장해서,
추후 서버에 요청할 때 자신을 나타내는 아이덴티티나 중복 요청 방지를 위해 쓰인다.
쿠키
만료기한이 있는 키-값 저장소.
4KB까지 데이터를 저장할 수 있으며 만료기한을 설정할 수 있다.
클라이언트 또는 서버에서 만료기한 등을 정할 수 있는데 보통 서버에서 만료기한을 정한다.
일시적으로 가벼운 데이터를 저장한다.
예)다시 보지 않기 팝업창, 아이디-비밀번호 자동 완성
로컬 스토리지
만료기한이 없는 키-값 저장소.
10MB까지 저장할 수 있으며 웹 브라우저를 닫아도 유지되고 도메인 단위로 저장, 생성된다.
클라이언트에서만 수정 가능하다.
지속적으로 필요한 데이터를 저장한다.
예)자동 로그인
세션 스토리지
만료기한이 없는 키-값 저장소.
탭 단위로 세션 스토리지를 생성하며, 탭을 닫을 때 해당 데이터가 삭제된다.
5MB까지 저장가능하며 클라이언트에서만 수정이 가능하다.
일시적으로 필요한 데이터를 저장한다.
예)일회성 로그인, 비회원 장바구니
데이터베이스의 캐싱 계층
데이터베이스 시스템을 구축할 때도 메인 데이터베이스 위에 레디스(redis) 데이터베이스 계층을 캐싱 계층으로 둬서 성능을 향상시킬 수 있다.
참조
'Computer Science > Operating System' 카테고리의 다른 글
[Operating System] 메모리 할당 (1) | 2023.01.28 |
---|---|
[Operating System] 가상 메모리 (2) | 2023.01.28 |
[Operating System] 메모리 계층 (2) | 2023.01.28 |
[Operating System] 컴퓨터의 요소 (0) | 2023.01.27 |
[Operating System] 운영체제 개요 (0) | 2023.01.27 |