본문 바로가기

CS

[면접을 위한 CS 전공지식 노트] 3.2. 메모리(1)

728x90

 

 


 

🔑메모리 계층

  • 레지스터 : CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량 가장 적음
  • 캐시 : 휘발성, 속도 빠름, 기억 용량 적음
  • 메모리, 주기억장치 : 휘발성, 속도 보통, 기억 용량 보통
  • 저장 장치, 보조기억장치 : 비휘발성, 속도 느림, 기억 용량 많음

 

🔑램(RAM)

  • 하드 디스크로부터 일정량의 데이터를 복사해 임시 저장하고 필요시마다 CPU에 빠르게 전달하는 역할
  • 계층 위로 올라갈수록 비싸지지만 용량은 작아지고 속도는 빨라짐
  • 경제성, 캐시 때문에 존재함

 

🔑캐시(cache)

  • 데이터를 미리 복사해놓는 임시 저장소
  • 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
    = 속도 차이를 해결하기 위해 계층 간에 있는 계층
  • 데이터에 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있음
  • 지역성의 원리 → 자주 사용하는 데이터의 근거가 됨
    • 시간 지역성 : 최근 사용한 데이터에 다시 접근하려는 특성
    • 공간 지역성 : 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성
  • 캐시히트와 캐시 미스
    • 캐시 히트 : 캐시가 원하는 데이터를 찾음
    • 캐시 미스 : 해당 데이터가 캐시에 없으면 주메모리고 가서 데이터를 찾아옴
    • 캐시히트 시 해당 데이터를 제어 장치를 거쳐 가져오게 됨
      → 위치 가깝고 CPU 내부 버스를 기반으로 작동해 빠름
    • 캐시미스 시 메모리에서 데이터를 가져올 때 시스템 버스를 기반으로 작동해 느림
  • 캐시 매핑
    • 캐시가 히트되기 위해 매핑하는 방법
    • CPU의 레지스터와 주메모리간 데이터를 주고 받을 때 기반이 됨
    • 용량이 작은 레지스터가 캐시 계층으로써 역할을 잘 해주려면 매핑을 어떻게 하는 지가 중요함
    • 직접 매핑
      • 처리가 빠르지만 충돌 발생이 잦음
    • 연관 매핑
      • 순서를 일치시키지 않고 관련있는 캐시와 메모리를 매핑함.
      • 충돌이 적지만 모든 블록을 탐색해야 하기 때문에 속도가 느림
    • 집합 연관 매핑
      • 직접 + 연관 매핑의 형태
      • 순서는 일치시키고 집합을 두어 저장하고 블록화가 되어있어 검색은 효율적임
      • 데이터를 무작위로 저장함
  • 웹브라우저의 캐시
    • 사용자의 커스텀 정보나 인증 모듈 관련 사항들을 웹브라우저에 저장해 추후 서버에 요청할 때 자신을 나타내는 아이덴티티나 중복 요청 방지를 위해 사용함
    • 쿠키(Cookie)
      • 만료 기간이 있는 키-값 저장소
      • same site 옵션을 strict로 설정하지 않았을 경우 다른 도메인에서 요청했을 때 자동 전송됨
      • 4Kb까지 데이터 저장 가능
      • 만료 기간을 정할 수 있음
      • 쿠키 설정 시 document.cookie로 쿠키를 볼 수 없게 설정하는 것이 중요
    • 로컬 스토리지
      • 만료 기한이 없는 키-값 저장소
      • 10mb까지 저장 가능함
      • 웹 브라우저를 닫아도 유지됨
      • 도메인 단위로 저장, 생성됨
      • html5를 지원하지 않는 웹브라우저에서는 사용 불가능
      • 클라이언트에서만 수정 가능함
    • 세션 스토리지
      • 만료 기한이 없는 키-값 저장소
      • 탭 단위로 세션 스토리지가 생성되고 탭을 닫을 때 해당 데이터가 삭제됨
      • 5mb까지 저장 가능
      • html5를 지원하지 않는 웹브라우저에서는 사용 불가능
      • 클라이언트에서만 수정 가능함
  • 데이터베이스의 캐싱 계층
    • 메인 데이터베이스 위에 레디스 데이터베이스 계층을 캐싱 계층으로 두어서 성능을 향상시킬 수 있음

728x90