메모리 맵

Memory map

컴퓨터 과학에서 메모리 맵은 메모리가 어떻게 배치되는지를 나타내는 (보통 메모리 자체에 존재하는) 데이터 구조입니다."메모리 맵"이라는 용어는 상황에 따라 다른 의미를 가질 수 있습니다.

  • 어소시에이티브메모리를 사용하는 가장 빠르고 유연한 캐시 조직입니다.연상메모리는 메모리 [further explanation needed]워드의 주소와 내용을 모두 저장합니다.
  • 부트 프로세스에서 메모리 맵은 운영체제 커널에 메모리 레이아웃을 지시하기 위해 펌웨어에서 전달된다.여기에는 총 메모리 크기, 예약된 영역에 대한 정보가 포함되어 있으며 아키텍처에 고유한 기타 세부 정보도 포함될 수 있습니다.
  • 가상 메모리 구현 및 메모리 관리 유닛에서 메모리 맵은 특정 프로세스의 가상 메모리 레이아웃과 해당 공간이 물리적 메모리 주소에 어떻게 관련되어 있는지 매핑을 저장하는 페이지 테이블 또는 하드웨어 레지스터를 참조합니다.
  • 네이티브 디버거 프로그램에서 메모리 맵은 로드된 실행 파일과 메모리 영역 간의 매핑을 말합니다.이러한 메모리 맵은 메모리 주소(함수 포인터 등)를 실제 기호로 해결하기 위해 사용됩니다.

PC BIOS 메모리 맵

IBM Personal Computer and Compatible용 BIOS는 운영 체제 또는 응용 프로그램에서 메모리 레이아웃을 가져오는 데 사용할 수 있는 일련의 루틴을 제공합니다.사용 가능한 루틴은 다음과 같습니다.

BIOS 기능: INT 0x15, AX=0xE801:[1]

이 BIOS 인터럽트 호출은 64MB 이상 구성의 메모리 크기를 가져오기 위해 사용됩니다.1994년 8월 23일 이후 AMI BIOS에서 지원됩니다.발신자는 AX를 0xE801로 설정하고 int 0x15를 실행합니다.오류가 발생하면 루틴이 반환되고 CF(Carry Flag)가 1로 설정됩니다.에러가 없는 경우는, CF clear 로 루틴이 반환되어 레지스터의 상태가 다음과 같이 표시됩니다.

등록하세요 값 설명
EAX 1 ~ 16M 사이의 확장 메모리(KB) (최대값: 0x3C00 = 15360KB).
EBX 16M 이상의 64K 블록 수.
ECX 구성된 메모리(1M ~16M)(KB).
EDX 16M을 초과하는 64K 블록의 설정 수.

BIOS 기능: INT 0x15, AX=0xE820 - 시스템 메모리 맵 가져오기:[2]

입력:

등록하세요 값 설명
EAX 0x0000E820
EBX 맵의 선두에서 시작하는 계속값 또는 0x0.
ECX 결과의 버퍼 크기(20바이트).
EDX 0x534D4150 ('SMAP'의 경우 ASCII)
ES:DI segment: 결과의 버퍼 위치를 지정합니다.

SMAP 버퍼 구조:

오프셋 크기 값 설명
0 QWORD(8바이트) EBX에 의해 참조되는 메모리 맵 영역의 기본 주소.
8 QWORD(8바이트) 바이트 단위 길이
16 DWORD(4바이트) 주소 범위 유형.

사용방법:운영체제는 메모리(20바이트 버퍼)에 SMAP 버퍼를 할당해야 합니다.그런 다음 "입력" 표에 지정된 대로 레지스터를 설정합니다.첫 번째 콜에서는 EBX를 0으로 설정해야 합니다.다음 단계에서는 INT 0x15를 호출합니다.오류가 없는 경우 인터럽트 콜은 CF 클리어와 함께 반환되며 버퍼는 메모리 맵의 첫 번째 영역을 나타내는 데이터로 채워집니다.EBX는 OS가 루틴을 다시 호출하면 버퍼에 다음 영역이 반환되도록 BIOS에 의해 업데이트됩니다.BIOS 에서는, EBX 를 모두 제로로 설정합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "15E801".
  2. ^ "15E820".