2011年4月24日

分页机制

摘要: 分页机制使用两级转换表,第一级叫做页目录(Page Directory),存储在一个物理页中.大小为4KB,每个表项4字节,共有1024个表项(Page Directory Entry).每个表项对应第二级的一个页表(Page Table),每个页表也有1024项(Page Table Entry),每个表项对应一个物理页。页目录 顾名思义就是页目录项的组合(1024个页目录项PDE),一个页目录项PDE是4Bety。 整个页目录占据一个4k物理页。 项可以理解为Entry页表 顾名思义就是页表项组合(1024个页表项PTE),一个页表项PTE是4字节,一个PTE对应一个真实物理页,一页是4K 阅读全文

posted @ 2011-04-24 20:31 wanghj_dz 阅读(1733) 评论(0) 推荐(0) 编辑

自己动手写操作系统pmtest1.asm 详细解释

摘要: 段机制轻松体验 内存寻址: 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物理地址 为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限制。 公式:xxxx:yyyy 保护模式下分段机制的内存寻址: 分段机制是利用一个称作段选择符的偏移量,从而到描述符表找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,再加上偏移量 一 阅读全文

posted @ 2011-04-24 19:32 wanghj_dz 阅读(1074) 评论(0) 推荐(0) 编辑

retf,call 指令运行的详细情况

摘要: retf,call 指令运行的详细情况call指令的运行情况:(代码段只能从低到高如:ring3到ring0(这时特权级转换了,在不同级之间跳转,这是一致代码段情况)) //call也可以实现同级跳转,这是非一致代码段情况。1、根据目标代码段的DPL,从Tss中选择应该切换至哪个ss和esp //上例中目标代码段为ring0级的LABEL_SEG_CODE_DEST:2、从Tss中读取新的ss和esp,在这过程中如果发现ss,esp或者Tss界限错误都会导致Tss异常(#TS)3、对ss描述符进行校验,如果发生错误,同样产生#TS异常4、暂时性地保存当前ss和esp的值//系统自动完成把rin 阅读全文

posted @ 2011-04-24 13:05 wanghj_dz 阅读(1874) 评论(0) 推荐(0) 编辑

导航