본문 바로가기
프로그래밍/운영체제 (완)

8장 - 메모리 계층 구조와 참조의 지역성 (67)

by 서가_ 2025. 6. 23.
반응형

운영체제 메모리 관리 #1 - 메모리 계층 구조와 참조의 지역성

컴퓨터의 성능을 좌우하는 핵심 요소 중 하나가 바로 메모리입니다. 하지만 메모리는 단순히 하나의 저장 공간이 아니라, 여러 계층으로 구성된 복잡한 시스템입니다. 오늘은 운영체제의 메모리 관리 시리즈 첫 번째로, 메모리 계층 구조가 왜 필요하고 어떻게 효과적으로 작동하는지 알아보겠습니다.

 

메모리 계층 구조란?

메모리는 컴퓨터 시스템 여러 곳에 계층적으로 존재합니다. 이 계층은 다음과 같은 순서로 구성되어 있습니다:

CPU 레지스터 → CPU 캐시 → 메인 메모리 → 보조기억장치

이 구조에서 흥미로운 점은 CPU 레지스터에서 보조기억장치로 갈수록 다음과 같은 특성을 보인다는 것입니다:

  • 용량: 점점 증가
  • 가격: 점점 저렴해짐
  • 속도: 점점 느려짐

메모리 계층 구조의 중심은 바로 메인 메모리입니다. 우리가 흔히 'RAM'이라고 부르는 그것이죠.

왜 메모리를 계층화할까?

메모리 계층화는 역사적으로 다음과 같은 과정을 거쳐 발전했습니다:

성능 향상의 요구

  1. CPU 성능 향상 → 더 빠른 메모리 필요
  2. 작지만 빠른 off-chip 캐시 등장
  3. 더 빠른 액세스를 위해 on-chip 캐시 도입
  4. 멀티 코어 시대: L1, L2, L3 캐시로 세분화

데이터 대형화의 대응

  1. 컴퓨터 성능 향상 → 처리할 데이터 대형화
  2. 저장 장치(하드 디스크) 대형화
  3. 빠른 저장 장치 요구 → SSD 등장

결국 메모리 계층화는 성능과 비용의 절충입니다. 빠른 메모리일수록 고가이므로 작은 용량으로 사용하고, 이를 계층적으로 배치하여 최적의 성능을 얻는 것이 목표입니다.

메모리 계층화의 진짜 목적

메모리 계층화의 궁극적인 목적은 단 하나입니다:

CPU의 메모리 액세스 시간을 줄여 빠른 프로그램 실행을 가능하게 하는 것

작은 캐시가 효과적인 이유: 참조의 지역성

여기서 의문이 생깁니다. CPU가 현재 프로세스의 실행을 중단하고 다른 프로세스를 실행할 때 L1/L2 캐시에는 캐시 미스(cache miss)가 발생합니다. 또한 캐시의 크기가 작기 때문에 현재 프로세스를 실행하는 중에도 캐시 미스가 발생할 수 있습니다.

그렇다면 작은 캐시에 당장 실행할 프로그램 코드와 데이터를 일부분만 두는데도 효과적일까요?

답은 참조의 지역성(Locality of Reference) 때문입니다.

참조의 지역성이란?

참조의 지역성은 코드나 데이터, 자원 등이 아주 짧은 시간 내에 다시 사용되는 특성을 말합니다. 이 특성 덕분에 CPU는 작은 캐시 메모리에 적재된 코드와 데이터로 한동안 실행할 수 있습니다.

지역성의 종류

  1. 시간적 지역성(Temporal Locality)
    • 최근에 액세스한 메모리 위치가 가까운 미래에 다시 액세스될 가능성이 높음
    • 예: 반복문에서 같은 변수를 계속 사용
  2. 공간적 지역성(Spatial Locality)
    • 최근에 액세스한 메모리 위치 근처의 메모리가 액세스될 가능성이 높음
    • 예: 배열의 연속된 원소들에 순차적으로 접근

메모리 계층화의 성공 공식

결국 메모리 계층화가 성공하는 이유는 다음과 같습니다:

캐시를 채우는 시간의 손해 < 빠른 캐시를 이용하는 이득

참조의 지역성 덕분에 이 공식이 성립하며, 작은 용량의 빠른 캐시가 큰 효과를 발휘할 수 있습니다.

마무리

메모리 계층 구조는 컴퓨터 시스템의 핵심 설계 철학 중 하나입니다. 성능과 비용의 균형을 맞추면서도, 참조의 지역성이라는 프로그램의 특성을 활용하여 전체적인 시스템 성능을 향상시킵니다.

다음 포스팅에서는 메모리 주소 체계, 특히 물리 주소와 논리 주소의 차이점과 MMU(Memory Management Unit)의 역할에 대해 자세히 알아보겠습니다.

반응형