반응형
메모리 구조는 컴퓨터 시스템에서 데이터를 저장하고 관리하는 방식을 의미합니다.
메모리는 여러 레벨로 나뉘며, 각 레벨은 속도, 용량, 접근 방식 등이 다릅니다.
주로 주기억장치(RAM)와 보조기억장치(하드디스크, SSD 등)로 구분되며,
이들을 효과적으로 관리하기 위한 다양한 계층적 구조를 가지고 있습니다.
1. 메모리 계층 구조
컴퓨터 시스템에서 메모리는 여러 계층을 이루어 효율적인 데이터 접근과 관리가 이루어집니다. 일반적으로 사용되는 메모리 계층은 다음과 같습니다:
- 레지스터 (Registers):
- CPU 내부에 위치한 가장 빠른 메모리입니다. CPU가 직접 접근하여 데이터를 처리하는 데 사용되며, 수십 개의 레지스터가 존재합니다.
- 레지스터는 CPU의 명령어와 데이터를 처리하는 데 필요한 최소한의 데이터를 저장합니다.
- 캐시 메모리 (Cache Memory):
- 레지스터 다음으로 빠른 메모리로, CPU와 주기억장치(RAM) 사이에서 데이터를 중계합니다.
- L1 캐시는 CPU 내부에 있으며 가장 빠르고, L2 캐시와 L3 캐시는 CPU 외부에 위치하며 조금 더 큰 용량을 가집니다.
- 주기억장치에서 자주 사용하는 데이터를 미리 캐시에 저장하여, CPU가 빠르게 데이터를 가져올 수 있도록 합니다.
- 주기억장치 (Primary Memory / RAM):
- **램(RAM)**이라고도 하며, 휘발성 메모리입니다. 컴퓨터가 켜져 있을 때만 데이터를 저장합니다.
- 주로 DRAM(Dynamic RAM)과 SRAM(Static RAM)으로 구분됩니다. DRAM은 용량이 크고 상대적으로 느리며, SRAM은 빠르지만 용량이 작고 비용이 높습니다.
- 주기억장치는 실행 중인 프로그램과 데이터를 저장하는 데 사용됩니다.
- 보조기억장치 (Secondary Storage):
- **하드디스크(HDD)**나 SSD가 여기에 해당하며, 데이터를 영구적으로 저장하는 장치입니다.
- 휘발성 메모리인 RAM과 달리 데이터를 전원이 꺼져도 유지합니다.
- 용량이 크고 상대적으로 느리지만, 대용량 데이터를 저장할 수 있습니다.
- SSD는 HDD보다 빠르지만 가격이 더 비쌉니다.
- 가상 메모리 (Virtual Memory):
- 가상 메모리는 실제 RAM 용량보다 더 많은 메모리 공간을 제공하는 기술입니다.
- 이를 통해 프로그램은 실제 메모리 용량에 제한을 받지 않고 실행할 수 있습니다. 운영 체제는 RAM이 부족하면 디스크의 일부 공간을 가상 메모리로 사용하여 **스와핑(Swapping)**을 통해 데이터를 이동시킵니다.
- **페이지(Paging)**와 세그먼트(Segmentation) 같은 기법을 사용하여 데이터를 관리합니다.
2. 메모리 관리 방식
메모리 관리 방식은 운영 체제가 메모리 자원을 효율적으로 관리하고, 각 프로그램과 프로세스가 필요한 메모리를 할당받을 수 있도록 하는 방법을 말합니다. 주요 관리 방식은 다음과 같습니다:
- 연속 할당(Contiguous Allocation):
- 메모리 공간을 연속적으로 할당하는 방식입니다. 이 방식은 구현이 간단하지만, 메모리의 외부 단편화(External Fragmentation) 문제가 발생할 수 있습니다.
- 예를 들어, 프로그램이 종료되면 그 프로그램이 차지했던 공간이 비어 있지만, 크기가 불규칙하여 다른 프로그램을 할당하기 어려운 상황이 발생할 수 있습니다.
- 페이징(Paging):
- 메모리를 고정 크기의 **페이지(Page)**로 나누고, 프로세스도 동일한 크기의 페이지로 나누어 할당합니다. 이 방식은 내부 단편화(Internal Fragmentation)를 최소화할 수 있지만, 여전히 일부 여유 공간이 낭비될 수 있습니다.
- 각 페이지는 물리 메모리에서 특정 프레임에 할당됩니다. 이때, 페이지 테이블(Page Table)이 필요하여 가상 메모리 주소를 물리 주소로 변환합니다.
- 세그멘테이션(Segmentation):
- 메모리를 논리적 단위로 나누어, 각 단위는 프로그램이나 데이터와 같은 자연스러운 구조로 할당됩니다.
- 예를 들어, 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트 등으로 나누어 할당할 수 있습니다.
- 세그먼트는 각기 다른 크기를 가질 수 있으며, 페이징과 결합하여 **세그먼트 페이징(Segmented Paging)**을 사용할 수도 있습니다.
3. 메모리 주소 공간
메모리 주소 공간은 컴퓨터 시스템에서 메모리를 논리적(가상) 주소와 물리적(실제) 주소로 구분하여 관리하는 방식입니다.
- 가상 주소 공간 (Virtual Address Space):
- 각 프로세스는 독립적인 가상 주소 공간을 가집니다. 운영 체제는 가상 주소를 실제 물리 주소로 변환하는 역할을 합니다.
- 가상 메모리는 이 가상 주소 공간을 확장하여 프로그램이 실제 메모리 용량보다 더 많은 메모리를 사용할 수 있게 합니다.
- 물리 주소 공간 (Physical Address Space):
- 실제 하드웨어인 RAM에 존재하는 메모리 주소입니다. 운영 체제는 가상 주소를 물리 주소로 매핑하여 데이터를 실제 메모리에 읽고 씁니다.
4. 메모리 보호
메모리 보호는 한 프로세스가 다른 프로세스의 메모리를 침범하지 않도록 하는 기법입니다. 이를 통해 시스템 안정성과 보안성을 높일 수 있습니다.
- 페이지 테이블이나 세그먼트 테이블을 사용하여 각 프로세스의 메모리 영역을 분리하고, 다른 프로세스의 메모리 영역에 접근하지 못하도록 합니다.
- 또한, 읽기 전용 메모리나 쓰기 제한을 설정하여, 악의적인 공격이나 버그로 인한 데이터를 보호할 수 있습니다.
5. 메모리 캐싱
메모리 캐싱은 속도 차이를 해결하기 위해 자주 사용하는 데이터를 빠른 메모리(예: 캐시 메모리)에 저장하여 접근 속도를 높이는 기법입니다.
- 캐시 메모리는 자주 사용되는 데이터를 저장하여 CPU가 빠르게 데이터를 처리할 수 있도록 합니다.
- **캐시 일관성(Cache Coherency)**을 유지하려면 여러 CPU가 캐시를 공유할 때 일관성 문제가 발생하지 않도록 관리해야 합니다.
6. 결론
컴퓨터 시스템의 메모리 구조는 속도, 용량, 데이터 접근 방식에 따라 여러 계층으로 구성되며, 각 계층은 CPU, RAM, 캐시, 디스크 등의 장치들이 효율적으로 연계되어 데이터를 처리합니다. 메모리 관리는 데이터 보호, 성능 최적화, 효율적 자원 배분을 위해 필수적입니다.
728x90
'개발공부 > CS' 카테고리의 다른 글
[운영체제] 프로세스 제어 블록 (Process Control Block, PCB) (0) | 2025.02.16 |
---|---|
[운영체제] LRU (Least Recently Used) (0) | 2025.02.16 |
[운영체제] 데드락이란? (0) | 2025.02.16 |
[운영체제] 컨텍스트 스위칭이란? (0) | 2025.02.16 |
[운영체제] 스레드란? (0) | 2025.02.16 |