OS - 메모리

4 분 소요

Introduction

CS 노트에서 CPU는 메모리에 올라와 있는 프로그램의 명령어를 수행할 뿐이며, 메모리 관리에 따라 컴퓨팅 성능이 매우 차이날 수 있다는 것을 알려준다. 메모리를 어떻게 관리하느냐는 개발자에게도 매우 중요한 이슈 중 하나이기도 하다.

메모리 게층

아래는 메모리 계층을 도식화한 것이며 위로 갈수록 빠르나 기억 용량이 적고 비싸다.
레지스터와 캐시는 CPU 내부에 존재하며, 메모리는 CPU 외부에 존재한다. 디스크는 아예 CPU에서 직접적인 접근이 불가하다.

레지스터

CPU 안에 있는 작은 메모리로 CPU에서 바로 접근해 사용할 수 있다.

캐시

주메모리와 레지스터 간의 처리 속도 차이로 인한 병목현상을 해결하기 위해 쓰이는 메모리이다. L1, L2, L3 캐시가 포함된다.

지역성

캐시의 용량은 한정되어 있고, 용량을 일부러 크게 만들더라도 참조하는 시간이 길어져 병목 현상을 줄인다는 의미가 퇴색되기 때문에 자주 참조할 데이터만 캐시에 저장하는 것이 유용하다.
자주 사용하는 근거를 지역성에서 찾고 시간지역성과 공간지역성이 있다.

  • 시간지역성 : 최근 참조한 데이터가 더 자주 참조된다.
  • 공간지역성 : 인접한 메모리 공간에 있는 데이터가 더 자주 참조된다.

캐시 히트 / 캐시 미스

CPU가 캐시에서 원하는 데이터를 찾았을 경우 캐시 히트라고 하며, 반대로 찾지 못하면 캐시 미스라고 한다.

캐시 매핑

캐시히트를 잘하기 위해 개별 캐시 공간을 어느 메모리 공간에 매핑할지를 정하는 방법이다.

  • 직접 매핑 (directed mapping) : 메모리가 1~100번 공간이 있고, 캐시가1~10번 공간이 있다면, 1:1~10,2:11~20 이렇게 매핑되는 방식.
  • 연관 매핑 (associative mapping) : 순서를 일치시키지 않고, 관련있는 캐시와 메모리를 매핑함.
  • 집합 연관 매핑 (set associative mapping) : 직접 매핑과 연관 매핑을 합친 방식. 직접 매핑처럼 순서를 일치시켜 set을 만든 뒤, 각 set에서는 연관 매핑을 적용한다.

메모리 (주기억장치)

일반적으로 메모리라고 하면, 주기억장치(RAM)을 의미한다. 디스크에 저장된 프로그램이 프로세스로 인스턴스화될 때 적재되는 공간이기도 하다.

하드 디스크 (보조기억장치)

HDD, SSD를 의미한다. 프로그램 또는 데이터가 영구적으로 저장되는 공간이며, 처리 속도가 매우 느리다.

웹 브라우저의 캐시

캐시는 CPU에 포함된 메모리 장치이나, 임시 저장된다는 개념이 소프트웨어적으로 구현된 웹 브라우저 캐시가 있다. 사용자가 웹사이트에서 접속하면서 발생한 정보들이 기록되며, 추후 서버에 요청할 때 쓰이게 된다.

쿠키

만료기한이 있는 키-값 저장소이다. 최대 4KB까지 데이터를 저장할 수 있고 만료기한을 정할 수 있다. 클라이언트, 서버 모두 만료 기한을 정할 수 있으나 보통 서버에서 정한다.

로컬 스토리지

만료기한이 없는 키-값 저장소이다. 최대 10MB까지 저장할 수 있으며, 클라이언트에서만 수정가능하다.

세션 스토리지

만료기한이 없는 키-값 저장소이다. 탭 단위로 생성되어, 탭을 닫으면 데이터가 삭제된다. 클라이언트에서만 수정 가능하다.

메모리 관리

메모리를 시간적으로나 공간적으로 효율적으로 사용하기 위해 여러 방법이 존재한다.

가상 메모리

메모리 관리 기법 중 하나로, 물리적으로 존재하지 않는 메모리를 마치 존재하는 것처럼 이용가능하도록 추상화하는 것이다. 아래와 같이 특정 프로세스를 돌리는 데 주기억장치(RAM)의 용량이 충분하지 않다면 보조기억장치인 Disk를 마치 RAM처럼 사용하는 것이다.

이를 위해서는 가상 메모리 공간의 주소를 실제 주소에 매핑하는 과정이 필요하다. 가상주소와 실제 주소가 매핑되고 프로세스의 주소 정보가 들어있는 테이블을 ‘페이지 테이블’이라고 한다. 이를 관리하는 것은 MMU(Memory management unit)가 담당한다.

TLB

메모리와 CPU 사이에 주소 변환을 위한 캐시로, 페이지 테이블에 있는 리스트를 보관해 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시키는 캐시 계층이다.

스와핑

가상 메모리에는 데이터정보가 존재하나 실제 메모리인 RAM에 없는 경우 페이지 폴트가 발생한다. 이를 방지하기 위해 사용하지 않는 RAM의 데이터를 보조기억장치로 잠시 옮기고, 추후 필요 시 다시 불러오는 방버을 말한다.

Reference

면접을 위한 CS 전공지식 노트 - 주홍철 지음
메모리 위키백과

태그: ,

카테고리:

업데이트: