메모리 계층 구조
메모리 관련 3가지 주요 특성인 용량, 접근 속도, 비용간의 절충 관계를 파악해 필요에 따라 채택할 수 있게 나타낸 구조.
메모리 계층은 레지스터, 캐시, 메모리(RAM), 하드디스크(저장장치)로 구성되어 있다.
위로 갈수록 속도가 빠르고, 아래로 갈수록 용량이 커진다.
레지스터 : CPU 내부의 작은 메모리로, 휘발성이며 속도가 가장 빠르고, 기억 용량이 가장 적다.
캐시 : L1, L2, L3 캐시를 지칭하고 휘발성이며, 속도가 빠르나 기억 용량이 적다.
주기억장치(메모리) : RAM을 가리키고 휘발성이며, 속도와 기억 용량은 보통이다.
보조기억장치(디스크) : HDD, SDD를 일컬으며 비휘발성이다. 속도는 낮으며 기억 용량이 많다.
웹 브라우저의 캐시
- 작은 저장소인 쿠키, 로컬 스토리지, 세션 스토리지 존재
- 사용자의 커스텀한 정보나 인증 모듈 관련 사항들을 웹 브라우저에 저장해서 추후 서버에 요청할 때 자신을 나타내는 아이덴티티나 중복 요청을 방지 ex) 자동 로그인
쿠키
- 만료기한이 있는 키-값 저장소
- 4KB까지 데이터를 저장할 수 있고 만료기한을 정할 수 있다.
로컬 스토리지
- 만료기한이 없는 키-값 저장소
- 10MB까지 저장 가능
- 웹 브라우저를 닫아도 유지되고 도메인 단위로 저장, 생성된다.
- HTML5을 지원하지 않는 웹 브라우저에서는 사용 불가능하며 클라이언트에서만 수정 가능
세션 스토리지
- 만료기한이 없는 키-값 저장소
- 탭 단위로 세션 스토리지 생성
- 탭을 닫을 때 데이터가 삭제
- 5MB까지 저장 가능
- HTML5을 지원하지 않는 웹 브라우저에서는 사용 불가능하며 클라이언트에서만 수정 가능
가상 메모리
- 실제 물리적인 메모리 공간외에 하드 디스크에 파일 형태로 따로 준비하는 가상의 메모리 공간으로, 부족한 시스템 메모리를 보조해주는 역할을 한다.
- 실제 메모리 공간이 가득차서 용량이 부족하게 되면, 실제 메모리에 저장되어 있는 내용 중 당장 사용되지 않는 내용들을 미리 준비된 하드 디스크의 페이징 파일로 옮겨 실제 메모리에 여유 공간을 확보한다.
- 후에 페이징 파일에 옮겨둔 내용이 필요하면 다시 실제 메모리로 옮겨서 사용한다.
메모리 할당
- 메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당
- 연속 할당과 불연속 할당으로 나뉜다.
연속할당
- 메모리에 연속적으로 공간을 할당하는 것
- 고정 분할 방식과 가변 분할 방식으로 나뉜다.
고정 분할 방식
- 메모리를 미리 나누어 관리하는 방식
- 내부 단편화 발생
가변 분할 방식
- 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용
- 내부 단편화 발생 X
- 외부 단편화 발생 O
최초적합 : 위에서부터 바로 보이는 공간에 바로 할당
최적적합 : 가장 크기에 맞는 공간부터 채우고 나머지를 할당
최악적합 : 가장 크기가 큰 공간에 부터 채우고 나머지 할당
내부단편화 & 외부단편화란?
내부단편화
- 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상 -> 들어갈 수 있는 공간보다 프로그램이 작아서 공간이 남아버리는 것
외부단편화
- 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상 -> 들어갈 공간보다 들어갈 것이 더 커서 들어가지 못하고 남아버리는 것
불연속 할당
- 현대 운영체제에 쓰는 방법
- 메모리를 동일한 크기의 페이지로 나누고 프로그램마다 페이지 테이블을 두어 이를통해 메모리에 프로그램을 할당