我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:百万心水论坛 > 段式存储系统 >

在看《自己动手写操作系统 第二版》时遇到一个问题当使用i386的

归档日期:04-17       文本归类:段式存储系统      文章编辑:爱尚语录

  在看《自己动手写操作系统 第二版》时,遇到一个问题,当使用i386的页式存储时,为什么还需要用段选择子?

  在看《自己动手写操作系统 第二版》时,遇到一个问题,当使用i386的页式存储时,为什么还需要用段选择子?

  我感觉,开启分页机制后,32位地址完全可以表示完整的内存了。而如果再用“16位段选择子:32位偏移地址”这种线性地址的话,段选择子对应的表项必须是从0开始,界限为4G的段,只能在低...

  而如果再用“16位段选择子:32位偏移地址”这种线性地址的话,段选择子对应的表项必须是从0开始,界限为4G的段,只能在低三位改变其权限什么的;但是页表本身就已经规定了权限和是否存在等属性,因此我感觉开启分页机制后完全没有必要再使用段选择子了。

  但是我看到书上仍然使用了Selector:Address的格式,虽然书中Selector确实是对应了从0开始的平坦段,但是这个分段完全没有意义啊。展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  但i386的情况是特殊的。由于i386系列的历史演变过程,它对页式存储管理的支持是在其段式存储管理已经存在了相当长的时间以后才发展起来的。所以,不管程序是怎样写的,i386 CPU一律对程序中使用的地址先进行段式映射,然后才能进行页式映射。

  这是Intel的规定,所以操作系统只好迁就他一下。写个从0开始的平坦段敷衍它一下啦。因为经过这个0起始的段式映射,映射前后的地址实际上是不变的,这样就绕过了这个问题。但硬件还是会先进行段式映射,所以操作系统要事先给他准备好一个段选择子,尽管他不起任何作用。

  这些都是历史遗留问题。你看看他段选择子的格式就更怪了,基地址和长度都被分成了好几截,说明一开始Intel并没有想到内存能到4GB这么大,结果......,呵呵。明知道错了也不改,仗着自己市场份额大要软件迁就他,太霸道了。更多追问追答追问那么,一般来说页表是怎样存放的,GDT还是LDT多一些?追答中国目前的体制根本不可能,芯片都是打磨的。

本文链接:http://maps-enzymes.com/duanshicunchuxitong/47.html