6.检测物理内存的容量

操作系统是管理硬件的大管家,所以它要知道有哪些硬件资源啊。比如要检测内存,知道内存的容量。

1.学习 Linux 中的获取内存的方法

学习 Linux 中的获取内存的方法,调用 BIOS 中断 0x15 来实现内存容量的检测。
0x15 中断一共有 3 个子功能:

  1. EAX=0xe820 ;遍历主机上全部内存
  2. AX=0xe801 ;分别检测低 15MB 和 16MB~4GB 的内存,最大支持 4GB。
  3. AH=0x88 ;最多检测 64MB 内存,实际内存超过64MB 也按64MB返回。

这三个功能是由强到弱的,首先使用第一个功能,如果不出错,就结束,否则就使用第二个功能。如果第二个功能也出错,使用第三个功能来检测。如果都出错则机器挂起,停止运行。

BIOS 中断是实模式下的方法,所以要在进入保护模式之前检测内存。

2. BIOS 中断 0x15 的 0xe820 子功能

功能最强大的一个,能过获取内存布局。

调用前往寄存器里输入一些值,调用后就会在寄存器中返回一些值,来代表内存布局的一些信息。

在这里插入图片描述
在这里插入图片描述
使用步骤:

1.填好“调用前输入”中列出的寄存器
2.执行中断调用 int 0x15
3.在 CF 位为 0 的情况下,“返回后输出”中对应的寄存器会有对应的结果

每次调用返回一个 ARDS(地址范围描述符),所以使用这个子功能要多次调用int 0x15 中断来获取所有的内存部分的信息。
因为内存不只是DRAM,还有ROM、设备内存等。

在这里插入图片描述

3. BIOS 中断 0x15 的 0xe801 子功能

第二种方法,0xe801 子功能。

在这里插入图片描述
使用步骤:

1.将 AX 寄存器写入0xe801
2.执行中断调用 int 0x15
3.在 CF 位为 0 的情况下,“返回后输出”

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值