Always Be Wise

가상 메모리 본문

컴퓨터 시스템/CSAPP

가상 메모리

bewisesh91 2021. 12. 10. 09:41
728x90

가상 메모리는 각 프로세스들이 메인 메모리 전체를 독점적으로 사용하고 있는 것 같은 환상을 제공하는 추상화이다.

각 프로세스는 가상 주소 공간이라고하는 균일한 메모리의 모습을 갖게 된다. 아래는 몇 개의 정의된 영역으로 구성되어 있는

리눅스 프로세스들의 가상 주소 공간이다. 

 

 

  • 프로그램 코드와 데이터
    코드는 모든 프로세스들이 같은 고정 주소에서 시작하며, 실행 가능 목저파일에서 직접 초기화 되어 그 크기가 고정되어 잇다.

  • 코드와 데이터 영역 다음으로 런타임 힙이 따라온다. 힙은 프로세스가 실행되면서 런타임에 동적으로 변화한다.
  • 공유 라이브러리
    공유 라이브러리의 코드와 데이터를 저장하는 영역이다. 
  • 사용자 스택
    사용자 가상 메모리 공간의 맨 위에 함수 호출 등을 구현하기 위해 사용하는 사용자 스택이 위치한다. 힙과 마찬가지로 프로그램이
    실행되는 동안에 동적으로 변화한다.
  • 커널 가상 메모리
    커널을 위해 예약되어 있는 공간으로 응용 프로그램들은 이 영역의 내용을 읽거나 쓰는 것이 금지되어 있으며, 커널 코드에 정의된
    함수를 직접 호출하는 것도 금지되어 있다. 대신, 이런 작업을 수행하기 위해 커널을 호출해야 한다.
Comments