|
|
发表于 2004-11-13 14:00:00
|
显示全部楼层
Re:说下现在学到哪了(活跃一下论坛)哈哈哈"某些人一
第三个问题:在x86平台上使用分段+分页来地址.
有一个叫段描述符表 三种,GDT,LDT,IDT,分别代表全局描述符,局部描述符,和中断门).GDT,是唯一的。各个任务(TASK)的LDT都不同,在发生任务切换的时候,LDT需要被改变.
在一个虚拟地址被映射到物理地址时,需要经过两步,先中LDT/GDT中查出是哪个段,然后中段中查是哪一页(具体过程忘了.大概就是这样,要经过两次映射的).然后再得到物理地址.操作系统可以改变页来把一个虚拟地址在不同时候映射到不同的物理地址.如果访问某一页的时候,该页不在物理内存中,就会有一个缺页中断,操作系统catch住这个异常,把保存在磁盘中的内存调入到内存里来,这里就有了一个换页的算法(就是什么时候把一个物理内存页交换到磁盘上)
LDT / GDT / IDT 有对应的段描述符寄存器. 在9x系统下这些表是没有被保护的。我们可以写这些表,改变这些表中描述的段的属性,就可以把我们的代码的运行级别动态的提升到ring0级别(IDT中代码一般是0级别的).这就是当年CIH的做法.
|
|