대부분이 메모리 하면 RAM을 떠올릴 것이다. 메모리를 번역하면 기억 이라는 뜻을 가지고 있다. 전 게시글에서 쓴 CPU 내 레지스터나 캐시도 메모리이고, 보조기억장치인 SSD, HDD, SD 등도 메모리라고 볼 수 있다.
메모리는 컴퓨터의 중요한 구성 요소로, 데이터를 저장하고 필요할 때 빠르게 불러올 수 있도록 하는 장치입니다. 메모리는 주로 주 기억장치인 RAM과 보조 기억장치인 SSD, HDD 등으로 구분되며 더 나아가 CPU의 레지스터와 캐시도 메모리로 볼 수 있습니다.
RAM은 전원이 꺼지면 데이터가 사라지는 휘발성 메모리이며, 캐시 다음으로 빠른 속도를 자랑합니다. 용도는 실행중인 프로그램이나 데이터를 일시적으로 저장하기 위하여 사용하며, 간혹가다가 조금의 성능 향상을 위하여 램디스크로 활용하는 경우도 있습니다.
게임이나 웹 브라우저, 문서 편집기 등 실행중인 프로그램이 RAM에 저장됩니다. CPU는 필요한 데이터를 RAM에서 빠르게 불러와 처리할 수 있습니다.
여러 프로그램을 동시에 실행할 때, 각 프로그램의 데이터가 RAM에 저장되어 CPU가 빠르게 전환하며 작업할 수 있습니다. 게임하면서 유튜브 보고 다른작업 하면 메모리가 높아야 하는 이유도 위와 같습니다.
전 게시글에서 다루었으니 간략하게만 적자면, CPU 내부에 있는 초고속 메모리로 RAM보다 더 빠르게 접근할 수 있습니다. CPU가 자주 사용하는 데이터나 명령어를 캐시에 저장합니다.
저장장치는 데이터를 영구적으로 저장하는 공간으로 컴퓨터가 꺼지더라도 데이터를 보존할 수 있으며, SSD와 HDD가 가장 많이 사용됩니다. 구형 핸드폰에서는 Micro SD 메모리 카드를 많이 이용했지만 지금은 기본으로 달려 나오는 메모리의 크기가 커서 잘 사용하지 않는 추세입니다.
전원이 꺼져도 데이터가 유지되는 비휘발성 메모리입니다.
SSD는 M.2 SATA / M SATA / SATA3 SSD 등이 있으며 HDD에 비해 월등히 빠른 읽기/쓰기 속도를 제공합니다. 데이터를 메모리칩에 저장하며, 기계적 움직임이 없어 소음이 없고 빠르고 안정적입니다. 외부적 충격을 가했을 경우 하드는 배드섹터나 헤드 이탈 등의 고장 위험성이 높지만 SSD는 그럴 걱정이 적습니다.(배드셀 제외😰)
HDD는 SSD에 비해 느리지만 최근에는 많이 빨라졌습니다. SSD보다 느린데도 사용하는 이유는 같은 용량대비 가격이 훨씬 저렴하며 큰 용량을 제공합니다. 다만, 전기적 신호로 메모리에 접근하는 SSD와 달리 디스크가 회전하며 헤드가 움직여 엑세스 하는 방식이기 때문에 느리고 고장 위험성이 SSD에 비해 높습니다.
메모리 주소 공간은 컴퓨터에서 데이터를 저장하고 접근할 때 사용하는 메모리 위치들의 범위를 의미합니다. 이론적으로, 프로그램은 가상 메모리 공간을 사용하며, 운영체제와 하드웨어의 메모리 관리 장치인 MMU를 통하여 실제 물리적 메모리에 매핑됩니다.
컴퓨터에서 각 데이터는 고유한 메모리 주소를 가지고 있으며, CPU는 해당 주소를 참조하여 데이터를 읽거나 쓰거나 합니다. 주소 공간은 크게 두가지로 나뉩니다.
사진 출처 - https://ddongwon.tistory.com/49
현대 운영체제는 가상 메모리를 사용하여 물리적 메모리보다 더 큰 메모리 공간을 제공할 수 있습니다. 이를 위해 페이징 기법을 사용하며, 가상 메모리 주소를 페이지 단위로 물리적 메모리와 매핑합니다.
프로그램이 가상 주소를 사용할 때 운영체제와 MMU는 그 주소를 물리적 주소로 변환합니다. 이 과정을 주소 변환이라고 합니다.
사진 출처 - https://ddongwon.tistory.com/49
주소 변환을 빠르게 처리하기 위하여 CPU 는 TLB 라는 캐시 메모리를 사용합니다. 최근 변환된 가상 주소와 물리적 주소의 매핑 정보를 저장하여 동일한 주소에 대한 요청이 있을 때 페이지 테이블을 다시 조회할 필요 없이 빠르게 변환할 수 있습니다.
페이지 폴트는 CPU가 요청한 가상 주소가 물리적 메모리에 존재하지 않을 때 발생하는 현상입니다. 이는 주로 페이지가 디스크에 저장되어 있거나, 아직 할당되지 않았을 때 발생합니다.
운영 체제는 페이지 폴트가 발생하면 해당 페이지를 물리적 메모리로 가져오고, 다시 프로그램 실행을 이어갈 수 있도록 처리합니다.
메모리 주소 공간은 가상 주소와 물리적 주소 간의 매핑을 통하여 데이터가 저장되고 접근이 가능합니다. 이를 위하여 페이지와 페이지 테이블, TLB, 페이징 기법을 사용하며 운영체제는 이 과정에서 효율적으로 메모리를 관리합니다. 프로그램이 사용하는 가상 주소는 실제 물리적 메모리 주소와 다를 수 있지만, CPU와 MMU를 통하여 이를 빠르게 변환하여 데이터를 처리합니다.