Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Constraint Layout
- git
- Compose
- 데드락
- markdown
- coroutine flow
- 더티비트
- JetPack
- 다단계 큐
- OS
- SOLID
- 마크다운
- Di
- test
- readme
- O.S
- JUnit
- LiveData
- 깃허브
- Data Binding
- Android
- kotlin
- design pattern
- 운영체제
- Spring Boot
- Class.class
- android study jam
- spring
- github
- 리드미
Archives
- Today
- Total
차지
캐시 본문
1. 캐시
캐시
- 컴퓨터를 구성하는 메모리는 다양한 종류가 있습니다.
- 대표적으로 RAM, SSD, HDD가 있습니다.
- SSD와 RAM의 차이는 무엇일까요? 간단하게 용량과 거리라고 생각하면 됩니다.
- RAM에 저장된 파일은 빠르게 탐색할 수 있지만 용량이 적습니다.
- SSD에는 파일을 많이 저장할 수 있지만 램보다는 느린 속도를 보입니다.
- 캐시메모리 역시 메모리의 종류 중 하나입니다. 정말 빠르지만 용량이 한정적이므로 관리가 중요합니다.
지역성
- 시간적 지역성: 한 번 접근한 데이터는 금방 또 접근할 가능성이 높다.
- 공간적 지역성: 한 번 접근한 데이터의 근처를 또 접근할 가능성이 높다.
캐시의 동작
- 앞서말한 지역성을 바탕으로 자주 쓰는 데이터를 빨리 꺼낼 수 있게 합니다.
- 캐시는 세 부분으로 나뉘는데, 오프셋, 인덱스, 태그로 이루어져있습니다.
- 속도와 용량에서 최대한 타협하다보니 인덱싱을 하는 데에 많은 기술이 녹아있습니다.
- 가령 32비트의 메모리 공간이 존재한다면 10비트는 인덱스에 사용됩니다.
- 하지만 10비트를 사용하더라도 인덱스가 중복될 위험이 있으며, 태그비트를 추가로 사용합니다.
- 데이터를 저장할 때 태그비트부터 확인한 다음 인덱스에 접근시켜 중복의 위험을 줄입니다.
- 최대한 빠르게, 하지만 너무 용량이 작아 쓸모없어지지는 않게 타협하는 것이 캐시의 핵심입니다.
캐시의 교체
- 자주 사용할 데이터를 예측하는 일은 어렵습니다.
- 하지만 자주 사용할 데이터만 재사용하고 나머지는 그때그때 탐색하는 것이 효율적입니다.
- 자주 사용할 데이터를 거르기 위해 주로 LRU방식을 많이 사용합니다.
2. LRU 캐시
LRU 캐시의 동작방식
- Least Recently Used 의 약자입니다.
- 우선순위를 두고 최근 접근한 데이터는 가장 높은 우선순위로 잔류합니다.
- 메모리가 꽉차면 잔류 우선순위가 가장 낮은 데이터부터 제거됩니다.
HashMap
- 해시맵은 자료의 추가, 삭제와 탐색속도가 O(1)로 빠른 자료구조입니다.
- 연결리스트는 탐색속도가 O(N)으로 해시맵이 LRU알고리즘에 어울리는 자료구조입니다.
'Computer Science > O.S.' 카테고리의 다른 글
Operating System - 스레드(3/3) (0) | 2022.05.14 |
---|---|
Operating System - 프로세스 (2/3) (0) | 2022.05.14 |
Operating System - 운영체제 (1/3) (0) | 2022.05.13 |
Garbege Collector (0) | 2021.07.24 |
Linux (0) | 2021.07.24 |