操作系统原理 实现与实践PDF电子书下载
- 电子书积分:12 积分如何计算积分?
- 作 者:李治军,刘宏伟
- 出 版 社:北京:高等教育出版社
- 出版年份:2018
- ISBN:9787040492453
- 页数:346 页
第一章 系统启动——打开电源以后发生的故事 1
1.1 什么是操作系统 1
1.2 操作系统历史概述 3
1.2.1 简单的批处理系统 3
1.2.2 OS/360的出现 4
1.2.3 UNIX、Linux的诞生 7
1.2.4 操作系统历史的另一个分支——人机交互 8
1.3 操作系统核心轮廓 11
1.3.1 多进程视图 11
1.3.2 文件视图 12
1.3.3 学习操作系统从动手实践开始 13
1.4 操作系统启动过程 13
1.4.1 计算机工作机理 14
1.4.2 操作系统启动过程实例——第一阶段 16
1.4.3 操作系统镜像的生成——Makefile 25
1.4.4 操作系统启动过程实例——第二阶段 29
1.4.5 操作系统启动过程实例——第三阶段 33
1.4.6 操作系统启动过程实例——第四阶段 37
1.5 实践项目1:控制操作系统启动 38
习题一 39
第二章 系统接口——通向操作系统内核的大门 41
2.1 用户使用计算机系统的基本形式 41
2.2 基本系统调用及其应用 43
2.2.1 fork、exec、wait、exit 43
2.2.2 open、read、write 45
2.2.3 printf、scanf 46
2.3 系统调用的实现机理 46
2.3.1 内核态与用户态 46
2.3.2 系统调用与int Ox80 49
2.3.3 printf的完整故事 51
2.4 通过系统调用窥见操作系统的基本脉络 54
2.5 实践项目2:添加系统调用 55
习题二 58
第三章 多进程——操作系统最核心的视图 59
3.1 如何使用CPU? 59
3.1.1 CPU 工作机理与使用CPU的直观想法 59
3.1.2 问题的引出与并发 60
3.2 进程概念与多进程视图 62
3.2.1 进程与程序 62
3.2.2 CPU管理与多进程视图 64
3.3 多进程引起的基本问题 65
3.3.1 多个进程的组织与进程状态 65
3.3.2 多个进程的切换和调度 67
3.3.3 进程间的影响分离 69
3.3.4 进程间的通信与合作 70
3.4 实践项目3:打印进程日志 73
习题三 75
第四章 线程切换与调度——操作系统的发动机 77
4.1 线程与进程 77
4.1.1 线程概念的引入 77
4.1.2 一个多线程实例 78
4.1.3 线程与进程 79
4.2 用户级线程的切换与创建 80
4.2.1 用户级线程之间的切换 81
4.2.2 用户级线程的创建 84
4.3 内核级线程的切换与创建 87
4.3.1 内核级线程的引出 87
4.3.2 内核级线程之间的切换 90
4.3.3 内核级线程的创建 93
4.4 创建0号/1号进程——多进程视图的起点 95
4.5 CPU调度 97
4.5.1 CPU调度的含义与算法准则 97
4.5.2 若干CPU调度的基本算法 99
4.5.3 多级反馈队列调度算法的一个具体实现 105
4.6 实践项目4:基于内核栈完成进程切换 107
习题四 116
第五章 进程同步——让多个进程的推进合理有序 118
5.1 进程同步问题与睡眠/唤醒 118
5.2 从信号到信号量 120
5.2.1 利用信号解决同步问题 120
5.2.2 将信号扩展为信号量 122
5.2.3 生产者-消费者同步问题的信号量解法 124
5.3 临界区——对信号量的保护 125
5.3.1 临界区的引出 125
5.3.2 临界区的软件实现 127
5.3.3 Lamport面包店算法 130
5.3.4 临界区的硬件实现 132
5.4 信号量的实现与使用 134
5.4.1 信号量的使用 134
5.4.2 有正有负信号量的实现 136
5.4.3 只有正数的信号量的实现 137
5.5 死锁现象及死锁处理 138
5.5.1 死锁现象的出现 138
5.5.2 死锁出现的条件与死锁预防 140
5.5.3 死锁避免 143
5.5.4 死锁检测/恢复与死锁忽略 147
5.6 实践项目5:信号量的实现与应用 149
习题五 150
第六章 内存管理——给程序执行提供一个舞台 152
6.1 内存使用与程序重定位 153
6.1.1 从取指—执行到内存使用 153
6.1.2 程序重定位 154
6.2 分段 157
6.2.1 段的概念 157
6.2.2 分段机制下的地址转换 159
6.3 内存分区 162
6.3.1 可变分区与适配算法 162
6.3.2 内存碎片 164
6.4 分页 164
6.4.1 分页机制 164
6.4.2 多级页表与快表 166
6.5 段页式内存管理与虚拟内存 170
6.5.1 如何将段和页结合在一起 170
6.5.2 段、页结合时进程对内存的使用 171
6.5.3 一个真实的段页式内存机制 173
6.6 实践项目6:地址映射与共享 179
习题六 184
第七章 换入/换出——用磁盘和时间来换取一个规整的虚拟内存 186
7.1 规整的虚拟内存 187
7.1.1 虚拟内存与换入/换出 187
7.1.2 请求调页 187
7.1.3 页面调入的具体实现 189
7.2 页面换出 190
7.2.1 基本的页面换出算法 191
7.2.2 LRU算法的准确实现 192
7.2.3 clock算法 194
7.2.4 页框个数分配与全局置换 196
习题七 198
第八章 设备驱动——从文件视图到out指令 200
8.1 设备驱动的基本原理 200
8.1.1 外设的工作原理 200
8.1.2 文件视图 201
8.2 显示器的驱动 202
8.2.1 从printf开始 202
8.2.2 文件视图中的大量分支 204
8.2.3 最终到达mov ax,[pos] 205
8.3 键盘的驱动 208
8.3.1 从键盘中断开始 208
8.3.2 从缓冲队列最终到scanf 209
8.4 实践项目7:终端设备字符显示的控制 211
习题八 212
第九章 文件系统——一个从磁盘到文件再到文件系统的漫长抽象 213
9.1 磁盘工作的基本原理 213
9.1.1 磁盘工作的原理 213
9.1.2 磁盘工作的过程 214
9.1.3 使用磁盘的直观方法 215
9.2 生磁盘的使用 216
9.2.1 第一层抽象:从扇区到磁盘块请求 216
9.2.2 第二层抽象:多个进程产生的磁盘请求队列 219
9.2.3 第三层抽象:从磁盘请求到高速缓存 224
9.3 基于文件的磁盘使用 228
9.3.1 第四层抽象:引出文件 228
9.3.2 文件的实现 232
9.3.3 第五层抽象:将整个磁盘抽象成一个文件系统 235
9.3.4 目录解析的代码实现 239
9.4 实践项目8:proc文件的实现 242
习题九 246
第十章 大型实践项目一——内核级线程的设计与实现 247
10.1 项目的主旨和基本任务 247
10.1.1 项目主旨 247
10.1.2 项目基本任务 248
10.2 TCB与PCB 250
10.3 创建线程与创建进程 252
10.3.1 对fork的改造 253
10.3.2 pthread_create的实现机理分析 256
10.3.3 pthread_create中的用户栈创建 258
10.3.4 pthread_create处理start_routine的参数 259
10.3.5 内核级线程中的TCB创建与内核栈创建 260
10.4 以TCB为单位进行CPU调度 261
10.5 引入TCB以后的其他修改 263
10.5.1 进程退出(exit) 263
10.5.2 进程状态、时间片等内容的操作 264
10.6 主线程与工作线程的设计与实现 265
习题十 266
第十一章 大型实践项目二——虚拟内存与交换分区的设计与实现 268
11.1 项目的主旨和基本任务 268
11.1.1 项目主旨 268
11.1.2 项目的基本任务 269
11.2 交换分区的驱动 269
11.2.1 给Bochs增加一块硬盘 269
11.2.2 交换分区的结构设计 271
11.2.3 交换分区的初始化 273
11.3 进程页面的换出 274
11.3.1 clock算法的设计 274
11.3.2 页面环形链表的建立和维护 275
11.3.3 扫描动作和换出动作的实现 276
11.3.4 交换分区的写出 278
11.4 进程页面的换入 279
11.5 交换分区使用情况的监控 280
习题十一 282
第十二章 大型实践项目三——鼠标驱动和简单的图形接口实现 283
12.1 项目的主旨和基本任务 283
12.1.1 项目主旨 283
12.1.2 项目的基本任务 284
12.2 鼠标的驱动 285
12.2.1 鼠标中断的捕获 285
12.2.2 键盘控制器i8042和中断控制器8259A 286
12.2.3 鼠标输入数据的解码 290
12.3 显示器的图形工作模式 293
12.3.1 启动图形模式 294
12.3.2 建立像素点阵与显存之间的映射 296
12.3.3 设置屏幕分辨率 298
12.3.4 开始绘制屏幕 301
12.4 消息驱动框架 303
12.5 可视化应用程序的设计与实现 305
12.5.1 定义图形对象 305
12.5.2 创建一个定时器 306
12.5.3 应用程序的核心结构 307
习题十二 308
第十三章 大型实践项目四——网卡驱动与网络协议的设计与实现 309
13.1 项目的主旨和基本任务 309
13.1.1 项目主旨 309
13.1.2 项目的基本任务 309
13.2 网卡驱动 310
13.2.1 给Bochs安装网卡 310
13.2.2 网卡驱动的基本原理 313
13.2.3 读出网卡的MAC地址 316
13.2.4 网卡初始化 318
13.3 ARP协议的设计与实现 324
13.3.1 ARP协议的基本原理 324
13.3.2 ARP数据包以及以太网物理帧的形成 325
13.3.3 利用网卡发送物理帧 328
13.3.4 利用网卡接收物理帧 331
13.3.5 ARP数据包解析与ARP缓存表 334
13.4 ICMP协议及ping命令 336
13.4.1 本项目涉及的协议栈结构 336
13.4.2 ICMP协议的设计与实现 337
13.4.3 利用ICMP协议实现ping命令 339
习题十三 342
参考文献 344
- 《药剂学实验操作技术》刘芳,高森主编 2019
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《语文教育教学实践探索》陈德收 2018
- 《第一性原理方法及应用》李青坤著 2019
- 《计算机组成原理解题参考 第7版》张基温 2017
- 《彼得·布鲁克导演实践研究》邓小玲著 2019
- 《反思性实践》胡红梅, 2019
- 《高含硫气藏开发腐蚀控制技术与实践》唐永帆,张强 2018
- 《高等院校保险学专业系列教材 保险学原理与实务》林佳依责任编辑;(中国)牟晓伟,李彤宇 2019
- 《环境影响评价公众参与理论与实践研究》樊春燕主编 2019
- 《全国高等中医药行业“十三五”创新教材 中医药学概论》翟华强 2019
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《习近平总书记教育重要论述讲义》本书编写组 2020
- 《办好人民满意的教育 全国教育满意度调查报告》(中国)中国教育科学研究院 2019
- 《高等数学试题与详解》西安电子科技大学高等数学教学团队 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《教育学考研应试宝典》徐影主编 2019
- 《语文教育教学实践探索》陈德收 2018
- 《家庭音乐素养教育》刘畅 2018