메모리 구조와 가상 메모리

손주현·2025년 4월 11일
0
post-thumbnail

1. 프로그램의 메모리 구조

운영체제는 프로그램을 실행할 때 메모리를 여러 영역으로 나누어 관리한다.
대표적인 구조는 다음과 같다.

  • 코드(Code) 영역
    실행할 프로그램의 기계어 코드가 저장되는 영역
    주로 읽기 전용이며, 실행 중 변경되지 않는다.
  • 데이터(Data) 영역
    전역 변수나 static 변수처럼 프로그램 전체에서 공유되는 데이터가 저장되는 공간
  • 힙(Heap) 영역
    동적으로 할당되는 메모리 공간
    new, malloc() 등을 통해 할당하며, 명시적으로 해제해줘야 합니다.
  • 스택(Stack) 영역
    함수 호출 시 지역 변수와 리턴 주소 등을 저장하는 공간
    함수가 끝나면 자동으로 메모리가 해제된다.

힙은 위쪽으로, 스택은 아래쪽으로 자라며, 중간에서 만나면 메모리 부족(overflow) 이 발생할 수 있다.


2. 가상 메모리(Virtual Memory)

가상 메모리는 실제 메모리(RAM)보다 더 큰 메모리를 사용하는 것처럼 보이게 하는 운영체제의 기법이다.

  • 프로세스마다 독립된 메모리 공간을 제공하여 안정성과 보안을 보장
  • 실제 필요한 메모리만 물리 메모리에 올려두고, 나머지는 디스크(보조기억장치) 에 저장한다.

3. 페이지와 페이지 폴트

가상 메모리는 페이지(Page) 단위로 관리된다.

  • 가상 주소 공간과 물리 주소 공간을 같은 크기의 페이지로 나눕니다.
  • 필요한 페이지만 물리 메모리에 올려 사용합니다.

페이지 폴트(Page Fault)는 접근하려는 페이지가 물리 메모리에 없을 때 발생하는 인터럽트이다.
이 경우 운영체제가 해당 페이지를 디스크에서 불러와 물리 메모리에 적재한다.


4. 스와핑(Swapping)

스와핑은 프로세스의 일부나 전체를 디스크와 메모리 사이에서 교체하는 것을 말한다.

  • 메모리가 부족할 경우, 덜 사용되는 데이터를 디스크로 내보내고(active한 프로세스에게 메모리를 할당) 필요할 때 다시 불러온다.
  • 이 과정은 느리지만 메모리를 효율적으로 사용할 수 있게 해준다.

5. 가상 메모리의 동작 과정 요약

  1. 프로세스는 가상 주소를 사용해 메모리에 접근
  2. MMU(메모리 관리 유닛)가 페이지 테이블을 참조해 물리 주소로 변환
  3. 물리 메모리에 해당 페이지가 없으면 → 페이지 폴트 발생
  4. 운영체제가 디스크에서 페이지를 읽어와 물리 메모리에 적재
  5. 프로세스는 다시 해당 데이터에 접근 가능

정리

용어설명
코드 영역실행 코드 저장, 읽기 전용
데이터 영역전역/정적 변수 저장
동적 메모리, 명시적 할당/해제
스택함수 호출, 지역 변수 저장
가상 메모리물리 메모리보다 큰 주소 공간 제공
페이지가상/물리 메모리의 단위
페이지 폴트필요한 페이지가 없을 때 발생
스와핑메모리-디스크 간 데이터 교체
profile
Clarinetist.dev

0개의 댓글