[CS] 메모리

GDORI·2024년 10월 7일
0

CS

목록 보기
9/9

메모리~ 다다익램~

대부분이 메모리 하면 RAM을 떠올릴 것이다. 메모리를 번역하면 기억 이라는 뜻을 가지고 있다. 전 게시글에서 쓴 CPU 내 레지스터나 캐시도 메모리이고, 보조기억장치인 SSD, HDD, SD 등도 메모리라고 볼 수 있다.

메모리 너는 무엇인가

메모리는 컴퓨터의 중요한 구성 요소로, 데이터를 저장하고 필요할 때 빠르게 불러올 수 있도록 하는 장치입니다. 메모리는 주로 주 기억장치인 RAM과 보조 기억장치인 SSD, HDD 등으로 구분되며 더 나아가 CPU의 레지스터와 캐시도 메모리로 볼 수 있습니다.

RAM ( Random Access Memory )

RAM 특징

RAM은 전원이 꺼지면 데이터가 사라지는 휘발성 메모리이며, 캐시 다음으로 빠른 속도를 자랑합니다. 용도는 실행중인 프로그램이나 데이터를 일시적으로 저장하기 위하여 사용하며, 간혹가다가 조금의 성능 향상을 위하여 램디스크로 활용하는 경우도 있습니다.

RAM 역할

게임이나 웹 브라우저, 문서 편집기 등 실행중인 프로그램이 RAM에 저장됩니다. CPU는 필요한 데이터를 RAM에서 빠르게 불러와 처리할 수 있습니다.
여러 프로그램을 동시에 실행할 때, 각 프로그램의 데이터가 RAM에 저장되어 CPU가 빠르게 전환하며 작업할 수 있습니다. 게임하면서 유튜브 보고 다른작업 하면 메모리가 높아야 하는 이유도 위와 같습니다.

캐시 메모리 ( Cache Memory )

전 게시글에서 다루었으니 간략하게만 적자면, CPU 내부에 있는 초고속 메모리로 RAM보다 더 빠르게 접근할 수 있습니다. CPU가 자주 사용하는 데이터나 명령어를 캐시에 저장합니다.

보조기억장치, 저장장치 ( Storage )

저장장치는 데이터를 영구적으로 저장하는 공간으로 컴퓨터가 꺼지더라도 데이터를 보존할 수 있으며, SSD와 HDD가 가장 많이 사용됩니다. 구형 핸드폰에서는 Micro SD 메모리 카드를 많이 이용했지만 지금은 기본으로 달려 나오는 메모리의 크기가 커서 잘 사용하지 않는 추세입니다.

저장장치의 특징

전원이 꺼져도 데이터가 유지되는 비휘발성 메모리입니다.

SSD

SSD는 M.2 SATA / M SATA / SATA3 SSD 등이 있으며 HDD에 비해 월등히 빠른 읽기/쓰기 속도를 제공합니다. 데이터를 메모리칩에 저장하며, 기계적 움직임이 없어 소음이 없고 빠르고 안정적입니다. 외부적 충격을 가했을 경우 하드는 배드섹터나 헤드 이탈 등의 고장 위험성이 높지만 SSD는 그럴 걱정이 적습니다.(배드셀 제외😰)

HDD

HDD는 SSD에 비해 느리지만 최근에는 많이 빨라졌습니다. SSD보다 느린데도 사용하는 이유는 같은 용량대비 가격이 훨씬 저렴하며 큰 용량을 제공합니다. 다만, 전기적 신호로 메모리에 접근하는 SSD와 달리 디스크가 회전하며 헤드가 움직여 엑세스 하는 방식이기 때문에 느리고 고장 위험성이 SSD에 비해 높습니다.

본론으로 들어가... 메모리 주소 공간에 대해서...

메모리 주소 공간은 컴퓨터에서 데이터를 저장하고 접근할 때 사용하는 메모리 위치들의 범위를 의미합니다. 이론적으로, 프로그램은 가상 메모리 공간을 사용하며, 운영체제와 하드웨어의 메모리 관리 장치인 MMU를 통하여 실제 물리적 메모리에 매핑됩니다.

