일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Application Argument
- @Profile
- rest api
- 리소스 서버
- 알고리즘
- 백기선
- Application Runner
- Application Event
- 브루트포스
- 리소스핸들러
- 다익스트라
- HATEOAS
- 스프링 부트
- 백준
- EnableAutoConfiguration
- webjar
- WebApplication Type
- @ConfigurationProperties
- cors
- Spring Security
- JsonSerializer
- 정적 리소스
- JPA
- OAuth2
- 외부설정
- 백트래킹
- HttpMessageConverters
- AuthenticationPrincipal
- 스프링부트
- application.properties
- Today
- Total
아카이브
Cache 정리 본문
메모리 계층 구조
< Cache ? >
- 데이터를 임시로 저장하는 장소.
- 데이터의 지역성이나 접근 비율이 많은 경우 캐시에 데이터를 임시 저장하여 데이터를 빠르게 제공하는 것이 목적.
- RAM보다 빠른 L1, L2 캐시가 있고 CPU의 REGISTER와 중간에서 캐시 역할을 함.
- 공간 지역성 : 데이터 참조 시 근처에 있는 가까운 데이터가 참조된다.
- 시간 지역성 : 읽은 데이터가 빠른 시일 내에 또 참조된다.
< 동작 순서 >
- 데이터를 요청
- if(cache에 존재) cache에서 데이터를 가져옴
- else 실제 저장공간에서 데이터를 가져옴
- cache에 데이터를 임시 저장
< 용어 >
- cache hit : 참조하려는 데이터가 캐시에 존재할 때
- cache miss : 참조하려는 데이터가 캐시에 존재 하지 않을 때
- cache hit ratio : 적중률 = (캐시히트횟수) / (전체참조횟수) = (캐시히트횟수) / (캐시 히트횟수 + 캐시 미쓰횟수)
< 캐시 교체 알고리즘 >
- LRU(least recently used) : 일반적이고 가장 효율이 좋은 알고리즘이다. 캐시 내에서 사용되지 않은 채로 가장 오래 있었던 데이터 교체
▶ 페이지 크기 3이고, 0부터 4까지의 숫자들이 참조되는 경우
▶ 시간 7,9 는 값은 바뀌지 않았지만 최근에 참조된 부분을 녹색으로
▶ 시간 8, 10은 참조된지 오래된 부분인 4와 1이 교체된 경우
- FIFO(first-in-first-out) : 가장 간단 하다. 캐시 내에서 가장 오래된 데이터를 교체. 특정 상황에서 너무 자주 교체되는 단점이 있다.
- LFU(least frequently used) : 가장 적게 사용된 데이터를 교체. 카운터값을 유지해야하는 단점
'운영체제' 카테고리의 다른 글
기억장치 배치전략(최초 적합/최적 적합/최악 적합) (0) | 2018.06.02 |
---|---|
데드락, 교착상태 (0) | 2018.06.02 |
스케줄링 알고리즘 (0) | 2018.05.29 |
동시성(Concurrency)과 병렬성(Parallelism) (0) | 2018.05.29 |
문맥 교환(Context Switch) (0) | 2018.05.29 |