[CSAPP 9장 완전정복] 9.1~9.2 가상 메모리의 시작 - 주소와 주소 공간 이해하기

2025. 4. 22. 13:25·크래프톤 정글/컴퓨터구조(CSAPP)

가상 메모리의 시작 - 주소와 주소 공간 이해하기

프로그램은 메모리 없이 존재할 수 없습니다. 우리가 int x = 10; 같은 간단한 코드를 짤 때조차, 운영체제는 이때도 이미 복잡한 주소 변환과 공간 분리 작업을 수행하고 있죠. 이 글에서는 CSAPP 9.1~9.2절의 내용을 바탕으로, 가상 메모리(Virtual Memory)의 시작점인 주소의 개념, 주소 공간의 구성을 차근차근 살펴보겠습니다.

 

 

9.1 물리 및 가상주소 방식

주소의 종류

  • 물리 주소(Physical Address): 실제 DRAM 하드웨어 메모리의 위치를 나타내는 주소
  • 가상 주소(Virtual Address): 프로그램 입장에서 사용하는 논리적인 주소

프로그램은 가상 주소만 알고 있고, 운영체제가 이를 물리 주소로 매핑해 줍니다.

 

주소를 변환하는 이유

  • 프로세스 간 메모리 격리
  • 보안 강화(커널 접근 제한)
  • 메모리 관리 유연성
  • 코드 재배치 없이 실행 가능

 

주소를 변환하는 과정

가상 주소 (Virtual Address)
        ↓ 주소 변환
물리 주소 (Physical Address)
        ↓ 실제 DRAM 접근

이 변환은 CPU 내부에 있는 주소 변환 전용 하드웨어인 MMU와 운영체제가 협력해서 수행합니다.

 

 

9.2 주소 공간 (Address Space)

주소 공간이란, 한 프로세스가 참조할 수 있는 모든 주소의 논리적인 집합을 말합니다. 곧 가상 주소의 전체 범위를 의미하며 각 프로세스마다 고유한 주소 공간을 가지고 있습니다.

 

주소 공간의 중요성

  • 모든 프로세스가 동일한 주소를 써도 충돌 없이 실행 가능
  • 운영체제가 각 프로세스의 가상 주소를 서로 다른 물리 주소로 매핑해 줌

 

주소 공간 구조 예시 (x86-64 기준)

영역 용도 특징
텍스트(.text) 실행 코드 읽기 전용
데이터(.data) 전역/정적 변수 초기화 데이터
BSS(.bss) 초기화되지 않은 전역 변수 0으로 채워짐
힙(heap) 동적 할당 공간 (malloc) 위로 확장
스택(stack) 함수 호출, 지역 변수 아래로 확장
커널 영역 커널 코드/데이터 사용자 접근 불가 (상위 영역)

사용자 프로그램은 보통 가상 주소의 하위 영역(lower half)만 사용하고, 커널은 상위 영역(upper half)을 독점적으로 차지합니다.

 

사용자/커널 주소 공간의 분리

커널은 사용자 프로그램이 침범할 수 없는 영역에 위치하고 있고, 사용자 프로세스는 시스템 호출을 통해서만 커널에 접근이 가능합니다. 이 구조 덕분에 다음과 같은 장점들이 생깁니다.

  • 시스템 안정성 확보
  • 프로세스 간 고립성을 유지
  • 보안 침해 방지

 

핵심 요약

  • 가상 주소는 프로그램이 사용하는 논리 주소이다
  • 물리 주소는 실제 하드웨어 메모리의 위치이다
  • 주소 공간은 한 프로세스가 사용하는 가상 주소 전체이다
  • 사용자/커널 공간은 보호와 분리를 위한 메모리 구조이다
  • 주소 변환은 가상 주소를 물리 주소로 매핑하는 과정이며, OS가 매핑 정보를 관리하고 MMU가 실시간 변환을 수행한다
저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > 컴퓨터구조(CSAPP)' 카테고리의 다른 글

[CSAPP 9장 완전 정복] 9.4 메모리 관리를 위한 도구로서의 VM - 할당과 회수의 비밀  (0) 2025.04.22
[CSAPP 9장 완전 정복] 9.3 캐싱 도구로서의 VM(가상 메모리) - 지역성과 페이지  (0) 2025.04.22
[CSAPP 8장 완전 정복] 8.7~8.8 프로세스 도구 실전 사용 + 8장 전체 요약  (0) 2025.04.21
[CSAPP 8장 완전 정복] 8.6 비지역 점프 - setjmp, longjmp로 흐름 전환하기  (0) 2025.04.21
[CSAPP 8장 완전 정복] 8.5 시그널, 비동기 흐름의 시작  (0) 2025.04.21
'크래프톤 정글/컴퓨터구조(CSAPP)' 카테고리의 다른 글
  • [CSAPP 9장 완전 정복] 9.4 메모리 관리를 위한 도구로서의 VM - 할당과 회수의 비밀
  • [CSAPP 9장 완전 정복] 9.3 캐싱 도구로서의 VM(가상 메모리) - 지역성과 페이지
  • [CSAPP 8장 완전 정복] 8.7~8.8 프로세스 도구 실전 사용 + 8장 전체 요약
  • [CSAPP 8장 완전 정복] 8.6 비지역 점프 - setjmp, longjmp로 흐름 전환하기
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기
      • 크래프톤 정글
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리)
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어)
        • Equipped in 정글(나만무)
        • 마이 정글(WIL, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CSAPP 9장 완전정복] 9.1~9.2 가상 메모리의 시작 - 주소와 주소 공간 이해하기
상단으로

티스토리툴바