分布式实时系统:理论与实践
作者 : [土]K. 埃尔吉耶斯(K. Erciyes) 著
译者 : 蔡国扬 译
丛书名 : 计算机科学丛书
出版日期 : 2021-11-29
ISBN : 978-7-111-69566-0
适用人群 : 本书可作为电子与计算机工程专业以及计算机科学专业的高年级本科生和研究生的教材,也可以作为对实时系统感兴趣的研究人员的参考资料。
定价 : 119.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 250
开本 : 16
原书名 : Distributed Real-Time Systems: Theory and Practice
原出版社: Springer
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

这本经过课堂检验的教材讲述分布式实时系统软件的设计和实现,使用了自底向上的方法。本书讨论了涉及实时系统的软件项目中面临的常见挑战,并提出了一种简单而有效地执行所有软件工程步骤的新方法。每一章都以对核心概念的讨论开始,并回顾了相关的方法和可用的软件。接下来是对示例内核中概念实现的描述,以及可执行代码。

图书特色

从高层设计方法到低层设计和实现细节,全面总结实时系统现代知识和范式

图书前言

从工厂、现代汽车到航空电子设备,分布式和嵌入式实时系统无处不在。分布式实时系统的特点是由许多通过实时网络连接起来的计算节点协同完成实时任务。实时任务有一个截止期限,很多应用要求实时任务必须在其截止期限之前完成。近年来的技术进步使这种分布式实时系统的节点数量大幅增加,从而使相应的系统软件设计面临巨大的挑战。分布式实时系统的节点具有一定的计算能力,它通常通过传感器和作动器与外部世界连接。并非所有的嵌入式系统都是实时的,我们将使用“分布式实时系统”这个术语描述那些具有实时特性的分布式嵌入式系统。
本书讨论设计和实现分布式实时系统软件的自底向上方法。我教授了几十年本科和研究生阶段的相关课程,并且参与了与实时系统相关的一些大型软件项目,因此了解人们在系统设计和实现过程中所遇到的主要瓶颈。首先,设计师或程序员经常面临将应用程序与一些商业化实时操作系统(或者中间件)进行结合的挑战,有时候甚至需要为这些系统编写补丁。这就要求我们深入了解与实时处理相关的硬件和操作系统概念。本书第一部分(第1~3章)介绍了一些入门知识。第二部分(第4~6章)的内容与系统软件相关,其中第4章回顾了实时操作系统的基本概念,第5章详细介绍了从头开始构建实验性的分布式实时操作系统内核的过程,第6章回顾了分布式实时操作系统和中间件的概念,描述了如何设计网络通信部分,以使实时内核能够相互协作,形成分布式实时系统的软件框架。本书的后续部分展示了把实验性内核逐渐转化为带有相应中间件的分布式实时操作系统内核的所有实现细节。
其次,设计师面临的挑战是任务调度,实时系统需要让所有任务都能够在截止期限前完成。实时系统中的任务可以大致分为硬实时任务、软实时任务和严格实时任务。它们可以是周期性的,也可以是非周期性的,分别需要不同的调度策略。不同任务之间既可能相互独立,也可能相互依赖,在相互依赖的情况下需要实现任务间同步。我们还需要提供端到端的任务调度,在满足任务截止期限要求的同时,将负载均匀地分布到分布式实时系统的节点上。另一个相关的问题是网络资源管理。所有这些都将在本书的第三部分(第7~9章)进行讨论并加以实现。
最后,设计师面临的任务是完成从需求说明开始到高层设计、详细设计和编码的所有软件工程步骤,在这个过程中会遇到很多困难。我们提供了一种执行所有步骤的简单而有效的方法。本书第四部分(第10~13章)对此进行了介绍。第10章介绍利用有限状态机进行高层设计和详细设计的方法,其中有限状态机通过操作系统线程实现。第11章介绍一些实时编程语言,包括C/POSIX、Ada和Java。为了预防灾难性事件,容错能力在实时系统中必不可少,第12章专门讨论了这个主题。第13章按照高层设计、详细设计和编码的顺序,结合我们已经开发的方法,实现了一个实时案例。
本书大致这样安排每一章的内容。首先,回顾相关概念,简要介绍一些商业软件,描述设计和实现我们需要的软件的方法。其次,给出应用,其可执行代码展示了如何在实验性示例内核中实现相关概念,该部分叫作“DRTK的实现”。如果课程仅涉及有限的实时系统知识,可以跳过这一部分以及描述DRTK的第5章。最后,会在章末提供一些复习题,总结本章重点,并给出近期参考文献。此外,每一章的“本章提要”部分还指出了一些可能的开放研究领域。
关于DRTK
本书第5章详细介绍的分布式实时内核(Distributed Real-Time Kernel,DRTK)的主要模块在与实时处理相关的各门课程的教学过程中进行了测试。但是,此章之后的各章中,与分布式处理部分相关的程序没有经过充分测试,这意味着它们可能(甚至很可能)有一些语法或者其他实现错误。本书的网站为http://akademik.ube.ege.edu.tr/~erciyes/DRTS,里面包含DRTK代码、教学幻灯片和勘误表。我希望DRTK成为一个实用的、实验性的分布式实时内核,能够用于相关课程的教学,因此欢迎对DRTK代码进行有益的修改。
本书的目标读者是电子与计算机工程、计算机科学和一般工程专业的高年级本科生、研究生和研究人员,以及任何有计算机体系结构和操作系统基础的人。书中包含了大量用于DRTK实现的样例和各种示例的C代码。感谢在各所大学选修我的实时系统、嵌入式系统、高级操作系统等课程的本科生和研究生,按照时间顺序排列,这些学校包括爱琴海大学、俄勒冈州立大学、加州大学戴维斯分校、加州州立大学圣马科斯分校、伊兹密尔理工学院、伊兹密尔大学和于斯屈达尔大学。针对我在课堂讲述的本书各个部分的内容以及在实验室测试的内核样例,这些学生提供了宝贵的反馈意见。感谢Springer资深编辑Wayne Wheeler和助理编辑Simon Rees在本书的撰写过程中提供的支持。

