Linux内核-0x2 概念名词等

我觉得吧,想混一个领域,这个领域的行话,比如名词、基本概念、历史等,总要是了解和理解的。这里我会收集整理一些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:微内核,作为教育用的操作系统

我参考的一些文章如下:

内核实现

Linux

Mach

Hurd

NewOS

Haiku

ReactOS

名言金句

  • UNIX的设计应该是提供机制而不是策略 [1]

书籍推荐

  • 《Linux内核设计与实现》[1] 某些高校会用来当教材,可以看下豆瓣的评价,我觉得这本书是Linux内核入门的基本书籍,会带着你在内核核心部件的代码上走一圈。

附录

[1] Linux内核设计与实现(原书第3版)/(美)拉夫(Love,R)著;陈莉君,康华译.——北京:机械工业出版社,2011.6
[2] 深入Linux内核架构 / (德) 莫尔勒(Mauerer, W.)著;郭旭译.——北京:人展邮电出版社,2010.6