操作系统——认识保护模式

操作系统——认识保护模式

实验目的及内容

  1. 认真阅读章节资料,掌握什么是保护模式,弄清关键数据结构:GDT、descriptor、selector、GDTR, 及其之间关系,阅读pm.inc文件中数据结构以及含义,写出对宏Descriptor的分析
  2. 调试代码,/a/ 掌握从实模式到保护模式的基本方法,画出代码流程图,如果代码/a/中,第71行有dword前缀和没有前缀,编译出来的代码有区别么,为什么,请调试截图。
  3. 调试代码,/b/,掌握GDT的构造与切换,从保护模式切换回实模式方法。
  4. 调试代码,/c/,掌握LDT切换。
  5. 调试代码,/d/掌握一致代码段、非一致代码段、数据段的权限访问规则,掌握CPL、DPL、RPL之间关系,以及段间切换的基本方法。
  6. 调试代码,/e/掌握利用调用门进行特权级变换的转移。

实验器材:

VMware虚拟机+Ubuntu32位

实验步骤:

1.阅读章节资料
2.调试代码a,b,c,d,e
3.根据五组代码的区别,以及其分别对应的功能进行分析。

1.a:

程序大致框架为:
在这里插入图片描述
在此之后则进入显存打印结果P;
正常执行代码pmtest1的结果如下
在这里插入图片描述
但是
在这里插入图片描述
如果将71行的这个位置的dword去除,则会导致bochs闪退报错。
很明显,这里是不能删除的,不然人家也不会写对吧,但到底是因为什么呢?
我们来查看一下编译的二进制代码,虽然只有字节显示我并不能理解其含义,但我们会发现,删除dword之后,编译出的二进制代码相比于之前会短一些。

如果使用jmp SelectorCode32:0:
这样编译出来的只是16位的代码。如果目标地址的偏移不是0,而是一个较大的值,比如jmp SelectorCode32:0x12345678,则 编译后偏移会被截断,只剩下0x5678。

2.b:

在这里插入图片描述

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值