2009年2月28日星期六

我读Linux0.01

这是我过去写的,而且我还写了很多,以后将会把其他的发表!
今天,再次看Linux 0.0.1内核分析与操作系统设计——创造你自己的操作系统
感觉很不错的一本书,但是就是里面很多是在windows下完成的,但是我想那样也不会影响我对Linux的喜爱和坚持使用Linux而学习它,主要是学习她里面的思想。
把操作系统的原理学习清楚,把自己的想法添加进去,学习就要学会她!
她 主要写了关于GUN/Linux的历史,还有Bochs这个工具,当然你也可以学到GUN的很多的工具,如:GCC,MAKE,GDB,等!操作系统的设 计基础;Linux0.0.1内核简介;操作系统的引导;存储管理分析;进程管理和调度;磁盘文件系统;shell编程技术和实例;系统调用和C语言库的 实现;Linux网络实现分析。
一定要好好的学习!我相信我自己!

Linux0.0.1支持的硬件平台:
Intel 386以上CPU VGA/EGA显示器 标准IDE接口硬盘 支持芬兰键盘布局
如果希望修改为其他键盘布局,可以对kernel/keyboard.s文件进行修改。

Linux 充分地发挥了Intel80386芯片的功能。系统中的函数调用不使用消息传送机制而是直接函数调用;多线程的文件系统(虽然实现比较复杂但是性能更 好);精简的任务切换;中断是不隐藏的(中断处理的代码主要是汇编代码,设备驱动程序主要是中断例程,可参见kernel/hd.c);核心处理、文件系 统、存储管理没有严格地分离。
原则是:运行得更快
核心设计特点:所有的任务只有一个数据结构。在Linux 0.0.1的实现中,任务信息存放在不同的地方;既支持分页机制也支持分段机制的一个非常简单的存储管理机制;在Linux 0.0.1中的mm目录中memory.c和page.s

在Linux0.0.1 中,存储管理(memory management)是最简单的模块之一。在存储管理的模块中包含了一些函数的入口,这些函数是在kernel模块中实现的。系统的其他部分对存储管理 机制是透明的。一种避免多线程竞争资源的方法是一个进程运行时将所需要的资源全部获得,但是这样系统的资源利用效率较低,也可能带来一些不必要的等待。为 了提高文件系统的性能,Linux实现文件系统的访问时不锁定任何的数据结构(除非实际的读或者写物理设备)采用双检查分配(fs/buffer.c和 fs/inode.c都进行资源分配检查)来避免任何时候可能出现的条件竞争。一个进程陷入核心态时是不会被核心切换的。所有的核心功能,文件系统,存储 管理操作都是原子性的(atomic)。
硬件依赖性代码大多定义在文件"include/linux/config.h"中。
Linux0.0.1的核心源文件分布在几个子目录中,总共包含5900行左右的ANSI C源代码、2500行左右的C头文件代码和约1450行左右的Intel 80386汇编语言代码。
--------------------------------------------------------------------------------
boot 核心引导代码(kernel bootstrap code)
fs 文件系统(file system)
include 头文件(header files)
init Init进程,Linux系统中执行的第一个进程(init procss-the first process exec _uted by a UNIX system)
kernel 系统调用(system calls)
lib 库代码(library code)
mm 内存管理(memory management)
tools 内核引导文件的制作工具(program that splices three images together into a kernel image that can be booted from PC BIOS starup)

time