操作系统设计原则
这一段希望大家自己可以好好看一下~~
策略和机制的分离意味着操作系统可以进一步简化。在操作系统诞生之初,大家认为操作系统需要替用户干尽可能多的事情。这导致了两个问题:一、操作系统过于庞大。 二、操作系统干太多事,用户的自主性降低。 三、操作系统制作时不可能考虑到用户所有的需求,特定需要需要用户自己实现
基于这些问题,前辈们提出了机制和策略分离。机制决定怎么做,这是操作系统定义的;策略决定做什么,这是操作系统和用户都可以定义的(操作系统决定用户操作可能造成危险的部分)
UNIX的可加载模块就体现了策略和机制分离。模块存在体系机制,可加载体现策略
操作系统的结构
简单结构
简单结构意味着并没有对操作系统的各个部分进行分级分割处理,而是混杂在一起,不同程序、上下层程序之间能够直接访问
MS-DOS系统
下图为MS-DOS系统的一个结构
在这个结构中,我们可以看到应用程序能够调用系统程序从而访问硬件,能够直接访问硬件。而系统程序访问硬件也不一定要走驱动程序(API接口访问),而是可以直接访问
这将导致 MS-DOS系统很容易发生错误(恶意攻击)从而出现系统奔溃(例如:用户跨过操作系统直接调用I/O硬件进行操作,导致操作系统并不知道,出现错误)
UNIX系统
下图为UNIX系统的一个结构
UNIX系统结构的特点是:
一、用户及应用程序已经不能直接访问硬件或者系统程序
二、访问系统程序(系统服务)必须通过系统调用接口,访问硬件必须通过系统程序(系统服务)(各种API的组合)的运行
三、将操作系统简单分为了三层:硬件、系统服务、用户或应用程序。三者之间能彼此访问但是不能跨级访问
四、此方法让UNIX系统比较于MS系统安全性大大提升
五、这种系统存在的重大缺点就是内核那里提供的系统服务会随着系统的升级越来越庞大,导致操作系统显得非常冗余(很多服务可能大部分人都用不到,但是仍需要下载)
微内核
微内核的出现就解决了上面操作系统的问题——越来越冗余
核心技术
一、对内核进行模块化处理,将内核分为许多模块
二、对内核模块进行分类,分为必要/不必要部件
三、不必要的部件从内核中删除,并将其包装为系统驱动程序(例如现在电脑中的音频驱动、显卡驱动程序)
四、用户需要这些系统服务时可以自行下载这些系统服务程序,然后内核运行时,如果需要就会动态通过其提供的系统调用接口实现这些系统服务程序的功能
五、内核仅仅提供核心服务,其他服务在内核运行时动态实现
从上图中我们可以看到微内核中仅仅有三个功能,这三个功能都是必要的。至于上面的文件系统、驱动程序等都是非必要的(电脑不需要也可能运行程序,完成计算)
从这个例子,我们可以看到如果不下载上面的几个系统程序,内核的内存将会很小。至于下不下载这几个系统程序全看用户自己的需求
缺点
将部分操作系统的功能转变为系统程序去调用,意味着这些系统程序之间是独立的个体,他们仅仅和应用程序以及OS之间存在联系。他们之间如果要交互就需要通过操作系统进行,这样必然造成运行效率降低