
本书按照操作系统的功能分为10章,系统地讲述操作系统的基本原理。第1章为导论,介绍操作系统的概念、操作系统的形成与发展及操作系统的功能和操作系统提供服务的方式等;第2~6章介绍操作系统的进程管理(处理器管理),包括进程、线程、进程调度、进程同步和死锁;第7章为内存管理;第8章为外存管理;第9章为文件管理;第10章为I/O系统。为了满足双语教学的需要,本书在每章的最后增加了精选的操作系统技术英文资料,供有能力的读者进行扩展阅读。本书配有PPT、源代码等教学资源,读者可登录华信教育资源网(www.hxedu.com.cn)免费下载。本书每章都配有教学视频,读者可以扫描书中二维码观看。此外,全书提供8个基于Linux系统的实验,帮助读者加深对操作系统原理的理解,部分实验也提供演示视频。本书适合作为本科院校、高职高专院校计算机操作系统和Linux相关课程的教材及参考书,也可供相关技术人员参考。
操作系统是所有计算机系统的重要组成部分。随着计算机设备的多样化和小型化,操作系统也在不断地优化。一直以来,操作系统课程是计算机专业的必修课之一,理解操作系统的基本原理是该专业学生学习其他专业课程的必要条件。网络安全与执法专业是公安院校特有的专业方向,专业培养方案中,除公安业务课程外,其他课程与信息安全专业基本一致。因此,操作系统课程也是该专业的核心课程。学习本书前,读者需要掌握以下知识:数据结构、计算机基础及C语言(本书所有代码都是基于C语言编写的)。 在操作系统教材领域,Operating System Concepts一书地位很高,该书作者对操作系统的理解极为深入,写作水平超群。本书以该书为基础进行编写,适当缩减内容,适合48学时或56学时教学使用,希望本书可以用通俗易懂的语言引领读者打开操作系统这扇大门。 操作系统源自西方国家,因为语言和文化差异,很多理论知识必须要读外文原文方可理解透彻,所以本书在每章的最后增加了精选的操作系统技术英文资料,希望使读者在学习过程中得到一些启迪。 为方便读者学习,本书配有PPT、源代码等教学资源,读者可登录华信教育资源网(www.hxedu.com.cn)下载。本书每章都配有教学视频,读者可以扫描书中二维码观看,也可以在B站搜索本课程或用户“Y4NGY”进行观看。 目前,国产操作系统的发展蒸蒸日上,本书以国产的深度系统(Deepin)为实验平台,通过8个实验让读者对操作系统原理有更直观的认识。部分实验配有对应的演示视频,希望这些能给读者的学习带来更多的便利。 本书第1~9章由杨一涛编写,第10章由钱发华、卢万进编写,全书由赵明生教授审阅。本书在编写过程中得到王新猛、吴育宝及吴玉强等老师的关心和支持,为本书配图和调试实验代码的学生有刘玮健、张宇洁、潘宏晨、陈珣瑜、刘俊涛、赵博文、赵博婧、吴王范、曹开焱、田心玥、徐立力、蒋佳宇及童芝丹。在此对所有帮助过我们的人表示衷心的感谢!
目 录 第1章 导论 1 1.1 操作系统的概念 1 1.2 操作系统的形成与发展 3 1.2.1 手工操作阶段 3 1.2.2 单道批处理系统 3 1.2.3 多道批处理系统 4 1.2.4 分时操作系统 5 1.2.5 微机操作系统 5 1.2.6 分布式操作系统 7 1.2.7 嵌入式操作系统 7 1.3 操作系统的功能 7 1.3.1 接管计算机 7 1.3.2 进程管理 10 1.3.3 存储管理 11 1.3.4 文件管理 12 1.3.5 设备管理 13 1.4 操作系统的特点 13 1.4.1 并发性 13 1.4.2 共享性 14 1.4.3 虚拟性 15 1.4.4 异步性 15 1.5 操作系统提供服务的方式 15 1.5.1 接口 15 1.5.2 操作接口 16 1.5.3 程序接口 18 1.6 GNU/Linux历史 19 1.7 Reading Materials 20 1.7.1 Overview 20 1.7.2 Concurrency and Parallelism 22 1.7.3 Graphic User Interface 23 1.8 实验1 Linux安装及开发环境 搭建 25 第2章 进程 26 2.1 程序和进程 26 2.2 进程的状态及转换 27 2.3 进程的切换 28 2.3.1 概述 28 2.3.2 中断机制 29 2.3.3 模式切换 30 2.3.4 进程控制块 30 2.3.5 进程切换 31 2.4 Reading Materials 32 2.4.1 Overview 32 2.4.2 Inter Process Communication 33 2.4.3 Process Control Block 34 2.5 实验2 进程的创建 36 第3章 线程 39 3.1 动机和特点 39 3.2 线程定义 40 3.3 线程模型 41 3.4 线程库 42 3.5 Reading Materials 43 3.5.1 Overview 43 3.5.2 POSIX Thread (Pthread) Libraries 44 3.6 实验3 Pthread多线程 45 第4章 进程调度 47 4.1 概述 47 4.2 调度标准 49 4.3 调度算法 50 4.3.1 先来先服务调度 50 4.3.2 最短作业优先调度 51 4.3.3 轮转调度 52 4.3.4 优先级调度 54 4.4 Reading Materials 54 4.4.1 Overview 54 4.4.2 CFS: Completely Fair Process Scheduling in Linux 56 4.5 实验4 Linux调度策略 59 第5章 进程同步 60 5.1 背景 60 5.2 进程的交互 61 5.3 竞争关系 62 5.3.1 竞争 62 5.3.2 临界区 62 5.3.3 软件解决方案 63 5.3.4 硬件解决方案 64 5.3.5 忙式等待 65 5.4 协作关系 65 5.4.1 信号量 65 5.4.2 二值信号量 66 5.4.3 计数信号量 66 5.4.4 信号量的实现 67 5.4.5 死锁与饥饿 68 5.5 经典同步问题 68 5.5.1 最简单的同步问题 68 5.5.2 生产者-消费者问题 69 5.5.3 苹果桔子问题 70 5.5.4 哲学家进餐问题 71 5.6 Reading Materials 72 5.6.1 Overview 72 5.6.2 Mutual Exclusion 72 5.6.3 Critical Section 73 5.6.4 Mutex VS Semaphore 73 5.7 实验5 并发线程互斥同步 74 第6章 死锁 80 6.1 定义 80 6.2 死锁特征 80 6.3 资源分配图 81 6.4 死锁的防止 82 6.5 死锁的避免 83 6.5.1 安全状态 83 6.5.2 银行家算法 84 6.6 死锁的检测和恢复 86 6.6.1 死锁的检测 86 6.6.2 死锁的恢复 86 6.7 Reading Materials 87 6.7.1 Overview 87 6.7.2 Dijkstra Biography 88 第7章 内存管理 90 7.1 概述 90 7.1.1 基本概念 90 7.1.2 基本硬件 91 7.1.3 逻辑地址和物理地址 92 7.1.4 地址转换 92 7.2 连续内存分配 95 7.2.1 固定分区分配 95 7.2.2 可变分区分配 96 7.2.3 碎片 97 7.3 分段 98 7.3.1 基本方法 98 7.3.2 实现原理 99 7.4 分页 101 7.4.1 基本方法 101 7.4.2 地址转换 101 7.4.3 快表 103 7.4.4 多级页表 105 7.5 虚拟内存 106 7.5.1 缓存与局部性原理 106 7.5.2 虚拟内存 107 7.5.3 请求调页 108 7.5.4 页面置换算法 110 7.5.5 系统抖动 112 7.6 Reading Materials 113 7.6.1 Overview 113 7.6.2 Virtual Memory 116 7.6.3 Segmented Virtual Memory 116 7.7 实验6 进程内存空间 117 第8章 外存管理 124 8.1 磁盘结构 124 8.1.1 硬件结构 124 8.1.2 格式化 125 8.2 磁盘调度 125 8.2.1 磁盘性能指标 125 8.2.2 FCFS调度 126 8.2.3 SSTF调度 126 8.2.4 SCAN调度 127 8.2.5 C-SCAN调度 128 8.2.6 LOOK调度 128 8.2.7 调度算法选择 129 8.3 RAID结构 130 8.3.1 概述 130 8.3.2 RAID级别 130 8.4 Reading Materials 133 第9章 文件管理 135 9.1 概述 135 9.2 文件 135 9.2.1 文件类型 136 9.2.2 文件属性 136 9.3 存取方法 137 9.3.1 顺序存取 137 9.3.2 直接存取 137 9.4 目录 137 9.4.1 基本概念 137 9.4.2 文件控制块 138 9.4.3 单级目录 139 9.4.4 两级目录 139 9.4.5 树形目录 140 9.4.6 UFS的目录实现 141 9.5 分配方法 141 9.5.1 连续分配 142 9.5.2 链接分配 142 9.5.3 索引分配 143 9.6 空闲空间管理 145 9.6.1 位图法 145 9.6.2 空闲链表法 145 9.7 Reading Materials 146 9.7.1 Overview 146 9.7.2 Inode 148 9.7.3 Ext4 149 9.8 实验7 Linux文件系统 152 9.8.1 实验说明 152 9.8.2 磁盘高级格式化 152 9.8.3 Linux文件系统操作 160 第10章 I/O系统 163 10.1 概述 163 10.2 I/O硬件 163 10.2.1 硬件原理 163 10.2.2 轮询 164 10.2.3 中断 165 10.2.4 DMA 166 10.3 内核I/O结构 167 10.4 内核I/O子系统 168 10.4.1 I/O调度 168 10.4.2 缓冲区 168 10.4.3 缓存 169 10.4.4 假脱机 169 10.5 Reading Materials 170 10.5.1 Overview 170 10.5.2 I/O Channel 171 10.5.3 The Buffer Cache 172 10.6 实验8 Linux驱动实验 174 参考文献 175
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0381970