c语言取得显卡的线性地址,浅谈80X86关于虚拟地址到线性地址,线性地址到物理地址的实现过程...

本文详细解析了虚拟地址如何通过分段机制转化为线性地址,再经分页机制转为物理地址。重点介绍了80286的保护方式、逻辑地址和线性地址的转换过程,以及80386/80486中段描述符表的角色。实例演示了如何通过CR3和页目录表计算物理地址的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚拟保护机制:

从虚拟地址到物理地址,需要经过分段机制和分页机制两极转化。第一级是使用分段机制,将虚拟地址转化为线性地址,第二级是分页机制,将线性地址转化为物理地址。

第一级是必要的,第二级是可以禁止启动的,但是一旦禁止启动,段机制得到的线性地址,直接作为物理地址。

在80286保护虚拟地址只有分段管理机制:

无论是在实方式还是保护方式下,程序只与逻辑地址打交道,逻辑地址由段基址和偏移量组成。

在存储器中访问一个存储单元的过程:

首先是在段寄存器中,得到一个段基址,然后段基址加上存储单元的偏移量就得到在存储单元的物理地址。在保护方式下逻辑地址被成为虚拟地址,因为这个段可能不存在物理存储器上。

逻辑地址到线性地址的实现过成:

通过段选择符---->得到该段的段描述符,从而得到段的32位基址。在加上32(16)位的偏移地址就得到了32位的线性地址。

uid-27183448-id-3359131.html

段选择符是一个指向操作系统定义的段信息的指针。

(RPL)最低的两位规定了选择符请求特权的级别。00B最高的特权,11B最低特权

image002.jpg

TI表示指示器。TI=0全局描述符表。T1=1局部变量描述符。

段描述符表:

段描述符简称描述符表:在80386/80486CPU下共有三个描述符表,全局描述符,局部描述符和中断描述符。对于全局描述符来说,系统只有一个全局描述符。

详细解说中断描述符:

存储了中断程序的入口的

段地址和段内的偏移地址。

中断描述表里面包含了中断描述符,陷阱门描述符和任务门描述符。中断门和陷阱门间接的提供了中断程序的入口段基地址。既由陷阱门或者中断门描述符索引出来一个段描述符。该段提供了中断程序的入口基地址。

在局部描述符表寄存器中,包含了一个选择器和不可见的高速缓存器。

线性地址到物理地址的转换:

分页机制将32位线性地址分为三个域,目录索引域(10位),表索引域(10位)和偏移量(12位)。

线性地址高10位*4(12位)

就是在页目录项的偏移量。页目录项的起始基址由控制寄存器CR3的高20位加上12位的0组成。所以项的地址实际上就是基地址的高20位和12位偏移地址所组成。页表项的基地址就是在页目录项中的一个项的内容高20位加上12位0构成。偏移量=表索引地址(10)位*4(12位)得到。在页表项中的32位地址由页表基地址高20位和12位偏移量构成。页表中的一个项的内容的高20位加上12位全是0,所得到就是页帧的基地址和12位偏移量组成。

说的似乎不清楚,给大家举例来说明:

假设某存储单元的线性地址为25674890H,CR3=

28345XXXH,求该存储单元单元的物理地址。

首先先将线性地址分成三个域:

0010010101           1001110100         100010010000

目录索引域(10位)

表索引域 (10位)

偏移量(12位)

因为CR3=

28345XXXH,所一目录索引域的基地址为28345000H,线性目录中所以的地址为0010010101B,故:

页目录表中所索引的物理地址=目录表基地址+偏移量(目录地址*4)

=

28345XXXH + 254H = 28345254H

如果设目录中寻址项的内容为00200021H,这表明所寻址项的对应的页表项中的基地址为00200000H。线性地址中页表索引地址为1001110100B,故:

页表中所寻址的物理地址=页表基地址+页表索引地址*4

=

00200000H+9D0H= 002009D0H

如果页表中所寻址的内容为34567021H,则页帧基地址为=

34567000H

最终要寻址寻找的单位的物理地址为=页帧地址+线性地址中的12位偏移量=

34567000H+890H = 34567890H。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值