我觉得吧,想混一个领域,这个领域的行话,比如名词、基本概念、历史等,总要是了解和理解的。这里我会收集整理一些Linux内核和操作系统相关的概念名词等内容。好让我们看起来像是在这个领域混饭吃的人一样,毕竟我们的领域,会吹会说还是很重要的。
内容主要包含UNIX历史上的行话,各类看起来感觉很看不懂的名词和它们的关系,内核相关的概念,操作系统相关的概念等,推荐一些我在学习过程中看着还比较好的书。
当我看到新的,或者收集到有趣的,就会不断的扩充进来,可能会变得很长很长,毕竟发展了几十年的领域,有太多有趣的东西了。
领域内的行话
名词
GNU
GNU(GNU’s Not Unix)是由自由软件基金会 (Free SoftwareFoundation,FSF)发起的一个开源自由操作系统(软件)。
GNU是一个操作系统(及一堆相关的软件),GNU建议安装的版本是GNU/Linux发行版。
参考出处
POSIX标准
POSIX的英文全称是Portable Operating System Interface of UNIX,中文译『可移植操作系统接口』。
IEEE的一组标准组成,目标是提供一套大体上基于Unix的可移植操作系统标准。Linux尽力与POSIX和SUSv3兼容。早期的POSIX标准就是依照早期Unix系统的接口建立的。[1]
开源协议
GPL / LGPL / BSD / MIT / Apache
参考《五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)》,已经讲得非常清楚了。大概情况是:
1)GPL是GNU的,要求『代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售』,而且具有『传染性』,所有使用了GPL软件的软件均必须遵循GPL,这保证了开源自由免费的延续性;
2)LGPL也是GNU的,同意引用LGPL类库的商业软件不需要开源代码,但是如果修改了LGPL的代码或衍生,则需要遵循LGPL;
3)BSD/MIT/Apache均是商业友好的协议,只需要把原协议带上就可以进行任何的使用。
OSI还有不少的开源协议,详见《Open Source Licenses by Category》。
WTFPL
协议的全名是 Do What The Fuck You Want To Public License
操作系统内核
内核类型
宏内核,微内核,混合内核(部分微内核、部分宏内核)。
对于内核类型,目前我看到的结论大概是,现代操作系统好像不能完全说是属于哪种类型的,可能都是混合型的,或者更偏向某种类型。另外是,微内核在实用操作系统上是比较少见的,更多是在科研阶段或教学场景下的。
宏内核类型中基本所有子系统如内存管理、文件系统、设备驱动等,都是在内核中的。这也是大部分操作系统内核构建的传统方法。[2]
微内核类型下只有最基本的功能在中心内核中实现,其它功能如文件系统、内存管理等可能在独立的进程中运行,并与中心内核进行通信[2]。这种类型在各组件间的通信需要消耗CP宏内核系统来说会更耗费一些。
我了解到过的系统,内核类型大概是这样的(不对的地方请指正)
- Linux(Ubuntu等):Linux内核,宏内核
- MacOS:XNU内核,Mach(微)+ BSD(宏),混合内核
- Windows:或许是混合内核,Windows在内核的定义上或许不太能按UNIX类的系统来分
- Minix:微内核,作为教育用的操作系统
我参考的一些文章如下:
- What is the Difference Between the macOS and Linux Kernels,这边有个翻译版本 MacOS和Linux内核的区别
- 探究Windows内核你知多少,这个文章排版比较乱,内容感觉还是有一定道理的
内核实现
Linux
–
Mach
–
Hurd
–
NewOS
Haiku
ReactOS
–
名言金句
- UNIX的设计应该是提供机制而不是策略 [1]
书籍推荐
- 《Linux内核设计与实现》[1] 某些高校会用来当教材,可以看下豆瓣的评价,我觉得这本书是Linux内核入门的基本书籍,会带着你在内核核心部件的代码上走一圈。
附录
[1] Linux内核设计与实现(原书第3版)/(美)拉夫(Love,R)著;陈莉君,康华译.——北京:机械工业出版社,2011.6
[2] 深入Linux内核架构 / (德) 莫尔勒(Mauerer, W.)著;郭旭译.——北京:人展邮电出版社,2010.6