어떤 Linux 커널 함수가 사용 가능한 실제 메모리 양을 읽는지 이해하려고 합니다. 나중에 이 정보는 어디에 저장되나요?
답변1
커널이 사용 가능한 물리적 메모리의 양을 아는 것만으로는 충분하지 않습니다. 또한 프로세서의 주소 공간에서 메모리가 어디에 있는지 알아야 합니다.
이를 달성하는 방법은 각 하드웨어 아키텍처에 따라 다릅니다.
x86 시스템에서 펌웨어는 칩셋별 방법을 사용하여 이 값을 계산하고 이 정보를 운영 체제 커널에 제공합니다.
- 이전 BIOS 버전을 사용하는 시스템에서는 BIOS 기능을 사용하여 이 정보를 얻을 수 있습니다
INT 0x15, EAX = 0xE820
.이 osdev.org 위키 기사더 알아보기. - 기본 모드에서 UEFI 펌웨어를 사용하는 시스템에서 메모리 맵은 펌웨어에 의해 다음을 통해 부트로더/운영 체제에 제공됩니다.UEFI 시스템 테이블, 특히
GetMemoryMap
서비스 를 사용하여UEFI 부팅 서비스 표
- 이전 BIOS 버전을 사용하는 시스템에서는 BIOS 기능을 사용하여 이 정보를 얻을 수 있습니다
다른 많은 아키텍처에서 (초기) 메모리 맵은 다음과 같이 제공될 수 있습니다.장치 트리 데이터시스템 펌웨어가 다른 방식으로 커널을 제공하지 않거나 펌웨어에서 효율적으로 가져오기 전에 먼저 일부 하드웨어 모델별 정보가 필요한 경우 커널에 연결하십시오.