汇编学习笔记(19) - 内存分段模式的总结

基本总结

1. 保护模式采用 [ 选择子 : 偏移地址] 的方式寻址,选择子包含 特权级 表选择表索引三部分,表选择只能是 GDT 和LDT 二选一

2. 表中存储着 存储段的段地址 也存储着称之为门和系统结构的数据,通过这些数据可以二次寻址,二次寻址是CPU自动完成的

3.  门 内存储着选择子偏移 ,所以门也是通过 [ 选择子 : 偏移地址] 二次寻址的,二次寻址仍然需要指向 表中的 存储段

4. 存储段包括 数据段和代码段

5. 代码段分两种 一致代码段 非一致代码段,他们的权限要求稍有区别

6. 函数的调用可以直接指向 表中的代码也可以指向表中的各种门,然后通过各种门二次寻址

7. 特权提升的调用都需要通过门来实现,而提升特权后的运行位置由门决定,所以用户代码没有权利随意决定高特权运行的代码

 

各种调用途径和特权级的总结

 

 

 

 

1. RPL只在主动调用阶段有用,比如通过 CALL JMP INT 的调用,之后通过门在调用实际代码的时候CPU会将门中RPL直接设为0,相当于RPL没有意义了

2. 所有提权路径的最终目的地都是非一致代码

3. 正向调用只能提权不能降权,返回调用只能降权不能提权

4.书中说一致代码段只能向本层或内层调用,不能向外层调用。这里指的应该是CPL所在层级而非代码所在层级,也就说只要CPL层级确定了,高层级的一致代码也是可以调用低层级的,比如说 CPL=3 那么实际上 DPL=0的一致代码也可以调用 DPL=2的一致代码,但是应该不推荐吧。

5. 不提权的情况下权限, 即CPL是不变的

  门要求 CPL < DPL, RPL< DPL

  一致代码段要求: CPL >= DPL

  非一致代码段: CPL = DPL

那么,此时可以调用相对于CPL来说     外层的门     本层的非一致代码     本层或内层的一致代码

其他总结

 

 

 

 

posted @ 2020-02-22 18:35  蹦蹦骑士  阅读(473)  评论(0编辑  收藏  举报