Linux内核学习(Linux-0.11)——概述

本文是在《Linux内核完全注释》的基础上进行学习

一、Linux的诞生和发展

linux操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络

1、UNIX操作系统的诞生

1969年KenThompson用BCPL语言开发出UNIX原型,Dennix Ritchie于1972年用移植性强的C语言改写,使其得到了推广。

2、MINIX操作系统

Andrew S. Tanenbaum在1987年编制的,主要用于学生学习操作系统原理。因为他想保持MINX的小型化,能让学生在一个学期内就能学完,因而没有接纳全世界许多人对MINIX的扩展需求。因此在这个情况下Linus抓住了时机,开发了Linux操作系统。

3、GNU计划

旨在开发一个类似UNIX并且是自由软件的完整操作系统:GNU系统。GNU是‘GNU’s Not Unix的递归缩写! GNU项目开发出许多高质量的免费软件,包括emacs编辑系统、bash shell程序、gcc 系列编译程序、gdb调试程序等等。为Linux操作系统的开发创造了一个合适的环境。以至于目前许多天将Linux操作系统称为“GUN/Linux”操作系统

4、POSIX标准

该标准是基于现有的UNIX实践和经验,描述了操作系统的调用服务接口。用于保证编制的应用程序可以在源码一级上在多种操作系统上移植和运行。90年代初,POSIX标准的制定正处在最后投票敲定的时候,那是1991-1993年间。此时正是Linux刚刚起步的时候,这个UNIX标准为Linux提供了极为重要的信息,使得Linux能够在标准的指导下进行开发,并能够与绝大多数UNIX操作系统兼容

5、Linux操作系统的诞生

Linus在回答有人提出MINIX上的一个问题时,所说的第一句话就是“阅读源代码”(Read the Fucking Source Code :-))他认为答案就在源程序中。这也说明了对于学习系统软件来说,我们不光需要懂得系统的工作基本原理,后还需要结合实际系统,学习实际系统的实现方法。因为理论毕竟是理论,其中省略了许多枝节,而这些枝节问题虽然没有太多的理论含量,但却是一个系统必要的组成部分,就像麻雀身上的一根羽毛

6、操作系统版本的变迁

7、Linux名称的由来

坦白地说,我从来没有想过要用Linux这个名称来发布这个操作系统,因为这个名字有些太自负了。而我为最终发布版准备的是什么名字呢?Freax。实际上,内核代码中某些早期的Makefile-用于描述如何编译源代码的文件-文件中就已经包含有“Freax”这个名字了,大约存在了半年左右。但其实这也没什么关系,在当时还不需要一个名字,因为我还没有向任何人发布过内核代码。
而Ari Lemke,他坚持要用自己的方式将内核代码放到ftp站点上,并且非常不喜欢Freax这个名字。他坚持要用现在这个名字(Linux),我承认当时我并没有跟他多争论。但这都是他取的名字。所以我可以光明正大地说我并不自负,或者部分坦白地说我并没有本位主义思想。但我想好吧,这也是个好名字,而且以后为这事我总能说服别人,就像我现在做的这样。

8、早期Linux系统开发的主要贡献者

对于Linux的五大支柱归纳如下:
UNIX操作系统–UNIX于1969年诞生在BELL实验室。Linux就是UNIX的一种克隆系统。UNIX的重要性就不用多说了。

MINIX操作系统–MINIX操作系统也是UNIX的一种克隆系统,它于1987年由著名计算机教授Andrew S. Tanenbaum开发完成。由于MINIX系统的出现并且提供源代码(只能免费用于大学内)在全世界的大学中刮起了学习UNIX系统旋风。Linux刚开始就是参照MINIX系统于1991年才开始开发的。

GNU计划–开发Linux操作系统,以及Linux上所用大多数软件基本上都出自GNU计划。Linux只是操作系统的一个内核,没有GNU软件环境(比如说bash shell),则Linux将寸步难行。

POSIX标准–该标准在推动Linux操作系统以后朝着正规路上发展起着重要的作用。是Linux前进的灯塔。

INTERNET–如果没有Internet王,没有遍布全世界的武术计算机黑客的无私奉献,那么Linux最多只能发展到0.13(0.95)版的水平。

二、内容概述

在这里插入图片描述
Linux-0.11版本是在1991年12月8日发布的。在发布时包括以上文件。

《Linux内核完全注释》:本文主要详细分析Linux-0.11内核中的所有源代码程序,对每个源程序文件都进行了详细注释,包括对Makefile文件的注释。分析过程主要是按照计算机启动过程进行的。因此分析的连贯性到初始化结束内核开始调用shell程序为止。其余的各个程序均针对其自身进行分析,没有连贯性,因此可以根据自己的需要进行阅读。但在分析时还是提供了一些应用实例。

猜你喜欢

转载自blog.csdn.net/weixin_41796913/article/details/88571280