顶部
收藏

操作系统原理与设计实现


作者:
夏文 李治军 吴帆 申文博 李雪 编著
定价:
72.00元
版面字数:
700.00千字
开本:
16开
装帧形式:
平装
版次:
1
最新版次
印刷时间:
2025-01-23
ISBN:
978-7-04-065607-7
物料号:
65607-00
出版时间:
2025-12-31
读者对象:
高等职业教育
一级分类:
计算机大类
二级分类:
计算机类

本书充分突出操作系统作为一个系统的核心、保证整体高速运转的理念,同时强调各个组成部分必须有机、协调地分工协作,旨在让读者能真正理解操作系统的整体运转原理。

本书从硬件管理基本功能出发,依次对操作系统的CPU管理、内存管理、外设管理、文件管理等进行了详细的阐述;从上层应用提供的接口出发,对系统接口设计、进程管理、文件接口等内容进行了详细阐述。在单独模块阐述的基础上,深入地阐述了这些模块之间的关系,即这些模块是如何合作成为一个整体系统的。本书同时对操作系统安全、分布式互联以及图形界面进行了适当拓展,结合商用级Linux、鸿蒙操作系统的分析,让读者能够真正理解现代操作系统的整体运转原理。

为避免单纯的原理阐述让读者感到空泛、浮于表面,同时加强操作系统原理和实现的有机融合,本书设计了14个实践项目,其中包括8个初级认知型实践项目和6个高级综合型实践项目,几乎涵盖了操作系统的全部内容。

