本书叙述了实时系统软件的基础知识及设计方法,并把实时多任务操作系统、实时控制局域网协议以及分布式实时系统,作为一个有机整体来进行叙述。全书从实践出发,首先介绍了实时系统是如何建立的,叙述了实时任务管理、时钟管理、内存管理、设备管理以及文件系统等的实现机制;接着说明了实时系统中局域网软件的若干设计问题,介绍了三个不同风格的局域网协议,进而介绍了一个用于实时控制的局域网协议——PROWAY C协议的实现过程,并在此基础上介绍了分布式系统中任务通信的实现机制;最后介绍了分布式系统中的若干设计问题。\r\n\r\n 本书可作为大学计算机专业本科生、研究生的参考教材,也可供从事实时控制系统设计和研制的工程技术人员参考。\r\n
\r\n
第1章 引言 \r\n\r\n 1. 1 什么是实时系统 \r\n\r\n 1. 2 实时系统的特点 \r\n\r\n 1. 3 分布式实时系统的引入 \r\n\r\n 1. 4 分布式实时系统的优点 \r\n\r\n 1. 5 分布式实时系统存在的问题 \r\n\r\n 1. 6 实时操作系统是实时系统软件的基础 \r\n\r\n \r\n\r\n 第2章 实时操作系统概述 \r\n\r\n 2. 1 实时操作系统的功能 \r\n\r\n 2. 1. 1 系统资源的管理者 \r\n\r\n 2. 1. 2 硬件功能的扩充 \r\n\r\n 2. 2 系统调用命令 \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. 3 用户实时应用系统的建立和启动 \r\n\r\n 2. 3. 1 'ROOT'任务和'IDLE'任务 \r\n\r\n 2. 3. 2 'BACKGROUND'任务和'IDLE'任务 \r\n\r\n 2. 4 实时操作系统的内部结构 \r\n\r\n 2. 4. 1 整体式模型 \r\n\r\n 2. 4. 2 客户/服务器模型 \r\n\r\n \r\n\r\n 第3章 实时任务管理 \r\n\r\n 3. 1 实时任务的概念 \r\n\r\n 3. 1. 1 用顺序执行的程序实现实时应用系统 \r\n\r\n 3. 1. 2 用并发执行的任务实现实时应用系统 \r\n\r\n 3. 1. 3 实时任务的分解 \r\n\r\n 3. 1. 4 实时任务的状态 \r\n\r\n 3. 1. 5 任务控制块TCB \r\n\r\n 3. 1. 6 操作任务队列和任务状态的几个函数 \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. 2. 3 可达截止期最早优先算法 \r\n\r\n 3. 2. 4 最小裕度算法 \r\n\r\n 3. 2. 5 其他的实时调度算法 \r\n\r\n 3. 2. 6 实时任务的可调度性 \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. 3. 3 实时任务的重新启动 \r\n\r\n 3. 3. 4 实时任务的暂停运行 \r\n\r\n 3. 3. 5 实时任务阶恢复运行 \r\n\r\n 3. 3. 6 实时任务的退出运行 \r\n\r\n 3. 3. 7 返回码的处理 \r\n\r\n 3. 3. 8 其他任务管理的系统调用命令 \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. 5. 3 信号量的操作 \r\n\r\n 3. 5. 4 信号量的删除 \r\n\r\n 3. 5. 5 利用信号量进行互斥控制 \r\n\r\n 3. 5. 6 利用信号量解决生产者和消费者问题 \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. 6. 4 邮箱和邮箱通信 \r\n\r\n 3. 6. 5 邮箱的建立 \r\n\r\n 3. 6. 6 邮件的发送和接收 \r\n\r\n 3. 6. 7 撤消邮箱 \r\n\r\n 3. 6. 8 利用邮箱通信解决生产者-消费者问题 \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. 7. 6 事件中断的实现机制 \r\n\r\n 3. 7. 7 事件中断服务程序及中断屏蔽的设置 \r\n\r\n 3. 7. 8 事件中断的发生及从事件中断服务程序返回 \r\n\r\n \r\n\r\n 第4章 时钟管理 \r\n\r\n 4. 1 定时器硬件 \r\n\r\n 4. 2 时钟管理功能 \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. 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. 4. 4 系统时钟和实际时钟的同步 \r\n\r\n 4. 4. 5 时钟同步时的时间补偿 \r\n\r\n 4. 5 软件定时器 \r\n\r\n 4. 5. 1 软件定时器的组织 \r\n\r\n 4. 5. 2 时钟任务中的消息传递 \r\n\r\n 4. 5. 3 时钟任务的实现 \r\n\r\n 4. 5. 4 内核的处理 \r\n\r\n \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. 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. 4 分页存储管理 \r\n\r\n 5. 4. 1 分页原理 \r\n\r\n 5. 4. 2 分页存储管理的实现 \r\n\r\n 5. 4. 3 分页管理的虚拟存储器 \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. 5. 1 分段原理 \r\n\r\n 5. 5. 2 分段存储管理的实现 \r\n\r\n 5. 5. 3 段页式的存储管理 \r\n\r\n \r\n\r\n 第6章 设备管理 \r\n\r\n 6. 1 外部设备概述 \r\n\r\n 6. 1. 1 外部设备的操作 \r\n\r\n 6. 1. 2 外部设备的分类 \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 6. 2. 5 设备管理程序 \r\n\r\n 6. 2. 6 设备驱动程序 \r\n\r\n 6. 2. 7 设备中断程序 \r\n\r\n 6. 2. 8 设备输入输出的缓冲 \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. 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. 4. 4 打印机输出任务 \r\n\r\n 6. 4. 5 打印机中断处理程序 \r\n\r\n 6. 4. 6 打印机Spooler \r\n\r\n 6. 4. 7 Spo01收容任务 \r\n\r\n 6. 4. 8 Spool输出任务 \r\n\r\n 6. 5 串口输入输出管理 \r\n\r\n 6. 5. 1 RS-232接口 \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. 5. 5 有关串口输入的数据结构 \r\n\r\n 6. 5. 6 串口输入管理任务 \r\n\r\n 6. 5. 7 串口输入任务 \r\n\r\n 6. 5. 8 串口输入中断处理程序 \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. 6. 6 控制台参数表和键盘输入缓冲池 \r\n\r\n 6. 6. 7 键盘输入管理 \r\n\r\n 6. 6. 8 控制台管理任务 \r\n\r\n 6. 6. 9 键盘输入任务 \r\n\r\n 6. 6. 10 键盘中断处理程序 \r\n\r\n 6. 6. 11 C肛输出任务 \r\n\r\n \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. 1. 3 文件类型 \r\n\r\n 7. 1. 4 文件属性 \r\n\r\n 7. 1. 5 文件描述符 \r\n\r\n 7. 1. 6 有关文件操作的系统调用命令 \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 7. 3. 4 磁盘调度算法 \r\n\r\n 7. 3. 5 提前读和滞后写 \r\n\r\n 7. 3. 6 磁盘缓冲算法 \r\n\r\n 7. 4 文件系统的实现 \r\n\r\n 7. 4. 1 有关文件系统的数据结构 \r\n\r\n 7. 4. 2 文件系统的实现过程 \r\n\r\n 7. 4. 3 文件服务任务 \r\n\r\n 7. 4, 4 目录和文件的建立. 文件路径名检索 \r\n\r\n 7. 4. 5 工作目录的设置 \r\n\r\n 7. 4. 6 文件的打开和读写 \r\n\r\n 7. 4. 7 磁盘任务 \r\n\r\n 7. 4. 8 磁盘驱动程序和中断处理程序 \r\n\r\n \r\n\r\n 第8章 死锁 \r\n\r\n 8. 1 死锁原理及处理策略 \r\n\r\n 8. 2 死锁的检测和恢复 \r\n\r\n 8. 2. 1 单个资源类型的死锁检测 \r\n\r\n 8. 2. 2 多个资源类型的死锁检测 \r\n\r\n 8. 2. 3 死锁的恢复 \r\n\r\n 8. 3 死锁的避免和预防 \r\n\r\n 8. 3. 1 任务的运行轨迹和不安全区 \r\n\r\n 8. 3. 2 安全和不安全状态 \r\n\r\n 8. 3. 3 单种资源的银行家算法 \r\n\r\n 8. 3. 4 多种资源的银行家算法 \r\n\r\n 8. 3. 5 死锁的预防 \r\n\r\n 8. 4 鸵鸟策略 \r\n\r\n \r\n\r\n 第9章 实时系统的局域网 \r\n\r\n 9. 1 局域网的拓扑结构 \r\n\r\n 9. 1. 1 总线型结构 \r\n\r\n 9. 1. 2 环型结构 \r\n\r\n 9. 1. 3 星型结构 \r\n\r\n 9. 1. 4 实时系统中主机与通信网的连接 \r\n\r\n 9. 2 实时系统中局域网软件的设计问题 \r\n\r\n 9. 2. 1 局域网协议的分层 \r\n\r\n 9. 2. 2 服务. 接口和协议 \r\n\r\n 9. 2. 3 面向连接的服务和无连接服务 \r\n\r\n 9. 2. 4 服务原语 \r\n\r\n 9. 2. 5 实时系统对局域网的需求 \r\n\r\n 9. 3 局域网的存取控制 \r\n\r\n 9. 3. 1 集中式轮询的存取控制 \r\n\r\n 9. 3. 2 静态分配信道的存取控制 \r\n\r\n 9. 3. 3 令牌存取控制 \r\n\r\n 9. 3. 4 ALOHA协议和载波侦听多路存取协议 \r\n\r\n 9. 4 IEEE 802局域网标准的体系结构 \r\n\r\n 9. 5 IEEE802. 2标准:逻辑链路控制子层LLC协议 \r\n\r\n 9. 5. 1 LLC子层提供的服务和接口 \r\n\r\n 9. 5. 2 LLC协议数据单元四U的结构 \r\n\r\n 9. 5. 3 LLC的无连接协议 \r\n\r\n 9. 5. 4 LLC的面向连接的协议 \r\n\r\n 9. 6 IEEE802. 3标准:带检测的载波侦听协议 \r\n\r\n 9. 6. 1 IEEE802. 3的帧格式 \r\n\r\n 9. 6. 2 解决冲突的算法 \r\n\r\n 9. 6. 3 802. 3MAC子层协议的实现 \r\n\r\n 9. 7 IEEE802. 4标准:令牌总线协议 \r\n\r\n 9. 7. 1 IEEE 802. 4标准的体系结构 \r\n\r\n 9. 7. 2 IEEE 802. 4标准的帧格式 \r\n\r\n 9. 7. 3 令牌总线协议 \r\n\r\n 9. 8 IEEE 802. 5标准:环型网协议 \r\n\r\n 9. 8. 1 IEEE 802. 5标准的符号编码和帧格式 \r\n\r\n 9. 8. 2 环路优先级调度算法 \r\n\r\n 9. 8. 3 环路建立和维护 \r\n\r\n 9. 9 三种协议的比较 \r\n\r\n \r\n\r\n 第10章 用于实时控制的局域网协议 \r\n\r\n 10. 1 PROWAYC概述 \r\n\r\n 10. 2 PROWAYC协议的服务规范 \r\n\r\n 10. 2. 1 PLC子层提供给PLC用户的服务 \r\n\r\n 10. 2. 2 PLC的协议数据单元格式 \r\n\r\n 10. 2. 3 MAC子层提供给PLC子层的服务 \r\n\r\n 10. 2. 4 通信节点的管理实体提供给用户的服务 \r\n\r\n 10. 3 PROWAY C逻辑链路控制子层 \r\n\r\n 10. 3. 1 PLC子层和PLC用户的接口 \r\n\r\n 10. 3. 2 共享存储器的存取控制 \r\n\r\n 10. 3. 3 PLC子层. MAC子层及管理实体的接口 \r\n\r\n 10. 3. 4 PLC子层启动站的操作过程 \r\n\r\n 10. 3. 5 PLC子层响应站的操作过程 \r\n\r\n 10. 4 PROWAY C的介质存取控制子层 \r\n\r\n 10. 4. 1 PROWAYC的符号编码 \r\n\r\n 10. 4. 2 MAC子层的帧格式 \r\n\r\n 10, 4. 3 MAC子层功能概述 \r\n\r\n 10. 4. 4 时间片和响应窗口 \r\n\r\n 10. 4. 5 令牌逻辑环路的初始化. 令牌发布和竞争 \r\n\r\n 10. 4. 6 令牌逻辑环路的建立. 争用下一站 \r\n\r\n 10. 4. 7 新节点入环和老节点退环 \r\n\r\n 10. 4. 8 令牌传递和聋站的处理 \r\n\r\n 10. 4. 9 优先级存取控制 \r\n\r\n 10, 4. 10 存取控制机的工作过程 \r\n\r\n \r\n\r\n 第11章 分布式实耐系统中任务的通信 \r\n\r\n 11. 1 任务通信概述 \r\n\r\n 11. 2 面向连接的通信 \r\n\r\n 11. 2. 1 信口和虚链路 \r\n\r\n 11. 2. 2 信口的动态分配. 信口控制块 \r\n\r\n 11. 2. 3 网络通信的系统调用命令 \r\n\r\n 11. 3 网络通信的实现 \r\n\r\n 11. 3. 1 主机系统中的网络管理程序 \r\n\r\n 11. 3. 2 参数传递和数据封装及卸装过程 \r\n\r\n 11. 3. 3 网络控制任务的实现 \r\n\r\n 11. 3. 4 网络发送任务的实现 \r\n\r\n 11. 3. 5 网络接收任务的实现 \r\n\r\n 11. 3. 6 任务的通信与同步过程 \r\n\r\n \r\n\r\n 第12章 分布式系统设计的若干问题 \r\n\r\n 12. 1 分布式系统中事件的因果关系 \r\n\r\n 12. 1. 1 '早于(happens before)'关系 \r\n\r\n 12. 1. 2 事件的时空视图 \r\n\r\n 12. 1. 3 事件的交叉视图 \r\n\r\n 12. 2 分布式系统中的全局状态 \r\n\r\n 12. 2. 1 时空视图中的全局状态 \r\n\r\n 12. 2. 2 全局状态的形式定义 \r\n\r\n 12. 2. 3 全局状态的'快照'算法 \r\n\r\n 12. 3 逻辑时钟和物理时钟. 时钟同步 \r\n\r\n 12. 3. 1 标量逻辑时钟 \r\n\r\n 12. 3. 2 向量逻辑时钟 \r\n\r\n 12. 3. 3 物理时钟 \r\n\r\n 12. 3. 4 Cristian时钟同步算法 \r\n\r\n 12. 3. 5 Berkeley的时钟同步算法 \r\n\r\n 12. 3. 6 分布式的平均算法 \r\n\r\n 12. 4 分布式系统中的互斥 \r\n\r\n 12. 4. 1 集中式的互斥算法 \r\n\r\n 12. 4. 2 分布式的互斥算法 \r\n\r\n 12. 5 分布式系统中的死锁检测 \r\n\r\n 12. 5. 1 集中式的死锁检测 \r\n\r\n 12. 5. 2 分布式的死锁检测 \r\n\r\n 12. 6 协调者的选举 \r\n\r\n 12. 6. 1 Bully算法 \r\n\r\n 12. 6. 2 环算法 \r\n\r\n 12. 7 容错 \r\n\r\n 12. 7. 1 组件和处理器故障 \r\n\r\n 12. 7. 2 同步系统和异步系统 \r\n\r\n 12. 7. 3 冗余 \r\n\r\n 12. 7. 4 主动复制冗余和主机备用冗余 \r\n\r\n 12. 7. 5 拜占庭将军问题 \r\n\r\n 12. 8 分布式实时系统的负载分配和调度 \r\n\r\n 12. 8. 1 分布式系统的负载分配 \r\n\r\n 12. 8. 2 实时系统中任务的组织和划分 \r\n\r\n 12. 8. 3 任务的实时调度 \r\n\r\n 12. 8. 4 任务优先图和甘特图(Gantt Chart) \r\n\r\n 参考文献 \r\n
\r\n
出版社约我写一本有关实时操作系统方面的书籍. 目前关于操作系统的书籍和教材, 理论方面的偏多, 如何设计和实践的偏少. 因此, 本书就围绕着模拟一个实时操作系统的设计和实现这一内容来叙述. 目前, 已经很少用一台处理器组成实时系统, 因此, 书中又增添了有关局域网软件的设计和分布式系统的一些内容.
第1章简单地介绍实时系统的一些特点, 叙述引入分布式实时系统的必要性和必然性. 第2章叙述实时操作系统的一些基本概念, 从实现的角度出发, 着重说明计算机的执行, 是如何从用户的应用程序, 进入实时操作系统, 又如何从后者返回到前者. 实时任务的管理, 是实时操作系统的核心, 第3章叙述实时任务的分解和调度原则, 介绍了实时任务的管理. 通信以及同步和互斥的问题. 在这里, 叙述了消息传递. 邮箱通信. 信号量. 事件控制等功能的设计和实现. 它是后面各章的基础. 时钟设备是实时系统的重要设备, 在第4章叙述了各种软件定时器的设计和实现问题. 第5章从实时系统的角度出发, 来讨论内存储器的管理问题. 第6章叙述设备的管理, 介绍了有关设备管理软件的设计原则, 也涉及到如何实现对打印机. 串口输入输出. 控制台输入输出等设备的管理. 第7章介绍文件系统的设计和实现, 叙述了磁盘的调度. 缓冲技术, 以及如何使用这些技术来实现一个文件系统. 第8章简单地介绍死锁原理和某些对策. 第9章介绍局域网软件设计的一些问题, 叙述了三个不同风格的局域网软件的设计. 第10章介绍一个用于实时控制的局域网协议以及实现它的一些细节. 第11章在第10章的基础上, 进一步介绍在分布式系统中, 任务之间的通信是如何实现的. 第12章简单地介绍了分布式实时系统中的若干问题, 包括分布式系统中事件的因果关系. 逻辑时钟和物理时钟. 时钟同步. 分布式系统中的互斥. 死锁. 容错以及负载分配和调度等问题.
本书是在许存权编辑的大力支持和努力下, 才得以出版的, 王淑娟同志为本书做了大量的录入工作, 在这里一并表示诚挚的谢意.
由于水平有限, 书中不当的地方, 敬请读者指正.
作者
2002年8月