【OS】10 - 实模式到保护模式【8086/80286的历史】

 
跳转验证此内容的连接地址

 

1
在这里插入图片描述

 

2
在这里插入图片描述

 

2
远古的开发模式弊端:
程序的定位非常困难,原因:
当一个程序员在一台机器上使用内存的开头和结尾的位置,这个内存512K;
换一台电脑运行,内存变小了256k,那么原来的程序就不能再这一台电脑上运行了;
多道程序:
A程序和外设交互,这时处理器是空转的,另外的B程序就能在处理上运行,为什么会有障碍呢?还是因为使用实地址的问题
当A和B程序有重叠的时候,并行执行会导致问题,此时就不能并行执行了。
在这里插入图片描述

 

3
段地址:偏移地址
段地址指的是一段内存的起始地址,偏移地址指的是相对于段地址偏移了多少,如果实地址发生了冲突,那就改一下段地址的位置就可以了。这是一种模块化的思想,模块整体移动,解决了冲突难以定位的问题;
如何访问1M所有的内存呢?段寄存器和通用寄存器配合访问。
在这里插入图片描述

 

4
当今处理器的鼻祖
在这里插入图片描述

 

5
默认段地址放到ds寄存器中
在这里插入图片描述

 

6
处理方式:不处理
在这里插入图片描述

 

7
不处理的过程推理,最后结果:可访问的最大地址+HMA
HMA是无效地址范围
在这里插入图片描述

 

8
8086高端地址映射到低端地址,使其合法化,这个是保护模式的触发点
在这里插入图片描述

 

9
在这里插入图片描述

 

10
在这里插入图片描述

 

11
8086没有考虑安全性
在这里插入图片描述

 

12
80286中2代表第二代产品
在这里插入图片描述

 

13
在这里插入图片描述

 

14
保护模式,保护内存段的安全
在这里插入图片描述

 

15
在这里插入图片描述

 

16
段属性
段界限:表示段内偏移地址的最大值,实际物理地址=段基地址+段偏移地址(也就是段界限)在运算时,需要检查一下段偏移是否在合法的范围内。
这样就防止"回卷"了。
段基质分开写了,是历史原因,自己不需要拼装,硬件已经拼装好了;
在这里插入图片描述

 

17
相当于一个数组,放到了内存里,在80286中把描述符表放到了gdt_ptr寄存器中了;
每一个段描述符,都是一段内存的定义;
在这里插入图片描述

 

18
在这里插入图片描述

 

19
2、8086是默认0-19地址线
3、把描述符表的地址放到gdt_ptr寄存器里
4、把某个寄存器的某一位从0变成1就可以了
在这里插入图片描述

 

20
在这里插入图片描述

 

21
在这里插入图片描述

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值