K. Erciyes
土耳其伊斯坦布尔

上架指导

计算机/嵌入式

封底文字

“本书以专题的形式总结了实时系统的现代知识和范式,从基础硬件和低层实时系统特性开始讲解,适用于本科生及以上层次。本书的章节结构和内容安排也颇具特色,将理论背景和实践合理地安排在一个统一的框架内。”
—— Bálint Molnár, Computing Reviews
本书描述了一种自底向上的分布式实时系统软件的设计与实现方法,内容安排经过了实际教学测试。全书共分为四部分,讨论了涉及实时系统的软件项目中常见的挑战,并给出了一种新的方法来简单有效地执行项目中的所有软件工程步骤。每章都从核心概念入手,配以对相关方法和可用软件的回顾,然后描述这些概念在示例内核中的实现,还给出了可执行代码。
只需具备计算机体系结构和操作系统的基本背景知识,就可以阅读本书。本书可以作为电子与计算机工程专业以及计算机科学专业的高年级本科生和研究生的教材,也可以作为对实时系统感兴趣的研究人员的参考资料。

本书特色
介绍实时系统的基本概念,包括实时系统架构和分布式实时系统。
关注实时操作系统,覆盖了任务、内存和输入/输出管理等概念。
给出构建实时操作系统内核的详细步骤,并使用此内核测试各种高层实现。
描述周期性和非周期性调度、资源管理以及分布式调度。
从高层设计方法到低层设计和实现细节,全面回顾应用程序设计过程。
总结实时编程语言和容错技术。
多数章节带有复习题、大量的C代码和示例,还给出了一个在真实应用程序中实现所述方法的案例研究。

译者序

分布式系统可以追溯到20世纪60年代的ARPANET,实时系统则是在嵌入式系统、工业自动化系统和多媒体系统高度发展的基础上形成的。实时系统的概念与物理时间的推进密切相关,实时计算机系统必须在确定的时间间隔内对来自环境的激励做出预期响应,还必须具备足够的容错能力。分布式实时计算机系统通过实时通信网络连接一组计算节点,需要解决其中的任务均衡和节点间通信等问题。随着物联网、边缘计算等领域的蓬勃发展,人们对高性能分布式实时系统的需求也在快速增长。
本书以分布式实时系统为背景,重点讨论设计和实现分布式实时系统软件的自底向上方法,并给出了一个实验性操作系统内核的详细设计过程,以及实现的C语言源代码。作者K. Erciyes教授在美国和土耳其的多所著名高校任教多年,讲授实时系统、嵌入式系统、高级操作系统等课程,并具备丰富的大型软件项目开发经验。
作者精心安排了本书的内容,首先概述实时系统的基本概念(包括实时体系结构和分布式实时系统),然后集中讨论分布式实时操作系统的任务、存储和输入/输出管理等问题,给出构建分布式实时操作系统内核的详细步骤及实现的C语言源代码。在这个过程中,作者对周期性和非周期性调度、资源管理以及分布式调度等问题进行了详细分析,并对实时编程语言和容错技术做了比较全面的综述。本书内容由浅入深,可以让读者感受到完整的分布式实时计算机系统的清晰脉络。
阅读本书只需要具备计算机体系结构和操作系统的基本知识。本书可以作为电子与计算机工程专业以及计算机科学专业的高年级本科生和研究生的教材,也可以作为对实时系统感兴趣的研究人员的参考资料。
我在高校任教30多年,主要讲授数据结构与算法分析、操作系统原理、操作系统分析与设计等课程,在实时通信系统软件、网络安全体系、可信网络操作系统的设计与实现等工程领域做了大量研究,对本书作者的观点和方法很认同。译文尽量体现作者的叙述风格,为了方便读者理解,我增加了一些注释。由于水平有限,对原著的理解和译文的语言组织可能存在不足,望学界同人以及广大读者赐正。
在本书的翻译过程中,我得到了同事乔海燕老师的无私帮助以及机械工业出版社华章分社刘锋编辑的充分信任和支持,在此表示衷心的感谢!

图书目录

译者序
前言
第一部分 入门知识
第1章 实时系统入门2
1.1 引言2
1.2 什么是实时系统2
1.3 基本体系结构3
1.4 实时系统的特点3
1.5 实时系统的分类4
1.6 示例系统:牛奶灌装厂5
1.7 本书大纲6
1.8 复习题6
1.9 本章提要6
参考文献7
第2章 硬件8
2.1 引言8
2.2 处理器体系结构8
2.2.1 单周期数据通路9
2.2.2 多周期数据通路13
2.2.3 流水线13
2.2.4 微控制器18
2.3 存储器19
2.3.1 与处理器的接口19
2.3.2 缓存19
2.4 输入/输出访问21
2.4.1 输入设备接口22
2.4.2 输出设备接口22
2.4.3 内存映射I/O和隔离I/O23
2.4.4 软件与I/O的接口23
2.5 多核处理器26
2.6 多处理器27
2.7 复习题27
2.8 本章提要28
2.9 练习题28
参考文献29
第3章 分布式实时系统30
3.1 引言30
3.2 模型30
3.2.1 时间触发和事件触发分布式系统30
3.2.2 有限状态机31
3.3 分布式实时操作系统和中间件33
3.3.1 中间件33
3.3.2 分布式调度34
3.3.3 动态负载均衡35
3.4 实时通信35
3.4.1 实时流量35
3.4.2 开放系统互连模型36
3.4.3 拓扑结构37
3.4.4 实时数据链路层38
3.4.5 控制器局域网协议38
3.4.6 时间触发协议39
3.4.7 实时以太网40
3.4.8 实时IEEE 802.1140
3.5 分布式实时嵌入式系统面临的挑战41
3.6 分布式实时系统示例41
3.6.1 现代化轿车41
3.6.2 移动无线传感器网络42
3.7 复习题43
3.8 本章提要43
3.9 练习题43
参考文献44
第二部分 系统软件
第4章 实时操作系统46
4.1 引言46
4.2 普通操作系统与实时操作系统46
4.3 任务管理47
4.3.1 UNIX中的任务管理48
4.3.2 任务间同步49
4.3.3 任务间通信51
4.3.4 UNIX进程间通信53
4.4 线程53
4.4.1 线程管理53
4.4.2 POSIX 线程54
4.5 内存管理57
4.5.1 静态内存分配57
4.5.2 动态内存分配57
4.5.3 虚拟内存57
4.5.4 实时内存管理58
4.6 输入/输出管理59
4.6.1 中断驱动I/O59
4.6.2 设备驱动程序59
4.7 实时操作系统综述60
4.7.1 FreeRTOS60
4.7.2 VxWorks60
4.7.3 实时Linux60
4.8 复习题61
4.9 本章提要61
4.10 编程练习题61
参考文献62
第5章 实验性的分布式实时系统内核的设计63
5.1 引言63
5.2 设计策略63
5.3 低层内核功能64
5.3.1 数据结构和队列操作64
5.3.2 多队列调度程序67
5.3.3 中断处理和时间管理69
5.3.4 任务状态管理70
5.3.5 输入/输出管理72
5.4 高层内核功能74
5.4.1 任务同步74
5.4.2 任务通信76
5.4.3 使用缓冲池的高级内存管理79
5.4.4 任务管理80
5.5 初始化81
5.6 测试DRTK83
5.7 复习题84
5.8 本章提要84
5.9 编程练习题85
参考文献85
第6章 分布式实时操作系统和中间件86
6.1 引言86
6.2 分布式实时操作系统86
6.2.1 传输层接口87
6.2.2 数据链路层接口87
6.3 实时中间件88
6.3.1 实时任务组89
6.3.2 时钟同步90
6.3.3 选举算法94
6.4 DRTK的实现96
6.4.1 初始化网络96
6.4.2 传输层接口97
6.4.3 数据链路层接口任务100
6.4.4 组管理102
6.4.5 时钟同步算法103
6.4.6 环形结构的领导者选举104
6.5 复习题105
6.6 本章提要105
6.7 编程练习题106
参考文献106
第三部分 调度和资源共享
第7章 单处理器独立任务调度108
7.1 引言108
7.2 背景知识108
7.2.1 可调度性测试109
7.2.2 利用率109
7.3 调度策略109
7.3.1 抢占式调度与非抢占式调度110
7.3.2 静态调度与动态调度111
7.3.3 独立任务与非独立任务111
7.4 实时调度算法分类112
7.5 时钟驱动调度113
7.5.1 表驱动调度113
7.5.2 循环执行调度114
7.6 基于优先级的调度116
7.6.1 单调速率调度116
7.6.2 最早截止期限优先调度118
7.6.3 最低松弛度优先调度120
7.6.4 响应时间分析120
7.7 非周期性任务调度122
7.7.1 基本方法122
7.7.2 周期性服务器123
7.8 偶发任务调度125
7.9 DRTK的实现125
7.9.1 单调速率调度程序126
7.9.2 最早截止期限优先调度程序127
7.9.3 最低松弛度优先调度程序128
7.9.4 轮询服务器129
7.10 复习题129
7.11 本章提要130
7.12 练习题131
参考文献131
第8章 单处理器非独立任务调度132
8.1 引言132
8.2 非独立任务调度132
8.2.1 最迟截止期限优先算法132
8.2.2 改进的最早截止期限优先算法134
8.3 共享资源任务的调度135
8.3.1 火星探路者案例136
8.3.2 基本优先级继承协议137
8.3.3 优先级置顶协议140
8.4 DRTK的实现141
8.4.1 LDF非独立任务调度141
8.4.2 优先级继承协议142
8.5 复习题144
8.6 本章提要144
8.7 练习题145
参考文献146
第9章 多处理器与分布式实时调度147
9.1 引言147
9.2 多处理器调度147
9.2.1 分区调度148
9.2.2 全局调度152
9.3 分布式调度154
9.3.1 负载均衡154
9.3.2 聚焦寻址与投标方案156
9.3.3 伙伴算法157
9.3.4 消息调度157
9.4 DRTK的实现158
9.4.1 中心负载均衡任务158
9.4.2 分布式负载均衡任务160
9.5 复习题161
9.6 本章提要162
9.7 练习题162
参考文献162
第四部分 应用程序设计
第10章 实时系统的软件工程166
10.1 引言166
10.2 软件开发生命周期166
10.2.1 增量瀑布模型167
10.2.2 V模型167
10.2.3 螺旋模型167
10.3 实时系统的软件设计168
10.4 需求分析与规格说明168
10.5 时序分析169
10.6 带数据流图的结构化设计169
10.7 面向对象设计170
10.8 实时的实现方法171
10.8.1 再次讨论有限状态机171
10.8.2 时间自动机173
10.8.3 Petri网173
10.9 实时UML176
10.9.1 UML图解176
10.9.2 实时特性177
10.10 实用的设计和实现方法178
10.11 复习题178
10.12 本章提要179
10.13 编程练习题179
参考文献180
第11章 实时编程语言181
11.1 引言181
11.2 需求181
11.3 一个实时应用程序182
11.4 C/Real-time POSIX182
11.4.1 数据封装和模块管理182
11.4.2 POSIX线程管理184
11.4.3 异常处理和底层编程187
11.4.4 C/Real-time POSIX过程控制的实现187
11.5 Ada189
11.5.1 并发190
11.5.2 异常处理192
11.5.3 Ada过程控制的实现193
11.6 Java194
11.6.1 Java线程194
11.6.2 线程同步195
11.6.3 异常处理196
11.7 复习题196
11.8 本章提要197
11.9 编程练习题197
参考文献197
第12章 容错198
12.1 引言198
12.2 概念和术语198
12.3 故障分类199
12.4 冗余199
12.4.1 硬件冗余200
12.4.2 信息冗余200
12.4.3 时间冗余202
12.4.4 软件冗余202
12.5 容错实时系统204
12.5.1 静态调度204
12.5.2 动态调度204
12.6 分布式实时系统中的容错205
12.6.1 失效分类205
12.6.2 再次讨论任务组206
12.7 DRTK的实现208
12.8 复习题210
12.9 本章提要211
12.10 练习题211
参考文献212
第13章 案例研究:无线传感器网络实现的环境监控213
13.1 引言213
13.2 基本思想213
13.3 需求规格说明213
13.4 时序分析和功能规格说明214
13.5 生成树和簇214
13.6 设计思路217
13.7 叶子节点218
13.7.1 高层设计218
13.7.2 详细设计和实现219
13.8 中间节点224
13.8.1 高层设计224
13.8.2 详细设计和实现226
13.9 簇头节点228
13.9.1 高层设计228
13.9.2 详细设计和实现229
13.10 汇聚节点230
13.11 测试231
13.12 使用POSIX线程的替代实现233
13.13 本章提要233
13.14 编程练习题233
参考文献233
附录A 使用伪代码的一些约定234
附录B 低层内核函数238

教学资源推荐
作者: [德]贝蒂尔·施密特(Bertil Schmidt) [西]豪尔赫·冈萨雷斯-多明格斯(Jorge González-Domínguez) [德]克里斯蒂安·洪特(Christian Hundt) [德]莫里茨·施拉布(Moritz Schlarb) 著
作者: Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Clifford Stein
参考读物推荐
作者: 华诚科技 编著
作者: 甘登岱
作者: 赵军 等编著
作者: 戴艳 等编著