메모리 주소 공간의 기본 구조

컴퓨터에서 각 데이터는 고유한 메모리 주소를 가지고 있으며, CPU는 해당 주소를 참조하여 데이터를 읽거나 쓰거나 합니다. 주소 공간은 크게 두가지로 나뉩니다.

  • 가상 주소 공간 : 운영 체제와 각 프로그램이 사용하는 주소 공간입니다. 실제 물리적 메모리가 아닌 추상적인 공간입니다.
  • 물리적 주소 공간 : 실제 RAM에 할당된 물리적 메모리 주소입니다.

사진 출처 - https://ddongwon.tistory.com/49

가상 메모리와 페이징

현대 운영체제는 가상 메모리를 사용하여 물리적 메모리보다 더 큰 메모리 공간을 제공할 수 있습니다. 이를 위해 페이징 기법을 사용하며, 가상 메모리 주소를 페이지 단위로 물리적 메모리와 매핑합니다.

페이지와 페이지 테이블

  • 페이지 : 메모리를 일정 크기로 나눈 작은 블록
  • 페이지 테이블 : 각 페이지를 물리적 주소 공간에 매핑하는 테이블로 각 프로그램마다 고유 페이지 테이블이 있습니다.

가상 주소에서 물리적 주소로의 변환 과정

프로그램이 가상 주소를 사용할 때 운영체제와 MMU는 그 주소를 물리적 주소로 변환합니다. 이 과정을 주소 변환이라고 합니다.

  1. 가상 주소 사용
  2. 페이지 테이블 조회
  3. 물리적 주소 생성


사진 출처 - https://ddongwon.tistory.com/49

TLB ( Translation Lookaside Buffer )

주소 변환을 빠르게 처리하기 위하여 CPU 는 TLB 라는 캐시 메모리를 사용합니다. 최근 변환된 가상 주소와 물리적 주소의 매핑 정보를 저장하여 동일한 주소에 대한 요청이 있을 때 페이지 테이블을 다시 조회할 필요 없이 빠르게 변환할 수 있습니다.

  • TLB 미스(TLB Miss): TLB에 변환 정보가 없을 때는 페이지 테이블을 다시 조회하여 주소 변환을 수행해야 합니다.
  • TLB 히트(TLB Hit): TLB에 정보가 있을 경우, 즉시 변환된 물리적 주소를 얻어 처리 속도를 높일 수 있습니다.

페이지 폴트

페이지 폴트는 CPU가 요청한 가상 주소가 물리적 메모리에 존재하지 않을 때 발생하는 현상입니다. 이는 주로 페이지가 디스크에 저장되어 있거나, 아직 할당되지 않았을 때 발생합니다.

  • 소프트 페이지 폴트: 요청한 페이지가 물리적 메모리 외부(예: 디스크)에서 찾을 수 있을 때 발생하며, 해당 페이지를 물리적 메모리에 다시 로드합니다.
  • 하드 페이지 폴트: 메모리 부족으로 인한 페이징 실패나 잘못된 메모리 접근으로 인해 발생하는 오류입니다.

운영 체제는 페이지 폴트가 발생하면 해당 페이지를 물리적 메모리로 가져오고, 다시 프로그램 실행을 이어갈 수 있도록 처리합니다.

정리하자면

메모리 주소 공간은 가상 주소와 물리적 주소 간의 매핑을 통하여 데이터가 저장되고 접근이 가능합니다. 이를 위하여 페이지와 페이지 테이블, TLB, 페이징 기법을 사용하며 운영체제는 이 과정에서 효율적으로 메모리를 관리합니다. 프로그램이 사용하는 가상 주소는 실제 물리적 메모리 주소와 다를 수 있지만, CPU와 MMU를 통하여 이를 빠르게 변환하여 데이터를 처리합니다.

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글