Linux操作系统分析与实践
2008-11
清华大学
Linux系列教材编写组
343
无
诞生于1991年,今年“寂寞十七岁”的Linux一点也不寂寞。从微型嵌入式系统到超级计算机,处处都可看到Linux多彩的光环。十七年来一步一个脚印,Linux正存成为操作系统的另一主流。 Linux也是开放式创新的好见证。开源社区集结全球精英,为共同的需求一起创新。通过热烈的讨论与相互的脑力激荡,开源项目的开发过程也就是一个宝贵的学习过程。 《Linux操作系统分析与实践》的出版为莘莘学子及业界人士提供了一本完整的Linux教材,理论概念介绍与实验指导紧密结合,结构清晰、内容顺畅易懂。除Linux之外,这本教材很有系统地讲述了操作系统的主要模块,因此它也将是一般操作系统课程的好教材;并且更能为未来虚拟化、实时性及安全性系统的教材打下扎实的基础。 英特尔公司多年来不断与高等学校合作,并积极参与Linux开源项目的开发,此次能够为长年合作的教授们开发本教材提供支持,英特尔公司深感欣喜,也祝贺他们为中国高等学校计算机专业教学水平的提高做出新的贡献。
《Linux操作系统分析与实践》简要介绍操作系统的定义、功能、特性,以及发展历史、分类、内核结构,阐述计算机硬件系统对操作系统的支持与要求,以Linux 2.6版本为例详细分析Linux操作系统的进程管理、内存管理、文件管理和设备管理的工作原理和设计。然后详细介绍字符设备、块设备和网络设备的Linux驱动程序设计与实现方法。除此以外,还给出了Linux系统管理、内核同步机制、进程间通信、内存管理、Proc文件创建、设备驱动程序、内核裁减等实验内容及有关参考代码。 《Linux操作系统分析与实践》通过详细的例子引导渎者系统地学习Linux操作系统的工作原理与设计,并通过Linux设备驱动程序设计实践强化对Linux操作系统的理解和应用。《Linux操作系统分析与实践》适于作为计算机相关专业方向的高年级学生或研究生的教材,也适合有志于从事Linux操作系统研究和开发的工程师阅读。
第1章 操作系统概述1.1 操作系统在计算机系统中的地位1.2 操作系统的定义、功能和特性1.2.1 操作系统的定义1.2.2 操作系统的特征1.2.3 操作系统的功能1.3 操作系统的发展历史及分类1.3.1 操作系统的发展过程1.3.2 操作系统分类1.4 操作系统的内核体系结构模型1.5 Linux的特点及发展简史1.5.1 什么是Linux1.5.2 Linux的发展历程1.5.3 Linux的特性1.5.4 Linux内核的版本演化介绍1.6 Linux内核的结构及主要组成部分1.6.1 Linux内核系统体系结构1.6.2 Linux内核的源码组织结构1.7 本章小结思考题进一步阅读第2章 计算机系统硬件基础2.1 计算机硬件的组成结构2.2 处理器的工作模式2.3 80x86的保护模式2.3.1 80x86系统寄存器2.3.2 存储管理机制2.3.3 分段机制2.3.4 分页机制2.3.5 保护机制2.4 中断陷入与异常处理2.4.1 中断与异常2.4.2 中断系统2.4.3 中断处理过程2.4.4 时钟中断2.5 任务切换2.6 SMP及多核技术2.7 Linux系统引导过程概述2.7.1 BIOS引导2.7.2 LILO/GRUB引导2.7.3 Kernel Boot2.7.4 Init引导2.8 本章小结思考题进一步阅读第3章 进程管理3.1 进程的原理和实现3.1.1 进程控制块3.1.2 进程状态3.1.3 进程的标识3.1.4 进程描述符在内存里的组织形式3.1.5 进程的睡眠和唤醒3.2 线程的原理与实现3.3 Linux进程创建和结束3.3.1 进程的创建3.3.2 进程的结束3.4 进程调度3.4.1 进程的切换3.4.2 进程的调度策略3.4.3 进程调度的触发和进程切换的时机3.4.4 运行队列3.4.5 调度域3.4.6 抢占3.4.7 调度的时间复杂度3.4.8 函数schedule的实现3.4.9 函数load balance的实现3.5 并发控制原理3.5.1 同步原语简介3.5.2 死锁3.5.3 同步原语3.6 Linux下的同步机制3.6.1 处理器数据3.6.2 可抢占内核3.6.3 开关中断3.6.4 原子操作3.6.5 栅栏3.6.6 自旋锁和读写锁3.6.7 Fast User Space Mutex3.6.8 信号量3.7 Linux下进程间通信3.7.1 管道3.7.2 命名管道3.7.3 消息队列3.7.4 共享内存3.7.5 套接口3.8 本章小结思考题进一步阅读第4章 内存管理4.1 内存管理概述4.1.1 内存管理的目的和功能4.1.2 内存分配的方式4.1.3 重定位4.2 内存管理的基本技术4.2.1 分区法4.2.2 可重定位分区法4.2.3 覆盖技术4.2.4 交换技术4.3 分页技术4.3.1 分页内存管理的基本原理4.3.2 分页技术中的地址映射4.3.3 页面保护方式4.4 分段技术4.4.1 分段技术的基本原理4.4.2 分段的地址转换4.4.3 段的共享和保护4.5 段页式技术4.5.1 段页式技术的基本原理4.5.2 地址转换过程4.6 虚拟存储器技术4.6.1 程序的局部性原理4.6.2 虚拟存储器的概念4.6.3 虚拟存储管理需要考虑的问题4.6.4 虚拟分页技术的基本原理4.6.5 请求页式管理中的置换算法4.6.6 抖动问题4.6.7 性能分析4.7 Linux的内存管理4.7.1 进程的虚存空间及其划分4.7.2 进程空间的描述4.7.3 物理内存的管理4.7.4 基于Slab的缓存管理4.7.5 页面换出或丢弃4.7.6 交换Cache4.7.7 页面的换人4.8本章小结思考题第5章 文件系统第6章 设备管理第7章 Linux驱动程度编写基础第8章 字符设备和块设备驱动程度第9章 网络设备驱动程度实验1 Linux系统管理实验2 剪裁内核实验3 内核同步机制实验4 进程间通信(内存映射、共享内存、信号量、管道和信号等)实验5 proc文件系统实验6 虚拟内存的管理实验7 字符、块设备和网卡驱动参考文献
第1章 操作系统概述 1.5 Linux的特点及发展简史 1.5.1 什么是Linux Linux是由Linus Torvalds和许多自由软件开发者,通过Internet共同努力而形成的一种能运行于多种硬件平台(Intel、Alpha、PowerPC和Sun SPARC)之上,源代码公开,功能强大,运行稳定高效,遵守POSIX标准,与UNIX兼容的免费操作系统。 1.5.2 Linux的发展历程 Linux的历史可以上溯到20世纪60年代末,美国贝尔实验室发明了UNIX,一个多用户多任务的操作系统。那个年代,计算机程序的源码都是公开的,尽管它们很多时候只能被专业前沿的程序员们看懂。到了20世纪70年代,操作系统开始商业化,出于利益最大化等的考虑,源代码开始向用户封闭,这给许多传统的程序员黑客带来了不便,他们能够发现程序中的漏洞并有解决的能力,但是提供程序的商业公司却拒绝让用户直接修改。对传统黑客来说,这对计算机软件的发展是一个相当大的限制。 1984年,黑客Richard M Stallman成立了自由软件基金会(Free Software Foundation,FSF)和开源项目计划GNU,并提出了著名的开源协议标准GPL。GNU的意思就是GNUs Not UNIX,以一个递归式的定义描述了自己和UNIX有关又不同于UNIX的特点。其计划是开发出一套完整的免费、公开源代码的UNIX操作系统和及其应用软件。 到20世纪80年代末,GNU计划的很多工作已经完工,包括了C语言的编译器GCC,文本编辑软件emacs等,但是操作系统计划Hurd却迟迟没有推出。这时芬兰大学生Linus Tovalds于1991年10月在学校的ftp上发布了自己所编写的类UNIX操作系统——Linux 0.02版的源代码,并宣布它遵守GPL协议,而且符合UNIX的操作系统P()SIX标准,源代码可以在UNIX主机上用9cc编译生成可执行的二进制代码,可以在个人计算机平台(Intel 80386)上运行。这些纯粹是源于他的业余爱好。Linus在上大学时,操作系统课程中讲述的是Minix,一种用于教学的小型的类UNIX操作系统。他觉得Minix不太好,决定自己写一个保护模式下的操作系统。1991年8月,Linus完成了Linux的0.01版,当然它很不完善,甚至没有软盘驱动程序。
近十年来,Linux在促进信息产业发展的同时,也为设计各种新型操作系统提供了难得的案例。应该说Linux为操作系统研究者提供了新理论、新方法、新技术的实践和验证平台,同时反过来促进了操作系统的不断发展。Linux由于源代码公开,特别适合于高等学校计算机专业本科生操作系统课程的教学。 《Linux操作系统分析与实践》注重学生对Linux操作系统分析和设计能力的培养,系统地介绍了操作系统的定义、功能等基本知识,并以Intel X86为例介绍了计算机硬件子系统对操作系统的支持与要求,进程管理以及在Linux内核里的实现方法,内存管理的基本原理、技术;以Ext2,Proc为例详细介绍了Linux文件系统,设备管理的基本原理以及Linux设备管理的特点,Linux字符设备和块设备驱动程序设计的方法及实例等等。
无