在保护模式下,我们将见到很多在实模式下没有的新概念,很多都是cpu硬件原生提供,并且要求的东西,也就是说按照cpu的设计,必须有这些东西cpu才能运行。咱们只要了解它们是什么并且怎么用就行了,不用深入到硬件之中挖掘其工作原理,咱们虽然是在做底层开发,但依然是应用型开发,我们能开发出什么样的软件,取决于cpu给咱们提供什么样的功能。就像能做出什么样的动画,主要取决于动画设计软件的功能是否强大,动画设计师的聪明才智虽然是无限的,但其驾驭能力还是很大程度上受限于软件本身的功能。今后大家会见到全局描述符表、中断描述符表、各种门结构等等,所以,大家不用对这些硬件相关的概念感到慌乱,这些是cpu提供给咱们应用的,咱们用好就行了,还记得之前说过的公设吗,这也是。

保护模式强调的是“保护”,它是在intel 80286 cpu中首次出现的,这是继8086之后,intel紧接着推出的一款产品。可见,当时的8086是多么的缺乏安全感。

保护模式中的“保护”体现在哪里?怎么就安全了?这个问题就像幸福的人问什么是幸福一样,还记得以前在百度工作时,我的技术经理李智勇问我:“你幸福吗?”,这时候我的项目经理贺亚涛抢答:“什么是幸福?”,哈哈,玩笑,您懂的。

“想要啥就有啥”并不是真正的幸福,而是发自内心地感恩、珍惜目前所拥有的一切。其实咱们已经被保护很久了,所以咱们才可以自由自在地享受计算机带来的便利。

幸福是比出来的,这一点不假。让我们看看cpu实模式的不幸,大家就清楚保护模式的幸福了。

1.实模式下操作系统和用户程序属于同一特权级,这哥俩平起平坐,没有区别对待。

2.用户程序所引用的地址都是指向真实的物理地址,也就是说逻辑地址等于物理地址,实实在在的指哪打哪。

3.用户程序可以自由修改段基址,可以不亦乐乎的访问所有内存,没人拦得住。

以上三个原因属于安全缺陷,没有安全可言的cpu注定是不可依赖的,这从基因上决定了用户程序乃至操作系统的数据都可以被随意的删改,一旦出事往往都是灾难性的,而且不容易排查。

4.访问超过64k的内存区域时要切换段基址,转来转去容易晕乎。

5.一次只能运行一个程序,无法充分利于计算机资源。

6.共20条地址线,最大可用内存为1M,这即使在过去20年前也不够用。

第4、5条是使用方面的缺陷,似乎当时(20年前)还可以忍受,但第6条简直就是硬伤,随着计算机事业的发展,程序对内存的需求必然是越来越大,如果还是1M内存,真的太束手束脚。

为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)需要被转化为物理地址后再去访问,程序对此一无所知。顺便说一句,地址转换是由处理器和操作系统共同协作完成的:处理器在硬件上提供地址转换部件,操作系统提供转换过程中所需要的页表。

