캐시(페이지) 교체 알고리즘: LRU(Least Recently Used)

2022. 8. 24. 15:20·python/자료구조 & 알고리즘
728x90
반응형

사용자에게 빠르게 정보를 제공하기 위해 사용하는 캐시에서 새로운 데이터가 발생했을 때, 가장 오래전에 사용된 데이터를 제거하고 새로운 데이터를 삽입하는 알고리즘입니다.

  1. 새로운 데이터가 들어온 경우
    1. 캐시에 넣어준다.
    2. 캐시가 가득차있다면, 가장 오래된 데이터를 제거하고 넣어준다.
  2. 존재하는 데이터가 들어온 경우
    1. 해당 데이터를 꺼낸 뒤,
    2. 가장 최근 데이터 위치로 보내준다.

파이썬으로 구현하면 다음과 같습니다.

cache_Size = 5
cache = [1, 2, 3, 4, 5]
user_data = [3, 7, 2]

for data in user_data:
	# Miss!
	if data not in cache:
		if len(cache) < cacheSize:
			cache.append(data)
		else:
			cache.pop(0)
			cache.append(data)
	# Hit!
	else:
		cache.pop(cache.index(data))
		cache.append(data)

# 캐시 결과 확인
print(cache) # [4, 5, 3, 7, 2]

결과를 쫓아가보면,

  1. 3은 캐시에 존재합니다. 따라서 최근 위치로 옮겨줍니다. --> [1, 2, 4, 5, 3]
  2. 7은 새로운 데이터 입니다. 하지만 그대로 넣어주면 cacheSize를 넘어가므로 가장 오래된 데이터 1을 제거하고 넣어줍니다.
    --> [2, 4, 5, 3, 7]
  3. 2는 캐시에 존재합니다. 따라서 최근 위치로 옮겨줍니다. --> [4, 5, 3, 7, 2]

출처: https://hwiyong.tistory.com/398

728x90
반응형

'python > 자료구조 & 알고리즘' 카테고리의 다른 글

[알고리즘] 백트래킹(backtracking) 알고리즘 / 파이썬 Python  (0) 2022.09.01
원형 큐 - 모듈 없이 구현  (0) 2022.08.24
[자료구조] 재귀 함수와 스택 / 파이썬 Python  (0) 2022.08.03
[자료구조] 동적계획법 Dynamic Programming / 파이썬 Python  (0) 2022.08.03
[자료구조] 우선순위 큐(Priority Queue)와 힙(Heap) / Python 파이썬  (0) 2022.07.29
'python/자료구조 & 알고리즘' 카테고리의 다른 글
  • [알고리즘] 백트래킹(backtracking) 알고리즘 / 파이썬 Python
  • 원형 큐 - 모듈 없이 구현
  • [자료구조] 재귀 함수와 스택 / 파이썬 Python
  • [자료구조] 동적계획법 Dynamic Programming / 파이썬 Python
sillon
sillon
꾸준해지려고 합니다..
    반응형
  • sillon
    sillon coding
    sillon
  • 전체
    오늘
    어제
    • menu (614)
      • notice (2)
      • python (68)
        • 자료구조 & 알고리즘 (23)
        • 라이브러리 (19)
        • 기초 (8)
        • 자동화 (14)
        • 보안 (1)
      • coding test - python (301)
        • Programmers (166)
        • 백준 (76)
        • Code Tree (22)
        • 기본기 문제 (37)
      • coding test - C++ (5)
        • Programmers (4)
        • 백준 (1)
        • 기본기문제 (0)
      • 공부정리 (5)
        • 신호처리 시스템 (0)
        • Deep learnig & Machine lear.. (41)
        • Data Science (18)
        • Computer Vision (17)
        • NLP (40)
        • Dacon (2)
        • 모두를 위한 딥러닝 (강의 정리) (4)
        • 모두의 딥러닝 (교재 정리) (9)
        • 통계 (2)
      • HCI (23)
        • Haptics (7)
        • Graphics (11)
        • Arduino (4)
      • Project (21)
        • Web Project (1)
        • App Project (1)
        • Paper Project (1)
        • 캡스톤디자인2 (17)
        • etc (1)
      • OS (10)
        • Ubuntu (9)
        • Rasberry pi (1)
      • App & Web (9)
        • Android (7)
        • javascript (2)
      • C++ (5)
        • 기초 (5)
      • Cloud & SERVER (8)
        • Git (2)
        • Docker (1)
        • DB (4)
      • Paper (7)
        • NLP Paper review (6)
      • 데이터 분석 (0)
        • GIS (0)
      • daily (2)
        • 대학원 준비 (0)
      • 영어공부 (6)
        • job interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    백준
    programmers
    소수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sillon
캐시(페이지) 교체 알고리즘: LRU(Least Recently Used)
상단으로

티스토리툴바