所谓保护模式下的“保护”,主要体现在特权级上,以后随着后面工作的展开,会越来越多的和它们打交道,现在是时候说道说道了。
在人类社会中出现恶势力时,人们总是希望出现一位具有神力的英雄来拯救世人、主持公道。阶级是骨子里的东西,它一直存在,然而阶级和平等并不矛盾,阶级是为了平等而生,这是自然界为维护秩序自然产生的事物,如果打破了这个平衡,平等也将不复存在。正因为阶级和平等之间的相互制约,才有了今天的民主与和平,只有让少数人获得特权去维护公平,社会才会存在祥乐安康,计算机中也是一样。
保护模式的安全性也体现了“阶级”:为了维护计算机世界的和平,避免潜在的危险,对于那些不受控的程序,剥夺它们的部分能力,使它们没有杀伤力,让它们只能老老实实地做好公民。
先给大家笼统地介绍下特权级那点事:
整个计算机世界其实可以分为两部分,访问者和受访者。访问者是动态的,具有能动性,它主动去访问各种资源。受访者是静态的,它就是被访问的资源,只能干坐着等待访问者光顾。访问者的特权级可以变,受访者的特权不能变。
拿开车举例,cpu相当于汽车,驾驶车的人可以是普通人,也可以是警察。同样一辆车,只有警察才能把车开到警局,普通人开着这辆车去警局会被拦下的,在警局门口的警卫说了,只有警车才能开进警局,警卫判断汽车是否为警车的标准是,检查司机是否为警察,只要是警察开的车,一律按警车放行处理。当前特权级就是指cpu的状态,普通人的特权为3,警察的特权为0。当普通人想把车开进警局,到警局门口就得换一位身份为警察的司机,这就是特权级变换,而cpu,也就是这辆车,它在硬件上始终是不变的,车还是那辆车,该几个轮子就是几个轮子,只是车的角色在变。开车的人不同,车的角色就不同,普通人开,这车就是普通的私家车,当换警察做为司机时,它就成了警车,到了警局门口,警卫便让其通行。
建立特权机制是为了通过特权来检查合法性,整个计算机世界的特权检查,都是发生在“访问者”在访问“受访者”的一刹那,实际上就是检查访问者的特权级和受访者的特权级是否匹配。
不知道各位看官听我说这个例子后有没有对特权有个概貌的认识,下面咱们从细节上展开讨论。
CPU既是大脑,又是警察,它负责维护计算机内的安全。它将程序拥有的权利分为4个等级,这就是保护模式下特权级的由来。
特权级按照权力从大到小分为0、1、2、3级,没错,数字越小权利越大,0级特权能力最大,3级特权能力最小。如果您看过七龙珠,0级特权相当于破坏神,无所不能。连悟空变成赛亚人之神也打不过他,3级特权相当于像布玛那样的普通人类(其它特权级请大伙儿自己对号入座^_^)。
0级特权是我们操作系统内核所在的特权级,必须得让操作系统处于至高无上的地位,这样它的子民(应用程序)才不会反了天。计算机在启动之初就以0级特权运行,MBR是咱们所写的第一个程序,它是含着金钥匙出生的,自从它从BIOS那里接过第一棒的时候,它已经是像神一样处于0级特权了。整个系统的特权级分布如图