- 浏览: 517400 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lin_kk:
最近正在学,请问LZ有源码事例吗,如果有能发一下我邮箱吗,万分 ...
使用libgdx及其中的box2d 2.1的注意事项 -
ahong520:
编译都通不过
ffmpeg对音频解码的一般步骤 -
辽东小小:
yajun_soft 写道XXX@XXX:~$ adb she ...
adb push的Permission denied -
cdtdx:
好文, 相当不错啊. 收了.
什么是app2sd,app2ext,data2ext?app移动到SD卡哪里去了? /mnt/asec /mnt/secure -
dickycat:
学习了,最近正在学这一块,年纪大了,学起来有点吃亏!
使用libgdx及其中的box2d 2.1的注意事项
from : http://www.yandong.org/archives/191
介绍
WIKI上的解释是:在计算机科学中,微内核是一个近乎最小的软件集合,但具有能够提供实现操作系统所需的机制。
In computer science, a microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). —wiki
微内核把硬件驱动,协议栈,以及文件系统等都放入用户空间,以保持较小的代码规模。微内核的代码一般在10000行一下,像Minix不足6000行代码,而高于20000行一般都归于monokernel。
本质上说,微内核可以被看作是对传统操作系统共性的进一步抽象,从某种意义上说可以被称作是“操作系统的操作系统”。
时代背景
开始的内核都很小,主要是因为电脑很小。随着电脑功能的增强和硬件的发展等因素,内核越来越大。BSD unix开启了大内核的时代。内核规模的增长使内核更容易出现bug,而且不方便管理。而微内核的出现正是为了解决这些问题。微内核发展与上世纪80年代。与之相对的是,宏内核(mono kernel)。虽然微内核在当时是一个非常惹得话题,应用领域之中,mono kernel占据这主导地位。
发展
第一代: Mach是最早的微内核系统,由卡内基梅隆大学发展的。它从1985年运行到1994年,到Mach 3.0版结束。Mach的研究到至今似乎是结束,虽然有许多商业化操作系统,如NEXTSTEP 与 OPENSTEP,特别是 Mac OS X都是使用Mach或其衍生系统。Mach的虚拟内存(VM)系统也被BSD的开发者用于CSRG,并出现在BSD衍生的系统中,如FreeBSD。
最为悲惨的遭遇是,Mac OSX与FreeBSD并未保留Mach首倡的微核心结构,除了Mac OSX继续提供微核心于内部处理通讯以及应用程式直接控制。更有些滑稽的是,在microkernel流行的时候,windows曾经把UI部分拿出kernel,可当microkernel之风过去了的时候,微软又把部分底层的UI放回了kernel。微软总是最后一个吃螃蟹的人,当它都尝试microkernel,足以说明microkernel是多么火热。可microkernel为什么又被冷落了呢?性能。
ps:卡内基梅隆大学位于痞子堡,是美国计算机科学重镇,排名前五。 ps:Mac OS X (使用XNU 核心)基于Mach3.0 ps:NEXTSTEP基于Mach2.0
第二代:L4可以看作是Mach的改进。由德国的 GMD 设计。GMD 是德国国家信息技术研究院,相当于中科院计算所加上软件所。
在九十年代后期,微内核迎来了其生命中的第二春。一些研究人员认真分析了微内核系统性能差的原因,指出其性能差并非根本内在的因素造成,而是设计实现的失误。为什么这么说呢?因为早起的微内核系统大多是由 Mono Kernel 一步步逐渐改进而来。其很多设计并未发生重大改变。他们虽然被称为微内核,但其代码量还是很大。例如,Mach 3 内核支持 140个系统调用,代码量为 300K 字节。为证明其论点,他们设计并实现了几个性能远超第一代的微内核操作系统,我们把它们称为第二代微内核系统]。其中的一个代表作品就是 L4。
第三代:seL4是一组基于微内核构架的操作系统内核,澳大利亚研究组织NICTA创造了一个新的L4版本,称为Secure Embedded L4(简写seL4),宣布在世界上率先开发出第一个形式化机器证明的(formal machine-checked proof)通用操作系统。
微内核的发展方向
微内核性能分析
理想情况下,内核中仅留下 Address Space Support(地址空间支持),IPC (InterProcess Communication,进程间通讯),和Scheduling(调度),其他功能模块做为用户进程运行。其中IPC是极其重要的组成部分,因为模块间要是想通信的话,就的靠IPC了。IPC的性能直接决定微内核的性能。可不如人意的是,虽然IPC已经广泛应用,但其性能并不理想,从而成为微内核的性能瓶颈。
IPC的性能有多么差呢?我们来看看比较数据。微内核系统中 IPC 性能不断提高,但到 90 年代初似乎达到了顶峰。Mach 3 的 IPC 最好性能大约是 115 µs (在 486-DX 50 机器上),通常需要200 µs。对其它微内核系统也大致如此。当时许多研究人员认为,有 100 µs 左右的时间是 IPC 的固有消耗,这一时间已无法缩短。但是与之相比,在同样硬件平台上,一个 UNIX 系统调用只需要20 µs, 好过微内核系统 10 倍。
到了L4的时代,微内核的性能得到了很好的改善。L4 内核支持三种抽象概念:地址空间,线程,和 IPC。他只提供 7 个系统调用,只有 12K 字节代码。在 486-DX50 机器上,一个地址空间切换 IPC, 8 字节参数传递,只需要 5 µs。如果参数量为 512字节,只需要 18 µs。也就是说,L4的IPC比第一代微内核的IPC快20倍以上,甚至比传统操作系统的IPC还要快。
既然IPC的性能已经得到改善?那么微内核还面临什么问题呢?L4所做的改变只能使微内核在单服务器上的性能稍稍优于传统的系统。但是在多服务器上,和mono systems仍然木有可比性。为什么如此?说来话长,参见IPC机制吧。
GNU/Hurd
说起这,就要说说蛋疼而旷日持久的GNU工程。GNU 工程 创始于一九八四年,旨在开发一个完整 GNU 系统。GNU 自己的内核 Hurd 仍在开发中,离实用还有一定的距离。因此,现在的 GNU 通常使用 Linux 内核。这样的组合即为 GNU/Linux 操作系统。已经有上百万人在使用 GNU/Linux,但他们中的很多人把它误称为“Linux”。GNU Hurd的开发走过一段极其苦逼的历史,开始它基于由卡內基美隆大学的 Mach 3.0的,后来卡内基中止了Mach计划,于是自由软件基金会便转向犹他大学的Mach4,后来犹他也终止Mach计划,不甘心的自由软件基金会的人于是决定自己发展Mach,叫GNU/Mach。2002年推出GNU/Mach1.0,过了几年推出2.0,可不知什么原因2.0被放弃,重新回到1.X版本。再后来,Mach在业界的研究都被终止了,L4兴起,自由软件那帮可怜的娃不得不放弃之前近二十年的努力,将Hurd移植向L4。
所以说GNU Hurd 是一系列基于 GNU Mach 或者 L4 微内核的守护进程,这一套守护进程最终形成了 GNU 操作系统。之前GNU 计划从1990年开始开发 GNU Hurd,并且将它作为一个遵循 GPL 的自由软件发布。Hurd 的目标是从功能、安全性和稳定性上全面超越 Unix 内核,而同时又能保持对其的兼容性,为此 Hurd 遵守 POSIX 标准。
“HURD”是一个间接递归缩写,来自“HIRD of Unix Replacing Daemons”,其中“HIRD”表示“HURD of Interfaces Representing Depth”。
Hurd基于GNU Mach作微内核进行开发。这是由Richard Stallman做出的技术决定。更为滑稽的一段故事是,Stallman并不看好像linux等的monokernel,才作出使用microkernel的决定。而linux的创始人Linus Torvalds更是鄙视microkernel,认为microkernel注定是一个技术失败。而对于芸芸众生的我们,习惯了GNU/linux组合,用着linux的内核,使用着GNU的软件。
linux是否是微内核?
众多的linux是monokernel,如上面所提到的Linus Torvalds本人并不看好微内核。首先认为microkernel是一个技术失败,木有显示意义;再者,他认为没有必要为了microkernel而带来的一点蝇头小利而重写linux内核,不值得。
有哪些微内核?
- 上文提到的Mach, L4, seL4, hurd等
- Exokernel和Rambler,都是第二代微内核
- BeOS曾经是一款非常伟大的微内核操作系统,没能持续发展,被Palm收购以后寿终正寝了
- ReactOS是一款企图兼容Windows的开源操作系统项目,不过进展十分缓慢,该项目已死
- Minix3,学习现代操作系统技术真正的好教材!
- QNX,看上去非常美好的实时+微内核。黑莓推出了一款平板PlayBook,就是使用QNX。它可能是最成功的微内核操作系统之一。
发表评论
-
关于2的补码
2013-04-16 11:40 1124from : http://www.ruanyifeng.co ... -
睡眠和休眠有什么区别?
2012-12-08 01:01 1167到底用睡眠和休眠, ... -
MMU结构以及工作原理
2012-11-25 00:15 1367MMU的大名,早就听说了,可是一直不知道它是怎么工作的,前几月 ... -
Thread-Specific Data 注:相当于线程内的全局变量,可减少线程内调用其他函数的变量数
2012-11-18 01:20 1403Linux多线程编程中引入了Thread-Specific D ... -
简单的RPC编程实践——HelloWorld的实现
2012-11-13 01:39 1724近期课程的作业需要 ... -
L4操作系统(L4/Fiasco介绍)
2012-11-11 01:36 3055我们学习操作系统 ... -
Linux模块编程
2012-11-10 12:38 606Linux模块简介 首先这个module不同于m ... -
这场官司让BSD错过了机会,让linux在应用广泛度上超越了它
2012-11-10 00:50 120170年代末,在Unix发展到 ... -
主存与Cache的地址映像
2012-10-02 20:14 1488在线课件:http://210.44.176.183/jsjx ... -
满二叉树及完全二叉树的定义
2012-09-25 10:39 1371满二叉树:除了叶节点,每个父亲节点都有两个子树的,满满的二叉树 ... -
LINUX进程, 线程
2012-09-08 12:55 642http://shaohui.me/archives/256 ... -
linux线程浅析
2012-09-08 12:32 832http://hi.baidu.com/_kouu/item/ ... -
Linux进程-进程的创建
2012-09-07 23:07 1636今天学习了Linux的进程 ... -
Byte位元组单位-KB KiB MB MiB GB GiB区别
2012-09-04 16:48 2457一般而言大部份都只知道KB、MB、GB、TB…等, 倒是 ... -
内存分段机制
2012-09-03 09:24 1140转:http://book.51cto.com/art/ ... -
Linux内核学习之分段机制
2012-09-03 09:21 1064转:http://www.linuxidc.com/linux ... -
GDT与LDT的关系
2012-09-02 17:13 1308转:http://hi.baidu.com/bluewi ... -
分页和分段内存的区别
2012-09-01 01:44 3541转:http://www.cnhonkerarmy.com ... -
流水线、超流水线、超标量技术对比
2012-08-25 08:20 1049http://blog.csdn.net/do2jian ... -
哈佛结构与冯.诺依曼结构的区别
2012-08-21 14:28 969过去知道计算机的体系结构分为哈佛结构与冯.诺依曼结构,但并没有 ...
相关推荐
1980-2000年间,microkernel操作系统被广泛研究,目的是解决macrokernel的巨大,不安全,更新困难等问题,但是,由于性能上的原因,微内核系统没有发展起来。最近cpu性能已经足够强大,微内核系统又逐渐发展,例如...
微内核(Microkernel)的核心思想是将操作系统的基本服务(如进程管理、内存管理、网络通信等)作为独立的进程运行在用户态,它们之间通过消息传递进行通信。这种设计强调了模块化和隔离性,使得内核尽可能小,易于...
微内核(Microkernel)是操作系统内核的设计方法之一,它将操作系统核心功能分为两部分:小内核和服务器。小内核负责基本的系统功能,而服务器则提供系统服务。微内核的优点是提高系统稳定性和可靠性,因为小内核的...
微内核(Microkernel)是一种操作系统架构,其中,操作系统的核心仅包含最基本的系统服务,如进程间通信(IPC)、内存管理和设备驱动,而其他更复杂的功能,如文件系统、网络协议等,都作为用户空间的服务运行。...
基于微内核的操作系统PARAS的研究与开发,用于C-DAC PARAM系列超级计算机。
Swift-MicroKernel是一个专为Swift开发设计的轻量级客户端微内核架构。这个框架的核心理念是将操作系统级别的微内核概念应用到软件开发中,尤其是客户端应用的构建上,以此实现更高效、更安全、更模块化的软件设计。...
微内核(Microkernel)是一种操作系统设计模式,它的核心理念是将操作系统的核心功能最小化,只保留必要的进程间通信(IPC,Inter-Process Communication)和硬件抽象层。这样的设计使得内核更小、更稳定,因为大...
微内核(Microkernel)是一种操作系统架构,它的核心只包含最基本的服务,如进程间通信和硬件抽象,其他的系统服务如文件系统、网络协议等都运行在用户空间。这种设计提高了系统的稳定性和安全性,因为即使用户空间...
本文将深入探讨两种主要的内核架构:单体式内核(Monolithic Kernel)与微内核(Microkernel),并对比分析它们的特点、优势与劣势。 ### 单体式内核(Monolithic Kernel) 单体式内核是较为传统的内核设计方式,...
微内核(Microkernel)是一种操作系统架构,其中操作系统的核心功能被设计为小型、独立的服务,运行在用户态,而非传统的单一大型内核运行在核心态。这种设计旨在提高系统的安全性和稳定性,因为任何内核服务的故障...
首先,微内核(Microkernel)设计哲学的核心在于最小化内核功能,它只将最基本的服务,如最低级的硬件抽象、最低限度的进程和内存管理、以及基本的通信机制等集成到内核中。而其它的服务,比如文件系统、网络协议栈...
微内核(Microkernel)是一种操作系统结构,其核心仅包含最基本的系统服务,如进程间通信、内存管理和硬件抽象。这种设计思路强调了最小化内核规模,提高系统的稳定性和安全性。51单片机的资源有限,采用微内核架构...
微内核ASM & C 中的微内核除了由于未知原因在虚拟内存映射上产生偏移的 memory_service 之外,Everithing 正在工作。 这个问题使得内核无法启动第一个用户态标准进程。 任何帮助表示赞赏:)
微内核(Microkernel)是一种操作系统架构,它将操作系统的核心功能最小化,只保留最基本的通信机制,如消息传递,其余的服务则作为独立的进程运行在用户空间。这种设计旨在提高系统的安全性和可靠性,因为任何服务...
微内核(Microkernel)操作系统是只在内核中实现最基本的服务,如最低级的硬件抽象、基本的调度、内存管理等,而将其他服务如文件系统、网络协议、驱动程序等以用户态程序的形式运行。宏内核(Monolithic kernel)则...
微内核(Microkernel)是一种操作系统架构,它将操作系统的核心功能最小化,只保留最基本的服务,如进程间通信(IPC)、内存管理和硬件抽象。相比于传统的宏内核(Monolithic kernel),微内核设计提高了系统的稳定...
微内核服务器应用程序的微内核关于Microkernel 是 JavaScript 库,用于环境,在模块、有状态生命周期、钩子、事件、服务和资源的帮助下构建和管理服务器应用程序。 它遵循面向组件的范例。安装$ npm install ...
微内核定义: 微内核是内核的一种精简形式。将通常与内核集成在一起的系统服务层被分离出来,变成可以根据需求加入选件,这样就可以提供更好的可扩展性和更加有效的应用环境。使用微内核设计,对系统进行升级,只要...