本书按照操作系统理论与实践相结合的原则,对操作系统的基本理论给予了全面的阐述,同时结合Linux内核分析达到使操作系统理论具体化的目的。在内容安排上,本书采用了对照结构,把操作系统原理与Linux实现技术分别安排在对应的各章来对应介绍。
本书内容丰富,取材广泛,引进了Linux最新技术成果。书中叙述条理清晰,通俗易懂,为了使理论概念形象化,配有大量的插图。同时每章配备了习题,便于读者巩固所学的知识。本书实用性强,读者通过学习,不但对操作系统的原理能够有深入、系统的了解,而且可以掌握Linux的设计思想和技术方法。
本书可作为高等院校计算机专业和信息专业操作系统原理课程的教材,也可供计算机软件专业技术人员和计算机应用人员参考。
第1章 操作系统概论
1.1 操作系统的地位及作用
1.2 操作系统的功能
1.3 操作系统的分类
习题一
第2章 Linux概述
2.1 Linux的发展及背景
2.2 Linux的性能和特点
2.3 Linux内核
习题二
第3章 进程管理
3.1 进程的基本概念
3.2 进程状态和进程控制
3.3 进程调度
3.4 进程的互斥与同步
3.5 P、V操作
3.6 进程通信
3.7 死锁
习题三
第4章 Linux进程管理
4.1 Linux进程概述
4.2 Linux进程的状态和标识
4.3 Linux的进程调度
4.4 Linux进程的创建和撤消
4.5 Linux信号
4.6 Linux管理
4.7 IPC信号量机制
4.8 IPC消息队列
4.9 IPC共享内存
习题四
第5章 存储管理
5.1 存储管理的目的与功能
5.2 地址重定位
5.3 分区存储管理
5.4 分页存储管理
5.5 存储扩充技术
5.6 分段存储管理
5.7 段页式存储管理
习题五
第6章 Linux存储管理
6.1 80x86的分侧面机制
6.2 选段符与段描述符
6.3 80x86的分页机制
6.4 Linux的分段和分页结构
6.5 Linux进程地址空间管理
6.6 Linux物理内存管理
6.7 内存的分配与释放
习题六
第7章 文件管理
7.1 文件与文件系统
7.2 文件的组织结构
7.3 文件目录结构
7.4 文件存取与操作
7.5 文件存储空间的管理
7.6 文件的共享和保护
习题七
第8章 Linux文件管理
8.1 Linux文件系统概论
8.2 EXT2文件系统
8.3 EXT2的inode和文件结构
8.4 虚拟文件系统VFS
8.5 文件系统的安装与注册
8.6 文件管理和操作
习题八
第9章 设备管理
9.1 设备与设备管理
9.2 I/O控制方式
9.3 缓冲技术
9.4 设备分配
9.5 设备处理程序与I/O进程
习题九
第10章 Linux设备管理
10.1 Linux设备分类与识别
10.2 设备驱动程序与设备注册
10.3 Linux的I/O控制方式
10.4 Linux设备I/O操作
习题十
第11章 作业管理
11.1 作业的组织
11.2 操作系统的用户接口
11.3 作业调度
11.4 作业控制
习题十一
第12章 Linux网络管理
12.1 网络通信基础知识
12.2 Linux套接字
12.3 协议注册与套接字的建立
12.4 Linux网络缓冲区
12.5 套接字网络通信
习题十二
参考文献
操作系统原理是计算机专业人员必须掌握的基础知识,也是高等院校计算机专业学生的必修课程。通过对操作系统原理的学习,不仅能够从系统内部了解操作系统的工作原理,而且可以学到软件设计的思想方法和技术方法。为了能够深入理解操作系统的复杂结构及其大量的概念,在学习中应该做到操作系统理论和其实现技术相结合。当前操作系统原理的书籍和教材通常是结合UINX介绍操作系统的实现技术。但是,由于UNIX系统的运行条件要求严格,并且其源代码的价格十分昂贵,读者无法从源代码级对操作系统的具体实现技术进行分析。
20世纪90年代Linux操作系统的问世给操作系统的学习带来了新的机遇。Linux是一个与UNⅨ兼容的多用户多任务操作系统,它是一个源代码公开的操作系统,并且可以在简单廉价的条件下运行。随着Linux源代码的不断完善和健全,用Linux取代UINX学习操作系统原理已经成为可能。结合Linux学习操作系统原理,不但可以通过剖析其源代码了解操作系统的实现技术,使操作系统的理论概念具体化,而且为自主深入的学习开拓了广泛的空间。在掌握操作系统理论和Linux实现技术的基础上,读者经过进一步深入地学习就可以在几乎没有经济投入的情况下自己来分析、改制、裁减Linux内核,这对全面掌握操作系统的知识和提高实践能力来说,无疑是一种十分理想的途径。
本书就是在这种新形势下推出的操作系统原理书籍,主要包括两方面的内容:一是操作系统的基本概念和理论,另一方面是Linux系统的实现技术。为了使操作系统的理论知识和具体实现技术能够紧密地结合起来,本书把这两方面的内容分别安排在对应的奇数章和偶数章内。其中第1章介绍操作系统的概论,第2章介绍Linux的性能和特点,第3章介绍进程的概念、进程调度和控制、互斥和同步等,第4章具体介绍Linux的进程调度、进程控制和进程通信,第5章介绍操作系统的各种存储管理方式以及存储保护和共享等,第6章首先介绍80x86存储管理的硬件知识,然后介绍Linux的虚拟存储管理、物理内存管理等技术,第7章介绍操作系统的文件管理原理,第8章介绍Linux的ext2文件系统和虚拟文件系统VFS,第9章介绍操作系统设备管理的一般原理,第10章介绍Linux设备驱动程序、设备I/O操作等,第11章介绍操作系统的作业管理,第12章介绍Linux网络通信中套接字的概念和套接字的通信原理。本书的奇数章和偶数章各成体系,读者可以根据需要学习其中的原理部分或Linux部分。
由于本书的目的不是专门分析Linux源代码,而是结合Linux介绍操作系统的原理,所以书中介绍的Linux源代码涉及到内核版本2.0、2.2和2.4。对某一版本的Linux内核分析请参考有关书籍。
本书可作为高等院校计算机专业和信息专业的操作系统原理课程教材使用,也可供计算机软件专业技术人员和计算机应用人员参考。由于本书的编写工作时间紧促,加之笔者水平有限,书中内容可能存在一定的错误或缺欠,诚恳盼望广大读者和同行给予指正,以期得到改进和提高。