Computer Science/Operating System

[OS] 15장: 주소 변환의 원리

kyxxn 2024. 6. 27. 01:25
728x90

15장: 주소 변환의 원리

개요

어떻게 메모리를 가상화 하여
효율성과 제어를 달성할 것인가 ?

효율성: 가상 주소 → 물리주소 변환의 속도

제어권: 접근 가능한 메모리 위치 제한

유연성: 프로그래밍 편의

메모리 가상화

  • 하드웨어 지원이 필요함
    • 빠른 주소 변환
    • MMU, TLB, Cache ..
  • OS 역할
    • 빈 공간 관리 및 할당
    • 관리 효율 및 접근 제어
    • 가상 공간의 동적 운영

메모리 사용 예

void func() {
        int x = 3000;
        x = x + 3;
}

어셈블리어 변환

  1. 128 번지 명령어 인출
  2. 명령 실행
  3. 132 번지 명령어 인출
  4. 명령 실행
  5. 135 번지 명령어 인출
  6. 명령 실행

가상 주소와 물리 주소

물리적 주소

  • 물리 메모리에 그대로 올리면 안됨
    → OS 재배치 작업 필요
  • 메모리 접근 시마다 실제 주소로 변환 작업

Base/Bounds Register

  • Base Register = 재배치된 위치의 시작 주소
  • Bound Register = 재배치된 위치의 상한점

실제 물리주소 = 가상주소 + Base

Bound 레지스터는 범위 벗어났는지 등의 무결성 검사

Base/Bounds 문제점

  • Stack과 Heap 사이 공간이 낭비됨 = 내부 단편화
  • 프로세스마다 요구하는 주소 공간의 크기가 다르면 ?
  • 물리 메모리가 가상 주소 공간보다 작으면 ?

운영체제의 역할

메모리 접근 시 주소 변환은 하드웨어가 실행함
OS는 뭘 할까 ?

운영체제 할 일

  1. 빈공간 관리
    • 물리공간에서 적절한 위치를 찾아 할당
    • 사용 완료된 공간은 빈 공간으로 회수
  2. Context Switch
    • Base/Bounds 레지스터의 값 저장 및 복원
      PCB에 저장하여 관리함 (커널 모드 필요)
    • 필요 시 프로세스 재배치
  3. 프로세스 실행 시
    • 메모리 예외 발생처리

만약 할당되는 크기가 다르다면 ?
연속되는 빈 공간을 따로 관리 ?

'Computer Science > Operating System' 카테고리의 다른 글

[OS] 17장: Free-Space Management  (0) 2024.06.29
[OS] 16장: Segmentation  (0) 2024.06.28
[OS] 13장: Memory Virtualization  (0) 2024.06.26
[OS] Cuncurrency: 동시성 개요  (0) 2024.05.06
[OS] 멀티 프로세서 스케줄링  (0) 2024.05.05