일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- TS
- dfs
- 타입 좁히기
- Jest
- webpack
- useAppDispatch
- 무한 스크롤
- 결정 알고리즘
- Promise
- 인터섹션
- 이분 검색
- CI/CD
- 투포인터
- ESlint
- Cypress
- 호이스팅
- 리터럴 타입
- React
- CORS
- app router
- 공변성
- 태그된 유니온
- RTK Query
- map
- recoil
- autosize
- SSR
- 반공변성
- async/await
- tailwind
- Today
- Total
짧은코딩
메모리 본문
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로 설정하지 않으면 다른 도메인에서 요청했을 때 자동 전송된다.
-로컬 스토리지
로컬 스토리지는 만료기한이 없는 키-값 저장소이다. 웹 브라우저를 닫아도 유지되고 도메인 단위로 저장, 생성된다. 클라이언트에서만 수정 가능하다.
-세션 스토리지
세션 스토리지는 만료기한이 없는 키-값 저장소이다. 탭 단위로 세션 스토리지를 생성하고 탭을 닫으면 데이터가 삭제된다. 클라이언트에서만 수정 가능하다.
'CS > 운영체제' 카테고리의 다른 글
멀티 프로세싱, 스레드와 멀티스레딩 (0) | 2022.12.18 |
---|---|
프로세스의 메모리 구조, PCB (0) | 2022.08.22 |
프로세스와 컴파일 과정, 프로세스의 상태 (0) | 2022.08.12 |
메모리 관리 (0) | 2022.07.26 |
운영체제와 컴퓨터-운영체제의 역할과 구조, 컴퓨터의 요소 (0) | 2022.07.08 |