VAS(가상 주소 공간)에 대해 배우기 시작했는데 몇 가지 질문이 있습니다.
- 아키텍처(32비트 및 64비트)에 따라 각 프로세스에 대해 몇 개의 VAS가 생성됩니까?
- 프로세스별 VAS는 하드디스크에 생성되나요? 그렇다면 공간이 부족하면 어떻게 될까요?
- VAS에는 텍스트, 데이터, BSS 등 어떤 콘텐츠가 저장되나요?
답변1
각 프로세스는 아키텍처 및 구성별 최대값까지 필요한 만큼의 가상 주소 공간을 확보합니다. 할당된 메모리 양은 다음 명령을 사용하여 조정할 수 있습니다.
brk
그리고sbrk
, 그리고mmap
.현재 x86-64에서 사용 가능한 최대값은 다음과 같습니다.128TiB 4레벨 페이지 테이블, 64PiB 5레벨 페이지 테이블. 32비트 x86에서 사용 가능한 최대 값은 다음에 따라 다릅니다.VM 분할 구성;각 프로세스의 크기는 1GiB에서 3GiB 사이입니다.
아니요.
각 프로세스의 주소 공간에는 프로세스가 메모리에 액세스하는 데 필요한 모든 것이 포함되어 있습니다. 물리적 메모리에 매핑하지 않고도 주소 공간을 할당할 수 있습니다.
답변2
1
x86/x86-64의 경우와 같이 아키텍처에 따라 다를 수 있습니다.
- 32비트는 2GB 또는 3GB로 제공됩니다.
- 64비트 커널에서 32비트 애플리케이션의 경우 4GB
- 64비트 애플리케이션(64비트 커널)의 용량은 2⁶³GB(많습니다)입니다.
2
아니요
삼
모든 것: 텍스트, 데이터, BSS 등 이는 실제 메모리가 할당된다는 의미는 아닙니다. 때때로 지연은 RAM에 할당되고, 때로는 하드웨어에 매핑되고, 때로는 계산에 매핑됩니다.