반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

메모리 본문

CS/운영체제

메모리

5_hyun 2022. 7. 19. 00:21

CPU는 메모리에 올라와 있는 명령어를 실행할 뿐이다.

 

메모리 계층

메모리는 레지스터, 캐시, 메모리, 저장장치로 구성된다.

 

-레지스터

CPU 안에 있는 작은 메모리이다.

휘발성

속도: 빠름

기억 용량: 가장 적음

 

-캐시

L1, L2 캐시이다.

휘발성

속도: 빠름

기억 용량: 적음

 

-주기억장치

RAM을 가리킨다.

휘발성

속도: 보통

기억 용량: 보통

 

-보조기억장치

HDD, SSD를 말한다.

비휘발성

속도: 느림

기억 용량: 많음

 

캐시(cache)

캐시는 데이터를 미리 복사해두는 임시 저장소이다. 그리고 장치간의 속도 차이에 따른 병목 현상을 줄일 수 있다. 실제로 메모리와 CPU 사이의 속도 차이가 너무 커서 레지스터 계층을 이용해서 속도 차이를 해결한다.

=> 이렇게 계층과 계층 사이에 있는 것을 캐시 계층이라 한다.

ex) 캐시 메모리와 보조기억장치 사이에 있는 주기억장치는 보조기억장치의 캐싱 계층이다.

 

지역성

캐시를 직접 설정하려면 자주 사용하는 데이터를 기반으로 설정해야 한다.

 

-시간 지역성(temporal locality)

for i in range(n):

시간 지역성은 최근 사용한 데이터에 다시 접근하려는 특성이다.

ex) for문은 최근 사용했던 데이터에 접근해 +1을 한다.

 

-공간 지역성(spatial locality)

for i in ary:

공간 지역성은 최근 접근한 데이터를 이루고 있는 공간이나 가까운 공간에 접근하는 특성을 말한다. 이렇게 배열의 각 요소에 i가 할당되고 연속적으로 접근한다.

 

캐시히트와 캐시미스

-캐시히트

캐시에서 원하는 데이터를 찾으면 캐시히트이다. 캐시히트를 하면 원하는 데이터를 제어장치에 거쳐서 메모리로 가져온다. 캐시히트는 위치도 가깝고 CPU 내부 버스를 기반으로 작동해서 빠르다.

 

-캐시미스

캐시에 원하는 데이터가 없으면 주 메모리에 가서 데이터를 찾아오는 것이 캐시미스이다. 캐시미스를 하면 메모리에서 데이터를 가져오는데 시스템 버스 기반이라 느리다.

 

캐시매핑

캐시매핑은 캐시가 히트되기 위한 매핑 방법을 말한다. CPU 레지스터와 주 메모리(RAM)가 데이터를 주고받을 때를 기반으로 설명한다. 레지스터는 작고 주 메모리는 커서 작은 레지스터가 캐시 계층으로써 어떻게 매핑 하는지가 중요하다.

 

-직접 매핑(directed mapping)

메모리가 1~100, 캐시가 1~10이 있으면 메모리를 10개씩 캐시 1개에 매핑하는 것이다. 처리가 빠르지만 충돌 발생이 잦다.

 

-연관 매핑(associative mapping)

순서와 상관없이 관련있는 캐시와 메모리를 매핑한다. 충돌이 적지만 모든 블록을 탐색해서 속도가 느리다.

 

-집합 연관 매핑(set associative mapping)

직접 매핑 + 연관 매핑이다. 메모리가 1~100, 캐시가 1~10이 있으면 캐시 1~5에다가 메모리 1~50을 무작위로 저장한다. 블록화되어 저장되어서 검색은 좀 더 효율적이다.

 

웹 브라우저의 캐시

소프트웨어적인 대표 캐시는 브라우저의 쿠키, 로컬 스토리지, 세션 스토리지가 있다. 사용자의 정보나 인증 모듈 관련 사항들이 저정되어 있고 이를 이용해 자신을 나타내는 아이덴티티나 중복 요청 방지에 쓰인다.

 

-쿠키

쿠키는 만료기한이 있는 키-값 저장소이다. 클라이언트와 서버 모두 만료기한 지정이 가능한데 보통 서버에서 정한다. 쿠키를 설정할 때는 document.cookie로 쿠키를 볼 수 없게 httponly 옵션을 거는 것이 중요하다. same site 옵션을 strict로 설정하지 않으면 다른 도메인에서 요청했을 때 자동 전송된다.

 

-로컬 스토리지

로컬 스토리지는 만료기한이 없는 키-값 저장소이다. 웹 브라우저를 닫아도 유지되고 도메인 단위로 저장, 생성된다. 클라이언트에서만 수정 가능하다.

 

-세션 스토리지

세션 스토리지는 만료기한이 없는 키-값 저장소이다. 탭 단위로 세션 스토리지를 생성하고 탭을 닫으면 데이터가 삭제된다. 클라이언트에서만 수정 가능하다.

728x90
반응형
Comments