linux0.11内核完全注释V3.0学习笔记(⼀)
linux 0.11 内核完全注释V3.0学习笔记(⼀)
第1章概述
1.1 Linux的诞⽣和发展
1.1.1 UNIX操作系统
UNIX操作系统是美国贝尔实验室Ken.Thompson和Denis Ritchie在DEC PDP-7⼩型计算机开发的⼀个分时操作系统。1969年夏
Ken.Thompso在PDP-7使⽤BCPL(基本组合编程语⾔)⼀个⽉开发出了UNIX操作系统的原型,后经Denis Ritchie于1972年⽤移植性很强的C语⾔改写,使得UNIX系统在院校得到了推⼴。
1.1.2 MINIX操作系统
MINIX是⼀种基于微内核架构的类UNIX计算机操作系统,由Andrew S. Tanenbaum发明。MINIX最初发布于1987年,开放全部源代码给⼤学教学和研究⼯作。同时提供了⽤C语⾔和汇编语⾔编写的系统源代码。
1.1.3 GNU计划
GNU计划和⾃由软件基⾦会FSF(the Free Software Foundation)是由Richard M.Stallman于1984年⼀⼿创办的,旨在开发⼀个类UNIX并且是⾃由软件的完整操作系统。GNU是“GNU’s Not UNIX”的递归缩写。到90年代初,GNU项⽬已经开发初许多⾼质量的免费代码。其中包括有名的emacs编辑系统、bash shell程序、gcc系列编辑程序、gdb调试程序等,这些软件为Linux操作系统的开发创造了⼀个合适的环境。
1.1.4 POSIX标准
POSIX表⽰可移植操作系统接⼝(Portable Operating System Interface of UNIX,缩写为 POSIX )POSIX标准定义了操作系统应该为应⽤程序提供的接⼝标准,是IEEE为要在各种UNIX操作系统上运⾏的软件⽽定义的⼀系列API标准的总称,其正式称呼为IEEE 1003,⽽国际标准名称为ISO/IEC 9945。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为⼀个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来⾃另⼀个⼚商)上编译执⾏。
1991~1993年间,POSIX标准的制定正处在最后投票敲定的时候,也是Linux刚刚起步的时候,这个U
NIX标准为Linux提供了极为重要的信息,使得Linux能够在标准的指导下进⾏开发,并能与绝⼤UNIX操作系统兼容。在最初的Linux内核源代码中(0.01版、0.11版)就已经为Linux系统与POSIX标准的兼容做好了准备⼯作。
1.1.5 Linux操作系统的诞⽣
1.1.6 Linux操作系统版本的变迁
1.1.7 Linux名称的由来
Linux操作系统刚开始并没有称作Linux,Linus给他的操作系统取名FREAX,怪诞的、怪物、异想天开的意思。在他将新的操作系统放到ftp.funet.fi服务器上时,管理员Ari Lemke很不喜欢这个名称,他认为是Linus的操作系统就取谐⾳Linux作为操作系统的⽬录吧,于是这个名称就这个流传下来。
1.1.8 早期Linux系统开发的主要贡献者
Thedore Ts’o(Ted Ts’o):Linux操作系统刚刚问世,怀着极⼤的热情为linux的发展提供了maillist,linux 0.10版添加了虚拟盘驱动程序ramdisk.c和内核内存分配程序kmalloc.c,最⼤贡献之⼀是提出并实现了ext2⽂件系统,该⽂件系统现已成为Linux⽂件系统标准,后⾯⼜推出了ext3⽂件系统,该系统⼤⼤提⾼了⽂件系统的稳定性和访问效率。
Alan Cox:Linux系统上TCP/IP⽹络代码的最早使⽤⼈之⼀,2001年负责维护linux内核2.4.x的代码。
Michael K.johnson:著名的linux⽂档计划的发起者之⼀。
Linux如今飞速发展,有着众多⾼⼿做出极⼤的贡献,具体名单可在Linux内核中的CREDITS⽂件查看,按字母列出了做出贡献的名单列表。
1.2 内容综述
Linux-0.11版本在1991年12⽉8⽇发布,发布时包含以下⽂件:
bootimgage.Z –具有美国键盘代码的压缩启动映像⽂件;
bootimgage是引导启动image⽂件,其中主要包含磁盘引导扇区代码,操作系统加载程序和内核执⾏代码。
rootimage.Z –⽤于向内核提供最基本⽀持的根⽂件系统,其中包括配置⽂件和命令执⾏程序。
as86.tar.Z –16位汇编链接程序软件包。
linux-0.11.tar.Z –linux 0.11内核源代码。
INSTALL-0.11 –linux 0.11系统简单安装说明⽂档。
Linux 0.11内核源代码结构列表如下:
本书各个章节介绍:
- 第2章:基于传统微机系统组成框图,主要介绍Linux内核运⾏之上的IBM PC/AT386微机的组成部分和介绍各⼤组成部分的功能和相互联系。
- 第3章:介绍Linux内核使⽤的编程语⾔、主要是阅读linux0.11源码所需的汇编语⾔和GNU C语⾔中的内嵌扩展知识。
- 第4章:80X86 CPU的体系结构以及保护模式下编程基础知识,主要包括:80X86基础知识、保护模
式内存管理、中断和异常处理、任务管理及⼀个简单的内核⽰例。
- 第5章:内核体系结构及中断机制、系统调⽤和进程控制、堆栈等。
- 第6章:引导启动程序BOOTSECT.s、SETUP.s、HEAD.s。
- 第7章:初始化程序 main.c 。
- 第8章:kernel⽬录中所有程序,最重要部分进程调度函数schedule()、sleep()和有关系统调⽤程序。
- 第9章:kernel/blk_drv/⽬录下块设备驱动程序(磁盘、软盘)。
- 第10章:kernel/char_drv/⽬录下字符设备驱动程序(串⾏、键盘、显⽰器)
- 第11章:kernel/math/⽬录下数学协处理器仿真程序。
- 第12章:fs/⽂件系统程序,可参考书籍Andrew S.Tanenbaum。 《操作系统设计与实现》有关MINIX⽂件系统章节。
- 第13章:内存管理程序。
- 第14章:所有头⽂件的详细说明。
- 第15章:lib下所有⽂件。
linux下的sleep函数- 第16章:tools/build.c,仅⽤于将内核的 磁盘引导程序块和其他主要内核模块连接成⼀个完整的内核映像。
- 第17章:实验环境和使⽤⽅法。
Linus开发linux主要参考3本书籍
- M.J.Bach 《UNIX操作系统设计》该书描述了UNIX System V内核的⼯作原理和数据结构
- John H Crawford 《Programming the 80386》是讲解80X86下保护模式编程⽅法的好书
- Andrew S.Tanenbaum 《操作系统设计与实现》使⽤了该书中描述的MINIX⽂件系统1.0版本

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。