远古时期的CPU是没有特权级别的,(这儿只分析x86系列,最初的8086/8088只有实模式一种,没有特权级别)就像远古的尧舜禹时代:传说即使是大禹也要亲自干体力活,由于每天泥里来水里去,以至于小腿上都不长汗毛。
CPU也是如此,到了80286,就出现了保护模式,保护模式真正开始实用,是伴随着80386出现的,并且一直沿用下来。在保护模式设计下,CPU出现了特权阶层,就是我们所说的Ring0级别,在Ring0级别执行的都是特权指令;我们通常的程序,都是跑在Ring3级别的(Ring1、Ring2俩级别没有使用),也叫用户模式,这样,操作系统的代码跑在Ring0级别(以及一些病毒),通用程序跑在Ring3级别,通用程序可以调用操作系统的功能,就像我们可以去政府申冤啦之类,由政府的各级行政民政部门负责办理,但办理过程一般对我们是不透明的,因为那是跑在Ring0级别的,我们因为权限低,无法看到,只能等待执行结果。
单内核的思想是大量政府部门都工作在特权级别,这样的好处是政府内部效率比较高,像我们用的windows系列,从win95到vista都是如此,当然,windows也说了,他们已经把大量操作系统服务归入了用户级别,或者让用户根据自己的情况来决定是否加载:我们可以通过控制面板来配置很多服务,比如SNMP(
简单网络管理协议),还有微软自带的防火墙等。Unix/linux也是单内核系统,不过由于一发明就是根红苗正的32位科研性操作系统,(不像windows从可怜兮兮的DOS一朝暴富)所以人家连普通用户最常使用的图形界面也都不从属于系统内核,而是使用了Xwindows一类的程序,而且也不见得就比windows的效率差,因为SGI等
图形工作站使用的就是unix。
微内核的思想是只在特权级别保留最基本的操作系统功能模块,操作系统提供的大量服务都跑在用户模式,原则是越精简越好,所以称之为“micro kernal”,多用于嵌入式设备。操作系统只提供存储空间管理和进程调度、进程间通讯这类和CPU硬件关联的系统调用。微内核的想法很好,但因为效率问题而被诟病,一直也没有大规模的应用。
哲学家告诉我们,矛盾是辨证统一的。就像RISC与CISC,中西医一样,最终的结果是融合而不是分崩,将来的操作系统必将吸取两者之长,为我们使用计算机,提供更完善的帮助。