VA

전두엽힘주기·2025년 4월 25일

Computer System

목록 보기
7/13

초기 컴퓨터 시스템은 CPU가 직접 PA를 사용하여 메모리에 접근했다

[CPU] ──(주소 4)→ [메모리]
               ←(주소 4~7 데이터)

나: "게임 실행!"

동생: "유튜브 실행!"

아빠: "엑셀 실행!"

여러개의 프로그램이 동시에 실행되면 서로의 메모리를 침범할 위험이 있고 프로그램을 메모리에 자유롭게 배치하기가 어렵다

가상주소 지정

각 프로그램마다 가상의 주소 공간을 주고 그 주소를 실제 물리 주소로 변환해서 접근한다

게임은 "0번 주소"에 저장한다고 생각하고, 유튜브도 "0번 주소"에 저장한다고 생각한다

게임이: "0번 주소에서 데이터 꺼내줘!"

MMU가: "오케이, 이건 진짜로는 500번 주소야~"

컴퓨터가: 500번 주소에서 데이터를 꺼내옴

  • 프로그램 입장: "가상 주소 0x00000004에서 읽어줘!"
  • CPU: "OK, 이걸 물리 주소 0xABC004로 바꿔서 접근해야지"
  • MMU (Memory Management Unit)는 변환 테이블을 사용해서 가상 주소 → 물리 주소(PA) 로 바꿈
  • 변환된 물리 주소를 메모리로 보냄

변환테이블은 메인 메모리 (RAM)에 저장되어있고 내용을 OS가 관리, 이 테이블을 페이지 테이블이라고 부르는데 MMU가 이걸 참조해서 변환을 수행한다

[CPU] --VA--> [MMU] --변환--> [PA] --> [메모리]

        ^                    |
       |                    |
    Virtual Address       Physical Address

     ↘ 변환 정보는 ↙  
      [Page Table] ← (OS가 관리)

페이지 테이블

일종의 사전(lookup table)

ex:

가상 주소 페이지 번호진짜 주소 페이지 번호
050
124
285

... ...
게임이 말한 "0번 주소"는 → 사전에서 찾아보면 → 진짜 주소는 50번

가상주소:

[ 가상 주소 ]
┌──────────────┬────────────┐
│ 페이지 번호     │페이지 안 위치 │
└──────────────┴────────────┘

예를 들어 0x00001234라는 가상 주소가 있다면:

앞쪽은 "몇 번째 페이지인지" (페이지 번호)

뒤쪽은 "그 페이지 안의 몇 번째 칸인지" (오프셋)

변환 순서 (초간단 버전)
CPU: “가상 주소 0x00001234 접근할래!”

MMU:

페이지 번호(예: 0번)를 뽑음

페이지 테이블에서 0번 → 50번으로 매핑된 걸 찾음

변환순서

MMU:

물리 주소 = 페이지 50번의 시작 위치 + 오프셋

예: 50번 페이지 시작 주소가 0xC8000, 오프셋이 0x1234라면

물리 주소 = 0xC8000 + 0x1234 = 0xC9234

컴퓨터: 0xC9234에서 데이터를 가져옴!

비유로 쉽게 이해하기

가상 주소 = 책 번호 + 책 안쪽 페이지 번호

진짜 주소 = 도서관 안의 실제 책 위치 + 책 속의 페이지 번호

MMU = 도서관 사서!
"얘가 말한 책은 실제로 저쪽 선반의 5번째 칸에 있네!" 하고 찾아줌

주소공간

컴퓨터는 데이터를 꺼내거나 저장할때마다 주소번호를 사용
번호가 이어지는 공간을 주소 공간이라고 함
주소들이 쭉 붙어 있으면 → "선형 주소 공간(linear address space)"
주소를 3비트로 표현할 수 있다면:

2³ = 8개의 주소 가능!
→ 0 ~ 7번 주소 공간 → 이걸 3비트 주소 공간이라고 해!

주소를 32비트로 쓰면?

2³² = 약 43억 개 주소! → 요즘 일반 컴퓨터는 이걸 쓰거나

64비트 주소면?

2⁶⁴

가상주소공간 vs 물리주소공간

1. 가상주소공간

CPU가 프로그램을 실행할 때 쓰는 가짜 주소표
보통 32비트 or 64비트 크기 (2³²개 주소, 2⁶⁴개 주소)

2. 물리 주소 공간 (Physical Address Space)

실제 메모리(RAM)에 있는 진짜 주소표

예: 물리 메모리가 8GB면 → 대략 2³³ 정도의 주소 필요

메모리 크기(M)는 꼭 2의 제곱일 필요는 없지만, 편의상 2ᵐ으로 가정함

1개의 댓글

comment-user-thumbnail
2025년 4월 25일

아빠…😒

답글 달기