本书可作为高等学校计算机及相关专业操作系统课程教材或参考书,也可供操作系统开发以及在操作系统上进行相关研究的人员参考。

  • 前辅文
  • 第1章 操作系统概念及其发展概述
    • 1.1 什么是操作系统
    • 1.2 操作系统历史概述
      • 1.2.1 简单的批处理系统
      • 1.2.2 OS/360的出现
      • 1.2.3 UNIX、Linux的诞生
      • 1.2.4 操作系统历史的另一个分支——系统服务的演进
    • 1.3 操作系统核心轮廓
      • 1.3.1 多进程视图与文件视图
      • 1.3.2 系统服务
    • 1.4 小结
    • 1.5 习题
  • 第2章 系统启动——打开电源以后发生的故事
    • 2.1 计算机工作机理
    • 2.2 操作系统启动过程
      • 2.2.1 操作系统启动过程实例——第一阶段
      • 2.2.2 操作系统镜像的生成——Makefile
      • 2.2.3 操作系统启动过程实例——第二阶段
      • 2.2.4 操作系统启动过程实例——第三阶段
      • 2.2.5 操作系统启动过程实例——第四阶段
      • 2.2.6 操作系统启动过程实例——第五阶段
    • 2.3 小结
    • 2.4 实践项目1:控制操作系统启动
    • 2.5 习题
  • 第3章 系统接口——通向操作系统内核的大门
    • 3.1 用户使用计算机系统的基本形式
    • 3.2 基本系统调用及其应用
      • 3.2.1 fork()、exec()、wait()、exit()
      • 3.2.2 open()、read()、write()
      • 3.2.3 printf()、scanf()
    • 3.3 系统调用的实现机理
      • 3.3.1 内核态与用户态
      • 3.3.2 系统调用与int0x80
      • 3.3.3 printf()的完整故事
    • 3.4 通过系统调用窥见操作系统的基本脉络
    • 3.5 小结
    • 3.6 实践项目2:添加系统调用
    • 3.7 习题
  • 第4章 多进程——操作系统运行的核心视图
    • 4.1 使用CPU
      • 4.1.1 CPU工作机理与使用CPU的直观想法
      • 4.1.2 问题的引出与并发
    • 4.2 进程概念与多进程视图
      • 4.2.1 进程与程序
      • 4.2.2 CPU管理与多进程视图
    • 4.3 多进程引起的基本问题
      • 4.3.1 多个进程的组织与进程状态
      • 4.3.2 多个进程的切换和调度
      • 4.3.3 进程间的影响分离
      • 4.3.4 进程间的通信与合作
    • 4.4 小结
    • 4.5 实践项目3:打印进程日志
    • 4.6 习题
  • 第5章 线程切换与调度——操作系统的发动机
    • 5.1 线程与进程
      • 5.1.1 线程概念的引人
      • 5.1.2 一个多线程实例
      • 5.1.3 线程与进程
    • 5.2 用户级线程的切换与创建
      • 5.2.1 用户级线程之间的切换
      • 5.2.2 用户级线程的创建
    • 5.3 内核级线程的切换与创建
      • 5.3.1 内核级线程的引出
      • 5.3.2 内核级线程之间的切换
      • 5.3.3 内核级线程的创建
    • 5.4 创建0号/1号进程——多进程视图的起点
    • 5.5 CPU调度
      • 5.5.1 CPU调度的含义与算法准则
      • 5.5.2 若干CPU调度的基本算法
      • 5.5.3 多级反馈队列调度算法的一个具体实现
    • 5.6 小结
    • 5.7 实践项目4:基于内核栈完成进程切换
    • 5.8 习题
  • 第6章 进程同步——让多个进程的推进合理有序
    • 6.1 进程同步问题与睡眠/唤醒
    • 6.2 从信号到信号量
      • 6.2.1 利用信号解决同步问题
      • 6.2.2 将信号扩展为信号量
      • 6.2.3 生产者-消费者同步问题的信号量解法
    • 6.3 临界区——对信号量的保护
      • 6.3.1 临界区的引出
      • 6.3.2 临界区的软件实现
      • 6.3.3 Lamport面包店算法
      • 6.3.4 临界区的硬件实现
    • 6.4 信号量的实现与使用
      • 6.4.1 信号量的使用
      • 6.4.2 有正有负的信号量的实现
      • 6.4.3 只有正值的信号量的实现
    • 6.5 死锁现象及死锁处理
      • 6.5.1 死锁现象的出现
      • 6.5.2 死锁出现的条件与死锁预防
      • 6.5.3 死锁避免
      • 6.5.4 死锁检测/恢复与死锁忽略
    • 6.6 小结
    • 6.7 实践项目5:信号量的实现与应用
    • 6.8 习题
  • 第7章 内存管理——给程序执行提供一个舞台
    • 7.1 内存使用与程序重定位
      • 7.1.1 从取指——执行到内存使用
      • 7.1.2 程序重定位
    • 7.2 分段
      • 7.2.1 段的概念
      • 7.2.2 分段机制下的地址转换
    • 7.3 内存分区
      • 7.3.1 可变分区与适配算法
      • 7.3.2 内存碎片
    • 7.4 分页
      • 7.4.1 分页机制
      • 7.4.2 多级页表与快表
    • 7.5 段页式内存管理与虚拟内存
      • 7.5.1 如何将段和页结合在一起
      • 7.5.2 段、页结合时进程对内存的使用
      • 7.5.3 一个真实的段页式内存机制
    • 7.6 小结
    • 7.7 实践项目6:地址映射与共享
    • 7.8 习题
  • 第8章 换入/换出——用磁盘和时间来换取一个规整的虚拟内存
    • 8.1 规整的虚拟内存
      • 8.1.1 虚拟内存与换入/换出
      • 8.1.2 请求调页
      • 8.1.3 页面调入的具体实现
    • 8.2 页面换出
      • 8.2.1 基本的页面换出算法
      • 8.2.2 LRU算法的准确实现
      • 8.2.3 Clock算法
    • 8.3 页框个数分配与全局置换
    • 8.4 小结
    • 8.5 习题
  • 第9章 设备驱动——从文件视图到out指令
    • 9.1 设备驱动的基本原理
      • 9.1.1 外设的工作原理
      • 9.1.2 文件视图
    • 9.2 显示器的驱动
      • 9.2.1 从printf()开始
      • 9.2.2 文件视图中的大量分支
      • 9.2.3 最终到达mov ax,[pos]
    • 9.3 键盘的驱动
      • 9.3.1 从键盘中断开始
      • 9.3.2 从缓冲队列最终到scanf()
    • 9.4 小结
    • 9.5 实践项目7:终端设备字符显示的控制
    • 9.6 习题
  • 第10章 文件系统——个从磁盘到文件再到文件系统的漫长抽象
    • 10.1 磁盘工作的基本原理
      • 10.1.1 磁盘工作的原理
      • 10.1.2 磁盘工作的过程
      • 10.1.3 使用磁盘的直观方法
    • 10.2 生磁盘的使用
      • 10.2.1 第一层抽象:从扇区到磁盘块请求
      • 10.2.2 第二层抽象:多个进程产生的磁盘请求队列
      • 10.2.3 第三层抽象:从磁盘请求到高速缓存
    • 10.3 基于文件的磁盘使用
      • 10.3.1 第四层抽象:引出文件
      • 10.3.2 文件的实现
      • 10.3.3 第五层抽象:将整个磁盘抽象成一个文件系统
      • 10.3.4 目录解析的代码实现
    • 10.4 一个典型的文件系统:EXT
      • 10.4.1 磁盘布局与超级块
      • 10.4.2 文件表示与目录项表示
      • 10.4.3 内存结构与介质结构
    • 10.5 小结
    • 10.6 实践项目8:proc文件的实现
    • 10.7 习题
  • 第11章 操作系统安全——从内核迈向操作系统生态的关键一步
    • 11.1 操作系统内部保护
      • 11.1.1 存储管理部件
      • 11.1.2 访问控制
    • 11.2 操作系统对外防御
      • 11.2.1 操作系统面临的安全威胁
      • 11.2.2 Linux Crypto子系统
      • 11.2.3 PAM身份认证机制
      • 11.2.4 eCryptfs加密堆叠文件系统
      • 11.2.5 防火墙
    • 11.3 可信执行环境(TEE)
      • 11.3.1 TEE简介
      • 11.3.2 TEE的典型应用
      • 11.3.3 TEE在鸿蒙中的应用
    • 11.4 鸿蒙安全子系统
      • 11.4.1 鸿蒙安全子系统架构
      • 11.4.2 安全子系统向上功能
    • 11.5 小结
    • 11.6 习题
  • 第12章 网络与分布式系统——从单机操作系统到万物互联时代
    • 12.1 如何进行多机互联
      • 12.1.1 通信协议
      • 12.1.2 网络结构
      • 12.1.3 通信结构
    • 12.2 分布式系统的原理
      • 12.2.1 分布式系统简介
      • 12.2.2 远程过程调用
      • 12.2.3 基于网络的操作系统类型
    • 12.3 分布式计算框架
    • 12.4 分布式文件系统
      • 12.4.1 命名
      • 12.4.2 远程文件访问
      • 12.4.3 实例:AFS
    • 12.5 鸿蒙分布式文件系统
    • 12.6 小结
    • 12.7 习题
  • 第13章 图形子系统——-迈向用户普及与商业生态
    • 13.1 计算机图形学简介
      • 13.1.1 计算机图形
      • 13.1.2 计算机图形学简介
      • 13.1.3 计算机图形学基本原理
      • 13.1.4 计算机图形学运用场景
    • 13.2 UNIX的图形子系统架构
      • 13.2.1 图形子系统架构概述
      • 13.2.2 图形子系统的硬件设备
      • 13.2.3 图形子系统的内核态部分
      • 13.2.4 图形子系统的用户态部分
      • 13.2.5 图形子系统示例:X-Wayland架构图形子系统
    • 13.3 鸿蒙图形子系统
      • 13.3.1 鸿蒙图形子系统概述
      • 13.3.2 图形开发框架ArkUI
    • 13.4 小结
    • 13.5 习题
  • 第14章 大型实践项目1:内核级线程的设计与实现
    • 14.1 项目的主旨和基本任务
      • 14.1.1 项目主旨
      • 14.1.2 项目基本任务
    • 14.2 TCB与PCB
      • 14.2.1 创建线程与创建进程
      • 14.2.2 改造fork()
      • 14.2.3 分析pthread_create()的实现机理
      • 14.2.4 在pthread_create()中创建用户栈
      • 14.2.5 处理start_routine()参数
      • 14.2.6 创建内核级线程TCB与内核栈
    • 14.3 以TCB为单位进行CPU调度
    • 14.4 引入TCB以后的其他修改
      • 14.4.1 进程退出(exit)
      • 14.4.2 进程状态、时间片等内容的操作
    • 14.5 主线程与工作线程的设计与实现
    • 14.6 习题
  • 第15章 大型实践项目2:虚拟内存与交换分区的设计与实现
    • 15.1 项目的主旨和基本任务
      • 15.1.1 项目主旨
      • 15.1.2 项目的基本任务
    • 15.2 交换分区的驱动
      • 15.2.1 给Bochs增加一块硬盘
      • 15.2.2 交换分区的结构设计
      • 15.2.3 交换分区的初始化
    • 15.3 进程页面的换出
      • 15.3.1 Clock算法的设计
      • 15.3.2 页面环形链表的建立和维护
      • 15.3.3 扫描动作和换出动作的实现
      • 15.3.4 交换分区的写出
    • 15.4 进程页面的换入
    • 15.5 交换分区使用情况的监控
    • 15.6 习题
  • 第16章 大型实践项目3:鼠标驱动和简单的图形接口实现
    • 16.1 项目的主旨和基本任务
      • 16.1.1 项目主旨
      • 16.1.2 项目的基本任务
    • 16.2 鼠标的驱动
      • 16.2.1 鼠标中断的捕获
      • 16.2.2 键盘控制器i8042和中断控制器8259A
      • 16.2.3 鼠标输入数据的解码
    • 16.3 显示器的图形工作模式
      • 16.3.1 启动图形模式
      • 16.3.2 建立像素点阵与显存之间的映射
      • 16.3.3 设置屏幕分辨率
      • 16.3.4 开始绘制屏幕
    • 16.4 消息驱动框架
    • 16.5 可视化应用程序的设计与实现
      • 16.5.1 定义图形对象
      • 16.5.2 创建一个定时器
      • 16.5.3 应用程序的核心结构
    • 16.6 习题
  • 第17章 大型实践项目4:网卡驱动与网络协议的设计与实现
    • 17.1 项目的主旨和基本任务
      • 17.1.1 项目主旨
      • 17.1.2 项目的基本任务
    • 17.2 网卡驱动
      • 17.2.1 给Bochs安装网卡
      • 17.2.2 网卡驱动的基本原理
      • 17.2.3 读出网卡的MAC地址
      • 17.2.4 网卡初始化
    • 17.3 ARP协议的设计与实现
      • 17.3.1 ARP协议的基本原理
      • 17.3.2 ARP数据包以及以太网物理帧的形成
      • 17.3.3 利用网卡发送物理帧
      • 17.3.4 利用网卡接收物理帧
      • 17.3.5 ARP数据包解析与ARP缓存表
    • 17.4 ICMP协议及ping命令
      • 17.4.1 本项目涉及的协议栈结构
      • 17.4.2 ICMP协议的设计与实现
      • 17.4.3 利用ICMP协议实现ping命令
    • 17.5 习题
  • 第18章 大型实践项目5:分布式框架设计与实现
    • 18.1 项目主旨和基本任务
      • 18.1.1 项目主旨
      • 18.1.2 项目基本任务
    • 18.2 分布式框架MapReduce的设计与实现
      • 18.2.1 MapReduce介绍
      • 18.2.2 第一个子任务目标
      • 18.2.3 进程间通信
      • 18.2.4 构建管理者进程
      • 18.2.5 构建工作者进程
      • 18.2.6 应用程序使用MapReduce框架
    • 18.3 分布式文件系统的设计与实现
      • 18.3.1 第二个子任务目标
      • 18.3.2 总体架构
      • 18.3.3 构建存储服务器
      • 18.3.4 构建命名服务器
      • 18.3.5 一致性和线程安全性
      • 18.3.6 实现建议
    • 18.4 习题
  • 第19章 创新实践项目:工业级分布式框架探索
    • 19.1 项目的主旨和基本任务
      • 19.1.1 项目主旨
      • 19.1.2 项目基本任务
    • 19.2 基于Spark的分布式数据分析实践
      • 19.2.1 项目的主旨和基本任务
      • 19.2.2 Spark分布式集群环境搭建
      • 19.2.3 Spark分布式应用程序编写与提交运行
      • 19.2.4 Spark与Hadoop分布式框架分析
    • 19.3 基于鸿蒙分布式软总线的扩展生态互联实践
      • 19.3.1 项目的主旨和基本任务
      • 19.3.2 开发环境搭建
      • 19.3.3 鸿蒙分布式软总线的框架和基本原理
      • 19.3.4 分布式软总线的扩展生态互联
    • 19.4 习题
  • 参考文献

相关图书