震撼的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来说小,但是仍有一些模块在内核,也有相当多的模块在用户态。 架构额外清晰,也难怪几十年迭代都未曾大改大变
震撼的Linux全景图:业界成熟的内核架构长什么样?的更多相关文章
- linux下TCP/IP及内核参数优化调优(转)
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...
- 如何在Linux上通过grub添加内核参数
转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...
- Linux从用户层到内核层系列 - GNU系列之glibc介绍
题记:本系列文章的目的是抛开书本从源代码和使用的角度分析Linux内核和相关源代码,byhankswang和你一起玩转linux开发 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswa ...
- Linux内核架构与底层--读书笔记
linux中管道符"|"的作用 命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象(下图应用别人的图片) 1. 例如: ps aux | grep "tes ...
- Linux内核入门到放弃-无持久存储的文件系统-《深入Linux内核架构》笔记
proc文件系统 proc文件系统是一种虚拟的文件系统,其信息不能从块设备读取.只有在读取文件内容时,才动态生成相应的信息. /proc的内容 内存管理 系统进程的特征数据 文件系统 设备驱动程序 系 ...
- 漫画赏析:Linux 内核到底长啥样(转)
知乎链接:https://zhuanlan.zhihu.com/p/51679405 来自 http://TurnOff.us 的漫画 “InSide The Linux Kernel” 本文转载自: ...
- 搭建《深入Linux内核架构》的Linux环境
作者 彭东林 pengdonglin137@163.com 软件 Host: Ubuntu14.04 64 Qemu 2.8.0 Linux 2.6.24 busybox 1.24.2 gcc 4.4 ...
- Linux内核模块编程可以使用的内核组件
2.2.2 在阅读<深入Linux内核架构与底层原理> 作者:刘京洋 韩方,发现一些错误,有些自己的理解,特以此记录 1.工作队列(workqueue) 队列是一种可以先进先出的数据结构, ...
- 删除LINUX更新后多余的内核
删除LINUX更新后多余的内核 本人使用的时fredoa 21 之前为了搞网卡驱动不知不觉升级了几次系统,每次启动后都有好几个内核让我选,真的非常头疼阿,尤其像博主这样的有点强迫的人,看着就心烦,所以 ...
随机推荐
- stram流char[]保存,支持中文,Filestram需要先转byte[]才能使用,但是性能更好《转载》
学习流的使用时(stream类),逐步遇到新的理解,记录一下 1.FileStream流是处理byte[],默认UTF8类型 当你使用wirte方法时将非byte类型的输入内容,先将内容通过转换为字节 ...
- CF388C Fox and Card Game
基于观察可以发现,双方都一定能保证取到每一列靠近自己的 \(\lfloor \frac{k}{2} \rfloor\) 个元素. 那么一旦一个人想要取另一个人能必然能取的部分,另一个人必然可以不让其取 ...
- 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 ...
- 使用 Element UI Select 组件的 value-key 属性,让绑定值可以为一个对象
EsunR 2019-11-07 12:14:42 12264 收藏 6 分类专栏: Vue 文章标签: element-ui 版权 当我们使用 Elemet UI 的选择组件进行多选时,Sele ...
- undefined index: php中提示Undefined ...
我们经常接收表单POST过来的数据时报Undefined index错误,如下:$act=$_POST['action'];用以上代码总是提示Notice: Undefined index: act ...
- spring filter详解
一.Filter基本工作原理 1.Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的. 2.当在 web.xml 注册了一个 ...
- iOS证书(.p12)和描述文件(.mobileprovision)生成制作教程 By h.l
iOS证书(.p12)和描述文件(.mobileprovision)制作 证书类型分为2种,开发证书和发布证书 1.开发证书(iOS Certificates (Development))(用于真机调 ...
- Java和Js编码(encodeUrl)解码(decodeUrl)对空格的差异问题
今天解决一个问题的时候遇到了一个编码解码问题,记录一下. 1. Js用的是encodeURIComponent()方法编码,后面的都以该编码方式处理出来的数据为准. 2. Java用的是URLDeco ...
- nodejs的安装及创建项目
安装windows nodejs教程:1.官网下载windows安装:2.CMD中输入:npm -g install koa -generator 创建项目:1.首先新建文件夹2.CMD中输入CD 文 ...
- 范数||x||(norm)笔记
1. 范数的含义和定义 范数是具有"长度"概念的函数.在线性代数.泛函分析及相关领域,是一个函数,它为向量空间内的所有向量赋予非零的正的长度或大小.另一方面,半范数可以为非零的向量 ...