一步步编写操作系统 25 cpu的保护模式相关推荐

  1. 一步步编写操作系统 10 cpu的实模式

    cpu的实模式 由于mbr在实模式下工作--什么?什么是实模式?这时候有同学打断了我.我心想,这下好办了--哈哈,没有啦,开个玩笑而已.我们这里所说的实模式其实就是8086 cpu的工作环境.工作方式 ...

  2. 一步步编写操作系统 59 cpu的IO特权级1

    在保护模式下,处理器中的"阶级"不仅体现在数据和代码的访问,还体现在指令中. 一方面将指令分级的原因是,有些指令的执行对计算机有着严重的影响,它们只有在0特权级下被执行,因此被称为 ...

  3. 一步步编写操作系统 28 cpu乱序执行

    乱序执行(乱序执行译作异步执行更贴切),是指在cpu中运行的指令并不按照代码中的顺序执行,而是按照一定的策略打乱顺序执行,也许后面的指令先执行,当然,得保证指令之间不具备相关性. 举个简单的例子,比如 ...

  4. 一步步编写操作系统 30 cpu的分支预测简介

    人在道路的分岔口时要预测哪条路能够到达目的地,面对众多选择时,计算机也一样要抉择,毕竟计算机的运行方式是以人的思路来设计的,计算机中的抉择其实就是人在抉择. cpu中的指令是在流水线上执行.分支预测, ...

  5. 一步步编写操作系统 29 cpu缓存简介

    缓存是20世纪最大的发明,其原理用一些存取速度较快的存储设备做为数据缓冲区,避免频繁访问速度较慢的低速存储设备,归根结底的原因是,低速存储设备是整个系统的瓶颈,缓存用来缓解"瓶颈设备&quo ...

  6. 一步步编写操作系统 60 cpu的IO特权级2 什么是驱动程序

    用户程序可以在由操作系统加载时通过指定整个eflags设置,操作系统如何设置自己的IOPL呢,即使内核IOPL为0也得写进去eflags寄存器中才生效.可惜的是,没有直接读写eflags寄存器的指令, ...

  7. 一步步编写操作系统 31 cpu的分支预测 下

    让我们说说预测的算法吧. 对于无条件跳转,没啥可犹豫的,直接跳过去就是了.所谓的预测是针对有条件跳转来说的,因为不知道条件成不成立.最简单的统计是根据上一次跳转的结果来预测本次,如果上一次跳转啦,这一 ...

  8. 一步步编写操作系统 15 CPU与外设通信——IO接口,下

    既然都说到IO接口了,不知道各位有没有疑问,cpu是怎样访问到IO接口呢?肯定得有个链路吧?什么?有隐约听到有同学开玩笑说:cpu用无线访问其它设备.哈哈,不知道各位听说过没有,无线的终端是有线.无论 ...

  9. 一步步编写操作系统 14 CPU与外设通信——IO接口 上

    介绍显卡之前,必须得和大家交待清楚,那么多的外部设备,cpu是如何与他们交流. 大家都学过微机接口技术吧?没学过也没关系,反正我也只是笼统地说说^_^,保证大家一定能看得懂. 按理说,如果硬件种类较少 ...

最新文章

  1. VTK:Utilities之ExtractArrayComponent
  2. JavaScript语言调试技巧
  3. IP地址子网掩码位数换算方法及解释子网掩码的作用
  4. Mac Dock截图的小技巧
  5. 免费课程:Java高级教程-项目部分视频——私塾在线提供
  6. 条码标签打印软件如何设置圆形标签
  7. 前台系统(内容管理)
  8. 计算机组成原理--复习简答题+答案
  9. rtx2060为什么叫智商卡_显卡怎么选,GTX1660TI亦是RTX2060?
  10. vue3 + vite +ts 引入静态图片
  11. 电商系统常用的产品颜色,尺码选择JS程序实现
  12. Facebook被封锁后如何申请解除
  13. pycharm设置文件模板
  14. 二进制有符号数补码计算器
  15. js对abc进行排序
  16. UE4之生成pak文件
  17. python登陆成功页面跳转_Python QT由登陆界面到主界面
  18. 全国一级计算机基础及MSOffice应用模拟软件下载
  19. 淘宝客网站架构设计方案
  20. 【阿尔萨斯】 Arthas的使用

热门文章

  1. Windows10搭建FTP服务器
  2. web前端开发面试题(答案)
  3. 【多视图几何】TUM 课程 第2章 刚体运动
  4. 嵌入式linux调试技术
  5. Windows系统启动自动运行cmd命令
  6. LINQ是死是活?——很奇怪为什么会有这样的话题?
  7. 动态规划——最长公共子序列长度
  8. [Markdown语法][快速入门][CSDN]
  9. Android11怎么截屏,对标IOS?Android11或无缘屏幕长截图
  10. 此处不允许使用分组函数_Excel中使用Vlookup函数实现数据分组