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来说小,但是仍有一些模块在内核,也有相当多的模块在用户态。 架构额外清晰,也难怪几十年迭代都未曾大改大变

震撼的Linux全景图:业界成熟的内核架构长什么样?的更多相关文章

  1. linux下TCP/IP及内核参数优化调优(转)

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...

  2. 如何在Linux上通过grub添加内核参数

    转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...

  3. Linux从用户层到内核层系列 - GNU系列之glibc介绍

    题记:本系列文章的目的是抛开书本从源代码和使用的角度分析Linux内核和相关源代码,byhankswang和你一起玩转linux开发 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswa ...

  4. Linux内核架构与底层--读书笔记

    linux中管道符"|"的作用 命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象(下图应用别人的图片) 1. 例如: ps aux | grep "tes ...

  5. Linux内核入门到放弃-无持久存储的文件系统-《深入Linux内核架构》笔记

    proc文件系统 proc文件系统是一种虚拟的文件系统,其信息不能从块设备读取.只有在读取文件内容时,才动态生成相应的信息. /proc的内容 内存管理 系统进程的特征数据 文件系统 设备驱动程序 系 ...

  6. 漫画赏析:Linux 内核到底长啥样(转)

    知乎链接:https://zhuanlan.zhihu.com/p/51679405 来自 http://TurnOff.us 的漫画 “InSide The Linux Kernel” 本文转载自: ...

  7. 搭建《深入Linux内核架构》的Linux环境

    作者 彭东林 pengdonglin137@163.com 软件 Host: Ubuntu14.04 64 Qemu 2.8.0 Linux 2.6.24 busybox 1.24.2 gcc 4.4 ...

  8. Linux内核模块编程可以使用的内核组件

    2.2.2 在阅读<深入Linux内核架构与底层原理> 作者:刘京洋 韩方,发现一些错误,有些自己的理解,特以此记录 1.工作队列(workqueue) 队列是一种可以先进先出的数据结构, ...

  9. 删除LINUX更新后多余的内核

    删除LINUX更新后多余的内核 本人使用的时fredoa 21 之前为了搞网卡驱动不知不觉升级了几次系统,每次启动后都有好几个内核让我选,真的非常头疼阿,尤其像博主这样的有点强迫的人,看着就心烦,所以 ...

随机推荐

  1. stram流char[]保存,支持中文,Filestram需要先转byte[]才能使用,但是性能更好《转载》

    学习流的使用时(stream类),逐步遇到新的理解,记录一下 1.FileStream流是处理byte[],默认UTF8类型 当你使用wirte方法时将非byte类型的输入内容,先将内容通过转换为字节 ...

  2. CF388C Fox and Card Game

    基于观察可以发现,双方都一定能保证取到每一列靠近自己的 \(\lfloor \frac{k}{2} \rfloor\) 个元素. 那么一旦一个人想要取另一个人能必然能取的部分,另一个人必然可以不让其取 ...

  3. idea的jar文件,“java.lang.SecurityException: Invalid signature file digest for Manifest main attribute

    感谢大佬:https://blog.csdn.net/mingyuli/article/details/84674483 命令行运行jar出现问题: 1.找不到主类.打开jar文件包,在MANIFES ...

  4. 使用 Element UI Select 组件的 value-key 属性,让绑定值可以为一个对象

    EsunR 2019-11-07 12:14:42  12264  收藏 6 分类专栏: Vue 文章标签: element-ui 版权 当我们使用 Elemet UI 的选择组件进行多选时,Sele ...

  5. undefined index: php中提示Undefined ...

    我们经常接收表单POST过来的数据时报Undefined index错误,如下:$act=$_POST['action'];用以上代码总是提示Notice: Undefined index: act ...

  6. spring filter详解

    一.Filter基本工作原理 1.Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的. 2.当在 web.xml 注册了一个 ...

  7. iOS证书(.p12)和描述文件(.mobileprovision)生成制作教程 By h.l

    iOS证书(.p12)和描述文件(.mobileprovision)制作 证书类型分为2种,开发证书和发布证书 1.开发证书(iOS Certificates (Development))(用于真机调 ...

  8. Java和Js编码(encodeUrl)解码(decodeUrl)对空格的差异问题

    今天解决一个问题的时候遇到了一个编码解码问题,记录一下. 1. Js用的是encodeURIComponent()方法编码,后面的都以该编码方式处理出来的数据为准. 2. Java用的是URLDeco ...

  9. nodejs的安装及创建项目

    安装windows nodejs教程:1.官网下载windows安装:2.CMD中输入:npm -g install koa -generator 创建项目:1.首先新建文件夹2.CMD中输入CD 文 ...

  10. 范数||x||(norm)笔记

    1. 范数的含义和定义 范数是具有"长度"概念的函数.在线性代数.泛函分析及相关领域,是一个函数,它为向量空间内的所有向量赋予非零的正的长度或大小.另一方面,半范数可以为非零的向量 ...