操作系统的体系结构:大内核和微内核

操作系统的体系结构是一个开放性的问题。

正如上文所述,操作系统在核心态为应用程序提供公共的服务,那么操作系统在核心态应该提供什么服务、怎样提供服务?有关这个问题的回答形成了两种主要的体系结构:大内核和微内核。

大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。

但随着体系结构和应用需求的不断发展,需要操作系统提供的服务越来越多,而且接口形式越来越复杂,操作系统的设计规模也急剧增长,操作系统也面临着“软件危机”困境。为此,操作系统设计人员试图按照复杂性、时间常数、抽象级别等因素,将操作系统内核分成基本进程管理、虚存、I/O与设备管理、IPC、文件系统等几个层次,继而定义层次之间的服务结构,提高操作系统内核设计上的模块化。但是由于层次之间的交互关系错综复杂,定义清晰的层次间接口非常困难,复杂的交互关系也使得层次之间的界限极其模糊。

为解决操作系统的内核代码难以维护的问题,于是提出了微内核的体系结构。它将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低了内核的设计复杂性。而那些移出内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信。

微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统的可靠性。

微内核结构的最大问题是性能问题,因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大。因此有的操作系统将那些频繁使用的系统服务又移回内核,从而保证系统性能。但是有相当多的实验数据表明,体系结构不是引起性能下降的主要因素,体系结构带来的性能提升足以弥补切换开销带来的缺陷。为减少切换开销,也有人提出将系统服务作为运行库链接到用户程序的一种解决方案,这样的体系结构称为库操作系统。

时间: 2024-10-14 05:28:44

操作系统的体系结构:大内核和微内核的相关文章

大话Linux内核中锁机制之RCU、大内核锁

大话Linux内核中锁机制之RCU.大内核锁 在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL).文章的最后对<大话Linux内核中锁机制>系列博文进行了总结,并提出关于目前Linux内核中提供的锁机制的一些基本使用观点. 十.RCU机制 本节将讨论另一种重要锁机制:RCU锁机制.首先我们从概念上理解下什么叫RCU,其中读(Read):读者不需要获得任何锁就可访问RCU保护的临界

提取操作系统的基本信息(内核、系统版本、网络地址等)

功能一:能够提取操作系统的基本信息(内核.系统版本.网络地址等) ############################################################################# #File Name:System_monitor.sh #Author:Ivan ############################################################################# #!/bin/bash #把之前屏幕上

自旋锁、文件锁、大内核锁

自旋锁(Spin lock) 自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是 否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名.其作用是为了解决某项资源的互斥使用.因为自旋锁不会引起调用者睡眠,所以自旋锁的效率远 高于互斥锁.虽然它的效率比互斥锁高,但是它也有些不足之处: 1.自旋锁一直占用CPU,他在未获得锁的情况下,一直运行--自旋,所以占用着CPU,如果不能在很短的时 间内获得锁,这无疑会使CPU效率降

linux体系结构与内核结构图解

1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了,用户的应用程序,C库 (2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码  2.Linux体系结构要分成用户空间和内核空间的原因: 1)现代CPU通常都实现了不同的工作模式, 以ARM为例:ARM实现了7种工作模式,不同模式下CPU可以执行的指令或者访问的寄存器不同: (1)用户模式 usr (2)系

宏内核、微内核和混合内核

Monolithic Kernel 无论是Windows还是Linux等等,这些寻常使用的操作系统,都是用内核和管理和使用硬件的. 宏内核. Monolithic,词典义是『单一的,庞大的』,简单理解,就是内核的所有功能,从文件系统,到内存管理,到CPU调度,等等等等,都放在内核态中.这样做有一个很大的好处,那就是所有这些功能都在同一个地址空间下,大家做通信会非常方便,而且通信的成本肯定也是低的,实现起来会快糙猛一些.就是很莽很厉害. 但是,这样也会导致一些其他问题.我觉得最大的问题就是代码复杂

盘点Linux操作系统的十大版本 2012-07-04 00:00 中国IT实验室 佚名

Linux系统:Ubuntu 如今,随着Linux的不断发展,Linux所支持的文件系统类型也在迅速扩充.伴随着Linux新版本的发行,出现了大量的文件系统可能性,其中每一个不同版本的Linux所支持的文件系统类型种类都有所不同,使得用户很难了解这些不同版本产品的特点和应用方式. 再有,基于Linux开放源码的特性,越来越多大中型企业及政府也投入更多的资源来开发Linux.现今世界上,越来越多国家逐渐的把政府机构内部门的电脑转移到Linux上,加之传统的Linux用户一般都是专业人士,他们更愿意

C++标准库(体系结构与内核分析)

一.C++标准库介绍 C++标准库:C++ Standard Library C++标准库与STL有什么关系: STL:Standard Template Library STL包含6大部件,基本占标准库的80%左右内容,而另外20%是一些好用的零碎的东西,所以说C++标准库包含STL. 编译器一定带着一个C++标准库,是以头文件(header files)的形式提供的,并不是编译好的文件,而是源代码. C++标准库的头文件不带扩展名(.h),例如#include <vector>. 对于C语

Atitit.hibernate体系结构大总结

1. 4.1 hibernate基础语义 80 4.1.1 configuration 80 4.1.2 sessionfactory 81 4.1.3 session 81 2. hibernate动态数据库配置,多数据库配置 作者::老哇的爪子Attilax艾龙,EMAIL:[email protected] 转载请注明来源: http://blog.csdn.net/attilax 3. hbm2ddl 4. C3p0 dbpool 5. Criteria( 推荐)  qbc 这种方式非常

Atitit.struts2体系结构大总结

1. 国际化与异常处理 2 2. 第5章 拦截器 2 3. 第7章 输入校验 2 4. 避免表单重复提交与等待页面 2 5. Struts 2对Ajax的支持 2 6. 服务端控件 2 7. 类型转换 2 8.  第8章 输入验证 2 9.  第9章 消息处理与国际化 2 10.  第10章 Model Driven和Preparable拦截器 2 11. XWork中的Ioc 容器 3 12. 灵丹妙药 -- OGNL,数据流转的催化剂 3 13. refer 4 1.  国际化与异常处理 2