本书是普通高等院校计算机专业(本科)实用教程系列丛书之一。\r\n\r\n 学习操作系统的设计和实现原理,是计算机专业的学生全面了解计算机软硬件如何衔接的必经之路。本书编写着重讲述原理、概念和实例。\r\n\r\n 全书共分七章,第1章阐述了操作系统的发展和作用;第2章介绍了用户接口及Linux的安装与使用;第3至6章讨论了操作系统的基本原理和概念,包括进程管理、并发程序设计、存储管理等内容;第7章介绍多处理系统,计算机网络,分布式、嵌入式系统及计算机机群计算。每章都有习题以巩固学习内容。\r\n\r\n 本书可作为普通高等院校计算机专业的教材或教学参考书,也可作为计算机软件人员的参考书。\r\n\r\n\r\n
\r\n
第1章 概论 \r\n\r\n 1. 1 计算机与操作系统 \r\n\r\n 1. 1. 1 计算机发展简介 \r\n\r\n 1. 1. 2 操作系统的发展 \r\n\r\n 1. 1. 3 存储程序式计算机的结构和特点 \r\n\r\n 1. 2 操作系统的基本概念 \r\n\r\n 1. 2. 1 操作系统的定义及其在计算机系统中的地位 \r\n\r\n 1. 2. 2 操作系统的功能 \r\n\r\n 1. 2. 3 操作系统的特性及其应解决的基本问题 \r\n\r\n 1. 3 操作系统接口 \r\n\r\n 1. 3. 1 系统调用 \r\n\r\n 1. 3. 2 shell命令 \r\n\r\n 1. 4 分析和设计操作系统的几种观点 \r\n\r\n 1. 4. 1 用户观点 \r\n\r\n 1. 4. 2 资源管理观点 \r\n\r\n 1. 4. 3 进程观点 \r\n\r\n 1. 4. 4 模块分层观点 \r\n\r\n 1. 5 安全操作系统 \r\n\r\n 1. 6 小结 \r\n\r\n 1. 7 习题 \r\n\r\n 第2章 操作系统用户命令接口 \r\n\r\n 2. 1 概述 \r\n\r\n 2. 1. 1 Linux系统发布方式 \r\n\r\n 2. 1. 2 Linux的硬件要求 \r\n\r\n 2. 2 Linux的安装 \r\n\r\n 2. 2. 1 安装前的准备 \r\n\r\n 2. 2. 2 建立硬盘分区 \r\n\r\n 2. 2. 3 安装类型 \r\n\r\n 2. 2. 4 安装方法 \r\n\r\n 2. 2. 5 安装过程 \r\n\r\n 2. 2. 6 操作系统的安装概念 \r\n\r\n 2. 3 Linux的使用 \r\n\r\n 2. 3. 1 使用常识 \r\n\r\n 2. 3. 2 文件操作 \r\n\r\n 2. 3. 3 文本编辑 \r\n\r\n 2. 3. 4 shell \r\n\r\n 2. 3. 5 进程控制 \r\n\r\n 2. 3. 6 网络应用工具 \r\n\r\n 2. 3. 7 联机帮助 \r\n\r\n 2.4 系统管理 \r\n\r\n 2. 4.1 超级用户 \r\n\r\n 2. 4. 2 用户和用户组管理 \r\n\r\n 2. 4. 3 文件系统管理 \r\n\r\n 2. 5 小结 \r\n\r\n 2. 6 习题 \r\n\r\n 第3章 进程机制与并发程序设计 \r\n\r\n 3. 1 概述 \r\n\r\n 3. 2 进程的引入和定义 \r\n\r\n 3. 2.1 进程的引入 \r\n\r\n 3. 2. 2 进程的定义 \r\n\r\n 3. 3 进程的状态和进程控制块 \r\n\r\n 3. 3. 1 进程的状态及状态变化图 \r\n\r\n 3.3. 2 进程控制块 \r\n\r\n 3. 4 进程控制 \r\n\r\n 3. 4.1 原语 \r\n\r\n 3. 4.2 进程控制原语 \r\n\r\n 3. 5 线程的基本概念 \r\n\r\n 3.5. 1 线程的引入 \r\n\r\n 3. 5.2 线程与进程的比较 \r\n\r\n 3. 6 进程调度 \r\n\r\n 3.6. 1 进程调度的职能 \r\n\r\n 3.6. 2 进程调度算法 \r\n\r\n 3.6. 3 调度时的进程状态 \r\n\r\n 3. 7 进程通信 \r\n\r\n 3. 7. 1 临界资源和临界区 \r\n\r\n 3. 7. 2 进程的通信方式之一--同步与互补 \r\n\r\n 3. 7. 3 两上经典的同步/互斥机制 \r\n\r\n 3. 7. 4 结构化的同步/互斥机制--管理 \r\n\r\n 3. 7. 5 进程的通信方式之二--消息缓冲 \r\n\r\n 3. 8 死锁 \r\n\r\n \r\n\r\n \r\n\r\n 3. 8. 1 死锁原因和必要条件 \r\n\r\n 3. 8. 2 预防死锁 \r\n\r\n 3. 8. 3 发现死锁 \r\n\r\n 3. 8. 4 解除死锁 \r\n\r\n 3. 9 Linux中的进程 \r\n\r\n 3. 9. 1 Linux进程控制块PCB简介 \r\n\r\n 3. 9. 2 进程的创建 \r\n\r\n 3.9. 3 进程调度 \r\n\r\n 3.9. 4 进程的退出与消亡 \r\n\r\n 3. 9. 5 相关的系统调用 \r\n\r\n 3.9. 6 信号 \r\n\r\n 3. 9. 7 信号量与PV操作 \r\n\r\n 3. 9. 8 等待队列 \r\n\r\n 3.9. 9 管道 \r\n\r\n 3. 9. 10 Linux内核体系结构 \r\n\r\n 3. 10 并发程序设计实例 \r\n\r\n 3. 11 小结 \r\n\r\n 3. 12 习题 \r\n\r\n 第4章 存储蓄理 \r\n\r\n 4.1 概述 \r\n\r\n 4.2 分区式存储管理 \r\n\r\n 4.2.1 地址重定位 \r\n\r\n 4. 2. 2 固定式分区和可变式分区 \r\n\r\n 4.2. 3 覆盖与交换技术 \r\n\r\n 4.3 分页式存储管理 \r\n\r\n 4.3. 1 虚拟存储器 \r\n\r\n 4. 3. 2 分页式存储管理的实现方法 \r\n\r\n 4.3. 3 页表和快表 \r\n\r\n 4. 3. 4 页面交换 \r\n\r\n 4.3. 5 页式存储管理的保护措施 \r\n\r\n 4.3. 6 工作集模型 \r\n\r\n 4.4 分段存储管理 \r\n\r\n 4. 4.1 分段存储管理的特点 \r\n\r\n 4. 4. 2 段式地址变换 \r\n\r\n 4. 4.3 扩充段表功能 \r\n\r\n 4. 5 段页式存储管理 \r\n\r\n 4.6 用户编程中的内存管理实例分析 \r\n\r\n 4.7 Linux内存管理概述 \r\n\r\n \r\n\r\n \r\n\r\n 4. 7. 1 基本思想 \r\n\r\n 4.7. 2 Linux中的页表 \r\n\r\n 4.7. 3 内存页的分配和释放 \r\n\r\n 4.7.4 内存映射和需求分负 \r\n\r\n 4.7. 5 内存交换 \r\n\r\n 4.8 小结 \r\n\r\n 4.9 习题 \r\n\r\n 第5章 输入/输出系统 \r\n\r\n 5.1 概述 \r\n\r\n 5. 2 输入/输出硬件 \r\n\r\n 5. 2. 1 输入/输出设备 \r\n\r\n 5. 2.2 设备控制器 \r\n\r\n 5. 2. 3 通道 \r\n\r\n 5. 2. 4 存储器直接存取(DMA) 设备 \r\n\r\n 5. 3 输入/输出软件 \r\n\r\n 5.3. 1 输入/输出软件的作用 \r\n\r\n 5. 3. 2 数据传送控制方式 \r\n\r\n 5. 3. 3 中断处理技术 \r\n\r\n 5. 3. 4 设备驱动程序 \r\n\r\n 5. 3. 5 与设备无关的I/O软件 \r\n\r\n 5. 3. 6 用户层的输入/输出软件 \r\n\r\n 5. 3.7 设备分配 \r\n\r\n 5.3. 8 I/O进程控制 \r\n\r\n 5. 4 Linux输入/输出系统概述 \r\n\r\n 5. 4. 1 Linux输入/输出的过程 \r\n\r\n 5. 4. 2 Linux设备管理基础 \r\n\r\n 5. 4. 3 Linux的中断处理 \r\n\r\n 5. 4. 4 设备驱动程序的框架 \r\n\r\n 5. 4. 5 并口打印设备驱动程序 \r\n\r\n 5.5 小结 \r\n\r\n 5. 6 习题 \r\n\r\n 第6章 文件系统 \r\n\r\n 6.1 概述 \r\n\r\n 6.2 文件 \r\n\r\n 6.2. 1 文件的概念 \r\n\r\n 6.2. 2 文件的分类 \r\n\r\n 6. 2. 3 文件的操作 \r\n\r\n 6. 2. 4 文件的转储和恢复 \r\n\r\n \r\n\r\n \r\n\r\n 6.3 目录 \r\n\r\n 6.3.1 目录的概念 \r\n\r\n 6.3. 2 目录的层次结构 \r\n\r\n 6. 3. 3 目录的操作 \r\n\r\n 6.4 文件系统 \r\n\r\n 6.4.1 文件系统的概念 \r\n\r\n 6. 4.2 文件系统的功能 \r\n\r\n 6.4.3 文件系统的组成 \r\n\r\n 6.5 文件系统的实现 \r\n\r\n 6. 5. 1 实现文件 \r\n\r\n 6. 5.2 实现目录 \r\n\r\n 6.5. 3 磁盘空间管理 \r\n\r\n 6. 5. 4 文件系统的结构和工作流程 \r\n\r\n 6. 6 文件系统的安全性和保护机制 \r\n\r\n 6. 6. 1 文件存取控制矩阵 \r\n\r\n 6. 6.2 文件存取控制表 \r\n\r\n 6.6. 3 用户权限表 \r\n\r\n 6.6.4 文件口令 \r\n\r\n 6.6. 5 文件加密 \r\n\r\n 6. 7 Linux文件系统 \r\n\r\n 6. 7. 1 虚拟文件系统 \r\n\r\n 6. 7.2 ext2文件系统 \r\n\r\n 6. 7. 3 Linux文件系统管理 \r\n\r\n 6.7. 4 Linux系统调用 \r\n\r\n 6.8 小结 \r\n\r\n 6.9 习题 \r\n\r\n 第7章 多机系统与实时系统 \r\n\r\n 7. 1 多处理机系统 \r\n\r\n 7.1. 1 硬件结构 \r\n\r\n 7. 1. 2 多处理机操作系统 \r\n\r\n 7. 2 网络与网络操作系统 \r\n\r\n 7. 2.1 网络硬件概念 \r\n\r\n 7.2.2 网络软件概念 \r\n\r\n 7. 2. 3 网络操作系统 \r\n\r\n 7. 3 分布式操作系统 \r\n\r\n 7.3. 1 分布式操作系统的通信机制 \r\n\r\n 7. 3. 2 分布式系统中的互斥 \r\n\r\n 7. 3. 3 分布式系统中的死锁 \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n 7. 3.4 分布式系统中的进程管理 \r\n\r\n 7. 4 集群系统(Cluster) \r\n\r\n 7. 4. 1 集群系统的分类 \r\n\r\n 7.4.2 集群作业管理技术 \r\n\r\n 7. 4.3 集群作业管理软件例--LSP \r\n\r\n 7.5 实时操作系统 \r\n\r\n 7.5.1 什么是实时操作系统 \r\n\r\n 7.5. 2 实时操作系统 \r\n\r\n 7. 5.3 RTLinux的实现原理 \r\n\r\n 7. 6 小结 \r\n\r\n 7. 7 习题 \r\n\r\n 附录A \r\n\r\n 附录B \r\n\r\n 参考文献 \r\n\r\n \r\n\r\n \r\n
\r\n
时光更迭. 历史嬗递. 中国经济带着她足以令世人惊叹的持续高速发展驶入了一个新的世纪, 一个新的千年. 世纪之初, 以微电子. 计算机. 软件. 通信技术为主导的信息技术革命给我们生存的社会所带来的变化令人目不暇接. 软件是优化我国产业结构. 加速传统产业改造和用信息化带动工业化的基础产业, 是体现国家竞争力的战略性产业, 是从事知识的提炼. 总结. 深化和应用的高智型产业, 软件关系到国家的安全, 是保证我国政治独立. 文化不受侵蚀的重要因素, 软件也是促进其他学科发展和提升的基础学科, 软件作为20世纪人类文明进步的最伟大成果之一, 代表了先进文化的前进方向. 美国政府早在1992年“国家关键技术”一文中提出“美国在软件开发和应用上所处的传统领先地位是信息技术及其他重要领域竞争能力的一个关键因素”, “一个成熟的软件制造工业的发展是满足商业与国防对复杂程序日益增长的要求所必须的”, “在很多国家关键技术中, 软件是关键的起推动作用(或阻碍作用)的因素. ”在1999年1月美国总统信息技术顾问委员会的报告“21世纪的信息技术”中指出“从台式计算机. 电话系统到股市, 我们的经济与社会越来越依赖于软件”, “软件研究为基础研究方面最优先发展的领域. ”而软件人才的缺乏和激烈竞争是当前国际的共性问题. 各国. 各企业都对培养. 引进软件人才采取了特殊政策与措施.
为了满足社会对软件人才的需要, 为了让更多的人可以更快地学到实用的软件理论. 技术与方法. 我们编著了《普通高等院校计算机专业(本科)实用教程系列丛书》. 本套丛书面向普通高等院校学生, 以培养面向对世纪计算机专业应用人才(以软件工程师为主)为目标, 以简明实用. 便于自学. 反映计算机技术最新发展和应用为特色, 具体归纳为以下几
1.讲透基本理论. 基本原理. 方法和技术, 在写法上力求叙述详细, 算法具体, 通俗易懂, 便于自学.
2. 理论结合实际. 计算机是一门实践性很强的科学, 丛书贯彻从实践中来到实践中去的原则, 许多技术理论结合实例讲, 以便于学习的理解.
3. 本丛书形成完整的体系, 每本教材既有相对独立性, 又有相互衔接和呼应, 为总的培养目标服务.
4. 每本教材都配以习题和实验, 在各教学阶段安排课程设计或大作业, 培养学生的实力与创新精神. 习题和实验可以制作成光盘.
新世纪曙光激人向上, 催人奋进. 江总书记在十五届五中全会上的讲话:“大力推进国民经济和社会信息化, 是覆盖现代化建设全局的战略举措. 以信息化带动工业化, 发挥优势, 实现社会生产力的跨越式发展”. 指明了我国信息界前进的方向. 对世纪日趋开放的国策与更加迅速发展的科技会托起祖国更加辉煌灿烂的明天.
孙家广
2001年3月
在计算机网络迅速发展的今天, 计算机技术不断地更新和完善, 无论是硬件还是软件的变革都会在计算机操作系统的设计技术与使用风格上得到体现. 因此, 计算机操作系统的教材应该体现出这些变化, 才能使教师教得方便, 学生学有所得.
操作系统是计算机系统配置的所有软件中使用最广泛的基础软件, 它在整个计算机系统软件中处于中心地位, 也是计算机专业课教学中最重要的环节之一. 从操作系统自身角度讲, 它不仅很好地体现了计算机日益发展中的软件研究成果, 而且也较好地体现了计算机的硬件技术发展及计算机系统结构的发展成果. 从计算机用户角度讲, 学习使用计算机实际上就是熟悉使用操作系统所提供的用户界面环境. 每台计算机必须安装操作系统, 有的甚至不止安装一套. 普通用户只需了解操作系统的外部功能, 而无需知道其内部实现细节, 也就是说, 操作系统是如何实现这些功能的对用户来说无关紧要. 此时, 操作系统被看做是一只只“黑盒子”, 因为用户读不到, 或读不懂操作系统的源代码, 仅需要了解它的外部接口. 但是, 对于计算机专业的学生, 掌握计算机不仅要求会操作它, 还要学会利用计算机去开发各种软件, 解决复杂的应用问题. 学习操作系统的设计与实现原理, 是计算机软件专业的学生全面地了解及掌握系统软件, 以及一般软件设计方法和技术的必不可少的综合实践, 也是了解计算机硬件和软件如何衔接的必经之路. 然而, 操作系统毕竟是所有软件中最复杂的, 编制这样的系统涉及到的知识很广, 程序员既要有扎实的软件基础知识, 又要非常了解系统的硬件接口, 难度相当大, 而且目前在PC机或工作站等不同体系结构的计算机上都已经有了主流操作系统, 所以大多数软件工程师很少有机会参与编制实际的操作系统. 因此, 学习本课程有两大难处, 即原理的抽象性和实验上与实际系统的开发有相当的距离. 本书针对这两大难点, 从应用出发, 适度地介绍了操作系统的基本原理和概念, 并提供了相应的实践环节.
本书将作为计算机专业大学本科生的教材, 根据国内使用计算机的情况, 在内容上力图具有一定的先进性和较大的适应性. 遵循这一原则, 我们在编写中着重讲述原理. 概念和实例.
本书的特点之一是简明实用, 以应用来驱动操作系统原理的介绍, 以操作系统整体构架为指南, 采用自项向下方式的操作系统教学法, 使学生尽早熟悉操作系统整体构架并对其建立起整体概念. 这样能够使学生首先在概念上了解课程的需求是什么, 应该提供什么样的技术支持, 从而提高学习原理的积极性.
本书的特点之一是提供操作系统实验用的全部C语言源程序, 并以Linux为例, 进行操作系统实验.
Linux的出现既是计算机网络发展的产物, 也是用户对编写自己的操作系统愿望的体现. 本书采用Linux作为实例, 主要因为Linux是免费的UNIX操作系统, 运行在PC机上, 硬件条件要求低, 且无偿地提供全部的C语言源程序.
全书共分七章和二个附录. 第1章阐述了什么是操作系统, 操作系统的发展和形成过程, 操作系统的现状和它在计算机系统中的重要作用. 第2章介绍操作系统用户接口, 主要是介绍Linux的安装与使用, 第3-6章主要讨论了操作系统的基本原理和概念, 包括进程管理. 并发程序设计. 存储管理. 设备管理和文件管理等内容. 在阐述基本原理和概念的基础上, 为了使读者对操作系统建立一个整体概念, 对所学知识能融会贯通, 每章都有提出问题以及对Linux相应部分的介绍. 第7章介绍操作系统的较深入的内容, 包括多处理机系统. 计算机网络. 分布式系统. 嵌入式系统以及计算机集群计算. 附录中提供了常用Linux命令和操作系统实验指导, 为每课的实验提供支持.
本书各章均附有一定数量的习题, 帮助读者进一步复习各章内容.
本课程的参考教学时数为56学时, 实验为犯学时, 在阅读本书之前, 读者应具有程序设计. 计算机组织和系统结构方面的知识. 如果读者已熟悉Linux的使用可跳过第2章Linux部分的阅读, 不会影响学习的连贯性.
本书的第1章. 第2章. 第3章. 第4章由任爱华执笔, 王博参与了第2章的编写, 林仕鼎参与了第3章中Linux部分的编写, 周建国参与了第4章的linux部分编写, 第5章由焦晖执笔, 第6章由张茂林执笔, 第7章由杜悦冬执笔. 张茂林对第2章和第3章进行了审校, 管叶茂对第4章和第7章进行了审校, 全书由任爱华进行统一修改. 审校并统稿. 另外还有严彦. 陈智波. 郭锐. 王菲等也为本书的上机实验提供了部分实例和答案. 常茹和陈智波等参加了书稿的部分校对工作. 金茂忠教授对全书进行了审阅.
限于编者水平, 错误和不妥之处在所难免, 恳请读者批评指正.
编者
2001年 3月 26日
无封面