所谓保护模式下的“保护”,主要体现在特权级上,以后随着后面工作的展开,会越来越多的和它们打交道,现在是时候说道说道了。

在人类社会中出现恶势力时,人们总是希望出现一位具有神力的英雄来拯救世人、主持公道。阶级是骨子里的东西,它一直存在,然而阶级和平等并不矛盾,阶级是为了平等而生,这是自然界为维护秩序自然产生的事物,如果打破了这个平衡,平等也将不复存在。正因为阶级和平等之间的相互制约,才有了今天的民主与和平,只有让少数人获得特权去维护公平,社会才会存在祥乐安康,计算机中也是一样。

保护模式的安全性也体现了“阶级”:为了维护计算机世界的和平,避免潜在的危险,对于那些不受控的程序,剥夺它们的部分能力,使它们没有杀伤力,让它们只能老老实实地做好公民。

先给大家笼统地介绍下特权级那点事:

整个计算机世界其实可以分为两部分,访问者和受访者。访问者是动态的,具有能动性,它主动去访问各种资源。受访者是静态的,它就是被访问的资源,只能干坐着等待访问者光顾。访问者的特权级可以变,受访者的特权不能变。

拿开车举例,cpu相当于汽车,驾驶车的人可以是普通人,也可以是警察。同样一辆车,只有警察才能把车开到警局,普通人开着这辆车去警局会被拦下的,在警局门口的警卫说了,只有警车才能开进警局,警卫判断汽车是否为警车的标准是,检查司机是否为警察,只要是警察开的车,一律按警车放行处理。当前特权级就是指cpu的状态,普通人的特权为3,警察的特权为0。当普通人想把车开进警局,到警局门口就得换一位身份为警察的司机,这就是特权级变换,而cpu,也就是这辆车,它在硬件上始终是不变的,车还是那辆车,该几个轮子就是几个轮子,只是车的角色在变。开车的人不同,车的角色就不同,普通人开,这车就是普通的私家车,当换警察做为司机时,它就成了警车,到了警局门口,警卫便让其通行。

建立特权机制是为了通过特权来检查合法性,整个计算机世界的特权检查,都是发生在“访问者”在访问“受访者”的一刹那,实际上就是检查访问者的特权级和受访者的特权级是否匹配。

不知道各位看官听我说这个例子后有没有对特权有个概貌的认识,下面咱们从细节上展开讨论。

CPU既是大脑,又是警察,它负责维护计算机内的安全。它将程序拥有的权利分为4个等级,这就是保护模式下特权级的由来。

特权级按照权力从大到小分为0、1、2、3级,没错,数字越小权利越大,0级特权能力最大,3级特权能力最小。如果您看过七龙珠,0级特权相当于破坏神,无所不能。连悟空变成赛亚人之神也打不过他,3级特权相当于像布玛那样的普通人类(其它特权级请大伙儿自己对号入座^_^)。

0级特权是我们操作系统内核所在的特权级,必须得让操作系统处于至高无上的地位,这样它的子民(应用程序)才不会反了天。计算机在启动之初就以0级特权运行,MBR是咱们所写的第一个程序,它是含着金钥匙出生的,自从它从BIOS那里接过第一棒的时候,它已经是像神一样处于0级特权了。整个系统的特权级分布如图

一步步编写操作系统 52 深入浅出cpu的特权级相关推荐

  1. 一步步编写操作系统 71 直接操作显卡,编写自己的打印函数71-74

    一直以来,我们在往屏幕上输出文本时,要么利用bios中断,要么利用系统调用,这些都是依赖别人的方法.咱们还用过一个稍微有点独立的方法,就是直接写显存,但这貌似又没什么含量.如今我们要写一个打印函数了, ...

  2. 一步步编写操作系统 62 函数调用约定

    由于我们要将c语言和汇编语言结合编程啦,所以一定会存在汇编代码和c代码相互调用的问题,有些事情还是要提前交待给大家的,本节就是要给大家说下函数调用规约中的那些事儿. 函数调用约定是什么? 调用约定,c ...

  3. 一步步编写操作系统 69 汇编语言和c语言共同协作 70

    由于有了上一节的铺垫,本节的内容相对较少,这里给大家准备了两个小文件来实例演示汇编语言和c语言相互调用. 会两种不同语言的人,只是掌握了同一件事物的两种表达方式.人在学习一种新语言时,潜意识里是建立了 ...

  4. 一步步编写操作系统 25 cpu的保护模式

    在保护模式下,我们将见到很多在实模式下没有的新概念,很多都是cpu硬件原生提供,并且要求的东西,也就是说按照cpu的设计,必须有这些东西cpu才能运行.咱们只要了解它们是什么并且怎么用就行了,不用深入 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 16 分频 32 分频是啥意思_Verilog中任意分频的实现
  2. 程序员的高速学习法——以JS学习为例,进行图解
  3. EMNLP 2021 | 正则表达式与神经网络的深度融合(续)
  4. 解决React Native报错:Error:Found unexpected optical bounds (red pixel)
  5. java uuid静态方法_Java UUID toString()方法与示例
  6. 解决LSP问题导致无法上网
  7. Windows7下硬盘安装RHEL 6.1
  8. yyb要填的各种总结的坑
  9. 逆向破解之160个CrackMe —— 007
  10. php -- php数组相关函数
  11. 【iOS开发】更改App图标下方显示的名称
  12. numpy 中的 broadcasting(广播)机制
  13. 现代管理学 罗珉 第三版
  14. 关于计算机的英语作文初中,computer初中英语作文范文
  15. link library 、target library、symbol library、synthetic library对照分析-基础小知识(九)
  16. PS-制作动态图GIF
  17. 美味连连-QQ游戏辅助-简单实用的QQ游戏美味连连辅助(非外挂)
  18. 基于SSM框架的洗车店预约系统的设计与实现
  19. ppt文字转换成word
  20. Python 猜数字小游戏,3次机会

热门文章

  1. 第四周读书笔记《构建之法》
  2. 计算机 - 网络原理
  3. SVN查看提交日志的命令
  4. C#中的interface
  5. 动态规划6个题目总结比较
  6. 2018蓝桥模拟赛·天上的星星 暴力|二维树状数组
  7. MySQL报错113_mysql 2003 (113)
  8. 计算机信息管理相关课题论文,计算机信息管理课题论文[].doc
  9. linux vma,内存管理 – Linux内核API find_vma
  10. java加载sql2016_SQl Server 2016 with R.