图书介绍

操作系统原理 实现与实践PDF|Epub|txt|kindle电子书版本网盘下载

操作系统原理 实现与实践
  • 李治军,刘宏伟 著
  • 出版社: 北京:高等教育出版社
  • ISBN:9787040492453
  • 出版时间:2018
  • 标注页数:346页
  • 文件大小:56MB
  • 文件页数:363页
  • 主题词:操作系统-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

操作系统原理 实现与实践PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一章 系统启动——打开电源以后发生的故事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 操作系统镜像的生成——Makefile25

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、exit43

2.2.2 open、read、write45

2.2.3 printf、scanf46

2.3 系统调用的实现机理46

2.3.1 内核态与用户态46

2.3.2 系统调用与int Ox8049

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 从缓冲队列最终到scanf209

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与PCB250

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和中断控制器8259A286

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

热门推荐