今天给各位分享linux为什么用宏内核的知识,其中也会对unix是微内核还是宏内核进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Linux 为什么还要坚持使用宏内核?
这问题就和 CISC 和 RISC 之争一样没有意义。容易归纳出来一个结论,很多时候极端终将会归于中庸。
Linux操作系统是用什么语言编写的
Linux操作系统是用C语言、汇编语言编写的。
Linux(lɪnəks/ LIN-əks)是一种自由和开放源码的类UNIX 操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布,在加上用户空间的应用程序之后,成为 Linux 操作系统。Linux 也是自由软件和开放源代码软件发展中最著名的例子。
只要遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。
扩展资料
Linux系统架构
基于Linux的系统是一个模块化的类Unix操作系统。Linux操作系统的大部分设计思想来源于20世纪70年代到80年代的Unix操作系统所创建的基本设计思想。
Linux具有设备独立性,它内核具有高度适应能力,从而给系统提供了更高级的功能。GNU用户界面组件是大多数Linux操作系统的重要组成部分,提供常用的C函数库,Shell,还有许多常见的Unix实用工具,可以完成许多基本的操作系统任务。
Linux系统使用宏内核,由Linux内核负责处理进程控制、网络,以及外围设备和文件系统的访问。在系统运行的时候,设备驱动程序要么与内核直接集成,要么以加载模块形式添加。
大多数Linux系统使用的图形用户界面创建在X窗口系统之上,由X窗口(XWindow)系统通过软件工具及架构协议来创建操作系统所用的图形用户界面。
参考资料来源:百度百科—linux
Linux 为什么还要坚持使用宏内核
作者:WDan
链接:
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
作为一个在System方向实验室待过的同学来稍微补充一下这个问题的答案。
@冯东@王垠 的答案更多是从Monolithic Kernel和Micro Kernel的设计角度比较优劣,这个话题争论的时间比较久,也需要蛮长篇幅来说。就本问题来说,“Linux为什么坚持使用Monolithic Kernel”和设计优劣还是有一定区别的。
@詹健宇 的回答与本主题较为贴近,Linus Torvalds与Andrew S. Tanenbaum(当时System研究领域的大牛 Modern Operating System一书的作者,也是今天System界领军人物Frans Kaashoek的老师)有过一场关于Linux设计是否过时的争论(),当时学术界主流观点是Monolithic Kernel只有在效率上相对Micro Kernel有优势,并且已经有学者的研究结果表明Micro Kernel的效率经过优化并不比Monolithic Kernel差。从设计角度,当年Linus在讨论中也一定程度上同意了这个观点。
那么为什么Linus还是采用Monolithic Kernel作为Linux的设计模型呢?首先,Linux本身在实现之初仅仅作为Linus一个业余项目而存在。而Monolithic Kernel由于不需要处理消息队列等等原因从实现角度来说比Micro Kernel更为方便,我个人认为这是Linus采用Monolithic Kernel的原因之一。其他原因可能是他本人从情感上喜欢这一架构,也可能他顺延模仿的Unix或者认为现有Micro Kernel消息传递的实现代码很ugly。但这些原因并不是重点,重点在于他的作品与采用Micro Kernel的Minix相比,它的易用性更好。
Minix为了尽可能兼容更多的硬件设备,做到更加全面的兼容性,在实现上尽量避免利用单一某种处理器的新特性,这也是导致其效率不高的原因之一。而Linux则认为操作系统只需要对用户态程序保持统一的API即可保证兼容性,底层硬件的驱动等支持可以扩充,并且工作量不大。在编写Linux的开始阶段,仅支持在当时使用人数占多数的i386架构,但在内存管理,网络等模块上实现均优于Minix,因此取得了大量用户的支持,并最终流行。
回到这个问题,Linux保持Monolithic Kernel设计的原因是,Linux在这种架构上可以实现的足够好(现在的Linux Kernel也证明了这一点),即使费很大力气切换到Micro Kernel架构并不会获得什么优势。同时,这些不代表Micro Kernel从今天的角度来看设计就劣于Monolithic Kernel。通过种种途径的优化总可以变得完善。Nokia的Symbian系统也统治了一段时间。所以归根到底,决定一款产品是否成功的要素不仅仅取决于它的设计,也在于它的实现。很有意思的是,计算机领域往往经过完善设计的产品最终结果都是失败了,像UNIX赢了Multics,设计很好的Lisp并没有C语言流行, 又像同设计OSI的愿景最后由TCP/IP协议完成。这篇Worse is Better就是说的这个道理:Worse Is Better
另外@王垠可能对System领域了解不是很深:) 操作系统保护内存的原因并不是因为C语言的限制。操作系统设计的目的是为了方便用户态程序不用过于关心硬件的底层细节,为用户态程序提供各种系统资源的抽象。而内存隔离的目的一是为了用户态程序不影响其他用户态程序的状态,二是为了操作系统本身的安全性,状态不被用户态程序所修改。而C语言的指针操作只是对内存访问的一种直接描述罢了,并不是C语言影响了操作系统或者处理器的设计。其他动态类型检查的比较,由于我对程序语言领域没有很多了解,所以没有办法评论。最后补充一下宏内核的宏的意思是大,即将内存管理,文件系统等模块均置于内核态,所以是Monolithic,而不是Macro这个宏:)
Linux为什么要选择宏内核
首先先说说操作系统是干什么的吧。如果专业是计算机的人可能学过操作系统这门课程,会发现课程上讲的内容和我们所认识到的操作系统差别很大。这个里面所讲的正是操作系统最核心的功能,任务调度、内存和设备的抽象和管理。然后 ,为了我们方便使用,才集成进了系统服务、驱动程序、文件系统之类的东西。
我们平时运行的程序,每个程序各运行几十毫秒,大家来回轮换,这样子我们看起来这些程序好像在“同时”运行一样。应用程序之所以能够被操作系统通过时间片的方式调度,是因为对于CPU而言,普通的应用程序和操作系统的内核运行在不同的特权级别上,我们叫作rings。应用程序运行在Ring 3,而内核运行在Ring 0。
随着科技的发展,操作系统变得越来越复杂,内核里面的东西也越来越多。人们也就开始考虑是否应该改变原有的架构,从而提高操作系统的性能和稳定性,主要是精简内核降低开发的复杂度,还有就是把各种程序尽可能的隔离,保证一个程序的崩溃不会牵连到其他的程序。上世纪80年代人们讨论得火热的微内核就是这样一种架构。
微内核考虑在操作系统的内核中保留操作系统最基本的功能,也就是任务调度、内存和设备的抽象和管理。其他的功能全部从内核移出,放到用户态中了实现,并以C/S模式对其他应用程序提供服务。
微内核带来的好处主要是稳定性和实时性,即内核中模块数量少了,结构更精简更优化了,能够影响内核的程序和驱动也减少了,稳定性随之提高;另外就是实时性,内核精简了以后,响应的时延的减小。不过并不是精简了以后会使得性能提升,微内核使得内核中只有最关键的部分,其他模块和系统功能全部作为独立模块放到用户态空间中运行,功能分散了以后增加了通信的成本。不过微内核操作系统的特点尤其适合工控系统的控制,而且设计简单,在小型的系统中有不少的应用。另外亦有不少实时操作系统是使用微内核架构设计。
所有的理论设计,放到现实的工程中都是要做折衷的。所以有混合内核的出现,综合宏内核和微内核的不同优点,在两个方案中折衷设计。OS X和Windows就属于这类。至于Linux,上千万行代码,架构岂是说改就能改的。使用Linux构建的系统,不少都是要追求性能的吧,前面也说到微内核会降低性能,在Linux中,我们为了使得一个事情性能更高,往往还要把这个模块放到内核中运行,比如PF_RING。所以在需要考虑性能的时候,微内核又显得不那么合适,像微软一样取一个折衷算是一个好的办法。
什么是微内核和宏内核?
微内核是将服务转移到进程上的一种内核模式。宏内核是一种传统的内核结构,它将进程管理,内存管理等各项服务功能都放到内核中去,通常用在通用式的内核上,如unix,linux等。
两个系统的内核是通过进程的创建FORK的实现来比较,因为进程的创建涉及到系统调用,内存管理,文件管理等系统的主要方面。因此通过比较FORK的实现可以大致看到内核的差别。
微内核的代表:Minix,在Minix中,操作系统的内核,内存管理,系统管理都有自己的进程表,每个部分的表包含了自己需要的域。表象是精确对应的,为了保持同步,在进程创建或结束时,这三个部分都要更新各自的表。
结构
微内核是内核的一种精简形式。将通常与内核集成在一起的系统服务层被分离出来,变成可以根据需求加入的选件,这样就可提供更好的可扩展性和更加有效的应用环境。使用微内核设计,对系统进行升级,只要用新模块替换旧模块,不需要改变整个操作系统。
可以用商业对比来解释微内核的模块概念。考虑一个过度忙碌的商务经理。通过将工作分给其他人,这位经理可以将他的能力更有效地用于重要的商务工作中去,并集中于其他一些任务,例如开辟新的商务分支等。
以上内容参考:百度百科-微内核
关于linux为什么用宏内核和unix是微内核还是宏内核的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。