메모리

2024. 9. 22. 14:07·CS/OS
반응형

메모리 계층

  1. 레지스터
    • CPU 안에 있는 작은 메모리, 휘발성, 가장 빠른속도, 가장 적은 용량
  2. 캐시
    • 데이터를 미리 복사해 놓는 임시 저장소
    • 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
    • 위치는 CPU의 레지스터와 주기억장치 사이에 위치한다
    • 같은 의미로 캐시 계층이라는 의미는 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 의마하며
      캐시 메모리와 보조기억장치 사이에 있는 주기억장치를 보조기억장치의 캐싱 계층이라고 부를 수 있다.
    • 휘발성, 빠른속도, 적은 용량을 같는다. 캐시는 L1 ~ L3 까지있다.
  3. 주기억장치
    • RAM을 지칭하며 휘발성, 보통 속도, 용량 보통 
  4. 보조기억장치
    • 휘발성, 낮은 속도, 큰 용량

캐시

캐시를 데이터 기반으로 설명한다면 다음 특징과 함께 설명할 수 있다.

 

시간 지역성 [ temporal locality ]

  • 최근 사용한 데이터를 접근하는 특성

공간 지역성 [ spatial locality ]

  • 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성
  • 배열을 접근할 때를 예로 들 수 있다.

 

다음은 캐시에서 데이터를 찾았을 때와 못 찾앗을 때를 부르는 단어를 알아보자

  • 캐시히트
    • 캐시에서 데이터를 찾았을 때
  • 캐시미스
    • 캐시에 데이터가 없어 주기억장치에서 데이터를 가져올 때

 

웹 브라우저의 캐시

실제 웹에서 캐시 역할을 하는 저장소들을 살펴보자.

 

쿠키

  • 만료기한이 있는 key-value 저장소
  • 최대 4KB 까지 저장가능
  • 클라이언트와 서버에서 만료기한을 정할 수 있으며 보통 서버에서 지정한다.
  • 서버가 응답할 때 Header에 Set-Cookie 필드를 통해 쿠키를 지정한다. 
  • 쿠키를 서버로부터 받으면  클라이언트는 동일한 서버에 reqeust 시 쿠키에 대한 데이터를 함께 전송하다.
  • 위 특징을 통해 아래 와 같은 목적으로 사용된다.
    1. 세션 관리: 서버에 저장해야할 로그인, 장바구니, 게임스코어 등 개인정보 관리
    2. 개인화: 각 사용자에게 적절한 페이지를 보여줌 (.사용자 선호 테마 등 세팅 등)
    3. 트래킹: 사용자의 행동과 패턴 분석을 기록하는 용도

세션 스토리지

  • 만료기한이 없는 key-value wjwkdth
  • 탭 단위로 세션 스토리지를 생성하며 탭을 닫을 때 데이터가 삭제된다.
  • 5MB까지 저장 가능 
  • 클라이언트에서만 수정 가능

로컬 스토리지

  • 만료기한이 없는 key-value 저장소
  • 브라우저를 닫아도 유지되며 도메인 단위로 저장
  • 10MB 까지 저장 가능
  • 클라이언트에서만 수정 가능
  •  

데이터 베이스의 캐싱 계층

데이터베이스 시스템을 구축할 때 메인 데이터 베이스 위에 redis 데이터 베이스 계층을
"캐싱 계층"으로 둬서 성능을 향상 시키기도 한다.


메모리 접근 순서도

마지막으로 메모리를 실질적으로 어떤식으로 접근하는 지 그림으로 정리하며 마무리해보자.

 

 

여기서 주기억장치에서 가져온 데이터를 모두 캐시에 적재하는 것은 아니다.


왜냐하면 주기억장치와 용량의 큰 차이가 있기때문에 캐시 정책(예: LRU, FIFO 등)에 따라

어떤 데이터를 캐시에 올릴지 결정한다.

 

또한 여기서 캐시 메모리가 빠른이유가 나오는데 캐시는 우취도 가깝고 CPU 내부 버스 기반으로 작동한다.

하지만 캐시 미스가 발생하면 메모리에서 가져오게 되는데 이 때 시스템 버스를
기반으로 작동하기 때문에 다소 느리게 작동한다. 


참고

 

[Web] 웹 브라우저 쿠키(Cookie)와 세션(Session)의 개념

어떠한 사이트에 한 번 로그인을 하고 나면 사이트 내 여러 페이지들을 접속할 때 로그인이 유지되거나 혹은 ID, PW를 저장해두어 며칠 뒤 재 접속을 하더라도 다시 입력하지 않고 자동 로그인 되

dream-and-develop.tistory.com

 

반응형

'CS > OS' 카테고리의 다른 글

코어 / 프로세스 / 스레드, 동기 / 비동기, 직렬 / 동시 / 병렬 프로그래밍  (0) 2024.10.23
프로세스와 스레드  (1) 2024.09.27
가상메모리  (0) 2024.09.22
컴퓨터의 요소  (0) 2024.09.21
운영체제 [ 역할과 구조, 시스템콜 ,커널 ]  (2) 2024.09.21
'CS/OS' 카테고리의 다른 글
  • 프로세스와 스레드
  • 가상메모리
  • 컴퓨터의 요소
  • 운영체제 [ 역할과 구조, 시스템콜 ,커널 ]
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (339)
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (134)
        • UIKit (37)
        • Combine (1)
        • SwiftUI (34)
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (21)
        • 어노테이션 (6)
        • 튜토리얼 (14)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (21)
        • 이론 (10)
        • MCP (1)
        • LangGraph (10)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    UIKit
    concurrency
    GIT
    IOS
    property
    lifecycle
    AVFoundation
    Swift
    프로그래머스
    CS
    SwiftUI
    백준
    boostcamp
    dfs
    protocol
    dispatch
    dp
    투포인터
    Tuist
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
메모리
상단으로

티스토리툴바