震撼的Linux全景图:业界成熟的内核架构长什么样?

1)Linux怎么来的?

  • Linus 为了方便访问大学服务器中的资源 ,在自己的机器上写了一个文件系统和硬盘驱动,这样就可以把自己需要的资源下载到自己的机器中。随后linus把这款操作系统雏形开源,成千上万的程序员敲出了linux操作系统。

2)为什么很多公司企业网络把linux当作服务器来使用?

  • Linux 系统性能稳定且开源

3)Linux系统中基本思想是什么?

  • 一切都是文件:每个文件都有确定的用途,包括用户数据、命令、配置参数、硬件设备等对于操作系统内核而言,都被视为各种类型的文件。

4)Linux能发展到今天仅仅是靠一群黑客吗?

  • 由很多世界级的顶尖科技公司联合开发,如 IBM、甲骨文、红帽、英特尔、微软,它们开发 Linux 并向 Linux 社区提供补丁,使 Linux 工作在它们的服务器上,向客户出售业务服务。

5)Linux 内部的全景图长什么样?

 

 

 

 

6)现阶段我们需要把上图掌握到什么程度?

  • 知道大概有5个组件,好几十模块,每个模块完成什么功能

7)这么多模块,模块与模块之间是如何通信的?

  • 之间的通信主要是函数调用

8)直接使用函数调用来通信有什么缺点?

  • 一旦有一个函数出现问题,那就系统崩溃。

9)既然确定这么明显,那为什么还要采用这种方式?

  • 因为它的性能极高,操作系统好不好,性能说了算。

10)苹果操作系统的内核Darwin长什么样?

 

 

 

 

  • 它有两个内核层——Mach 层与 BSD 层。

  • Mach 内核是卡耐基梅隆大学开发的经典微内核,提供最基本的操作系统服务

  • BSD 则是伯克利大学开发的类 UNIX 操作系统,提供一整套操作系统服务。

11)为什么两套内核会同时存在呢?

  • Mach是最开始的,但是随着发展它的性能不能很好的完成业务。为了兼容之前的Mach开发的应用和设备驱动,就保留了它,同时引入新的BSD内核。

12)应用如何使用 Darwin 系统的服务呢?

  • 通过用户层的框架和库来调用 Darwin 系统 API。

13)那我Darwin 系统如何区分用户要调用的是Mach层的服务还是BSD层的服务?

  • 调用时,传一个号码进来,如果小于0,则是调Mach内核的服务。如果大于0,则是调BSD内核的服务。

14)Mach 中的组件 Libkern是什么?

  • 一个库,提供了很多底层的操作函数,同时支持 C++ 运行环境。

15)IOKit又是什么?

  • 依赖Libkern库,管理所有的设备驱动和内核功能扩展模块。

16)Windows 的内核 NT怎样来的?

  • 一开始windows的内核是MS-DOS,没有界面,它也没有硬件保护机制,后来微软基于它研发的图形界面不稳定,动不动就死机。竞争对手也用上了类UNIX操作系统,所以微软必须搞一套自己的操作系统来上市竞争--Windows NT就诞生了。

17)什么是Windows NT?

  • 微软于 1993 年推出的面向工作站、网络服务器和大型计算机的网络操作系统,也可做 PC 操作系统。是一款全新从零开始开发的新操作系统,并应用了现代硬件的所有特性,“NT”所指的便是“新技术”(New Technology)。

18)NT 内核架构图长什么样?

 

 

 

 

  • 上图中我们只关注内核模式下的东西,也就是传统意义上的内核。

18)为什么内核之下是硬件抽象层 HAL?

  • 不同的硬件平台只要提供对应的 HAL 就可以移植系统了

19)NT内核的精妙之处在哪里?

  • 各层次分明,各个执行体互相独立,这种“高内聚、低偶合”的特性,正是检验一个软件工程是否优秀的重要标准。

20)Linux、Darwin-XNU 和 Windows 的区别是什么?

  • Linux 性能良好,结构异常复杂,不利于问题的排查和功能的扩展。

  • Darwin-XNU 和 Windows 结构良好,层面分明,利于功能扩展,不容易产生问题且性能稳定。

21)Windows NT 内核属于哪种架构类型?

  • NT是混合内核,内核相较于linux来说小,但是仍有一些模块在内核,也有相当多的模块在用户态。 架构额外清晰,也难怪几十年迭代都未曾大改大变

posted on 2022-03-10 23:03  Love&Share  阅读(1349)  评论(0编辑  收藏  举报

导航