본문 바로가기
IT

운영체제 #9

by 내일은교양왕 2025. 8. 25.

메모리 관리 개요

  • 메모리는 현대 컴퓨터 시스템 동작의 핵심으로, 각각 고유한 주소를 갖는 큰 바이트 배열 형태이다.
  • 각 프로세스는 자신만의 주소 공간(address space) 을 갖는다.

 

주소 바인딩 (Address Binding)

  • 심볼릭 주소(Symbolic Address) → 논리 주소(Logical Address) → 물리 주소(Physical Address) 변환 과정이 필요하다.
  • 이 변환은 다음 시점에 일어날 수 있다:
    1. 컴파일 시(binding at compile time): 실행 파일에 물리 주소를 직접 기록.
    2. 적재 시(binding at load time): 실행 시점에 메모리에 적재될 때 주소 결정.
    3. 실행 시(binding at execution time): 프로그램 실행 도중 MMU가 동적으로 변환.
  • CPU가 생성한 주소 = 논리 주소
  • MMU(Memory Management Unit) 가 논리 주소를 물리 주소로 변환한다.
C 코드: int a = 10;  (심볼릭 주소: "a")
↓
컴파일 결과: 주소 0x0040에 저장  (논리 주소)
↓
실행 시점: MMU 변환 → RAM 0x7F40 위치 (물리 주소)

 

기준 및 상한 레지스터 (Base and Limit Register)

  • 개념: 각 프로세스에 주소 공간을 할당하는 방법 중 하나
  • 기준 레지스터(Base Register) : 프로세스가 접근할 수 있는 가장 작은 물리 주소.
  • 상한 레지스터(Limit Register) : 프로세스 주소 공간의 크기.
  • CPU가 생성한 모든 논리 주소는 Base 값과 더해져 실제 물리 주소로 변환되며, Limit을 초과하면 접근이 거부된다.

 

연속 메모리 할당 (Contiguous Allocation)

  • 메모리를 연속된 블록 단위로 프로세스에 할당.
  • 대표적인 할당 전략:
    1. 최초 적합(First Fit) – 빈 공간을 앞에서부터 찾아 최초로 맞는 블록 사용.
    2. 최적 적합(Best Fit) – 필요한 크기 이상 중 가장 작은 블록 사용.
    3. 최악 적합(Worst Fit) – 가장 큰 블록을 잘라서 사용.

 

페이징 (Paging)

  • 현대 운영체제는 연속 할당 대신 페이징 기법을 사용.
  • 물리 메모리: 고정 크기 블록 = 프레임(Frame)
  • 논리 메모리: Frame과 같은 크기의 블록 = 페이지(Page)
  • 논리 주소 = (페이지 번호, 페이지 오프셋)
    • 페이지 번호 → 페이지 테이블을 통해 물리적 프레임 번호로 변환.
    • 페이지 오프셋 → 프레임 내 특정 위치 지정.

 

TLB (Translation Lookaside Buffer)

  • 페이지 테이블 캐시 역할을 하는 하드웨어.
  • 변환 과정:
    1. CPU가 생성한 논리 주소에서 페이지 번호 추출.
    2. 해당 번호가 TLB에 존재하면(hit) → 즉시 프레임 번호 반환.
    3. 없으면(miss) → 페이지 테이블에서 찾아야 함.

 

계층적 페이징 (Multilevel Paging)

  • 주소 공간이 커질수록 페이지 테이블이 거대해지므로, 이를 여러 수준으로 나눔.
  • 예: 32비트 주소 공간 → 2단계 페이징 사용 (Intel x86).
  • 64비트 주소 공간 → 4~5단계 페이징 사용 (x86-64, ARMv9).

 

대체 전략

  • 해시 페이지 테이블(Hash Page Table) : 큰 주소 공간에서 충돌을 줄이기 위해 해시 기반 접근.
  • 역 페이지 테이블(Inverted Page Table) : 물리 프레임마다 하나의 엔트리를 두어, 주소 공간 낭비를 줄임.

 

스와핑 (Swapping)

  • 메모리 부족 시 일부 프로세스의 페이지를 디스크(보조 저장장치) 로 내보내고, 필요 시 다시 적재.
  • 다중 프로그래밍 정도를 높여 CPU 활용률을 향상.

 

아키텍처 예시

Intel 32비트(x86)

  • 4GB 논리 주소 공간.
  • 2단계 페이징 (페이지 디렉토리 + 페이지 테이블).
  • 페이지 크기: 4KB (일반), 4MB (대형 페이지).

x86-64, ARMv9

  • 64비트 주소 공간.
  • 계층적 페이징(보통 4~5단계).

 

정리

  • 옛날 방식: Base/Limit 레지스터, 연속 메모리 할당
  • 현대 방식: 페이징 + TLB + 계층적 페이지 테이블
  • 확장/최적화: 스와핑, 해시 페이지 테이블, 역 페이지 테이블

'IT' 카테고리의 다른 글

운영체제 #10  (0) 2025.08.27
운영체제 #8  (0) 2025.08.24
운영체제 #7  (0) 2025.08.20
운영체제 #6  (1) 2025.08.19
운영체제 #5  (2) 2025.08.18