新書推薦:
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:NT$
347.0
《
汗青堂丛书144·决战地中海
》
售價:NT$
765.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:NT$
250.0
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:NT$
398.0
《
知宋·宋代之科举
》
售價:NT$
454.0
《
那本书是(吉竹伸介与又吉直树 天才联动!)
》
售價:NT$
454.0
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:NT$
505.0
《
纯粹·古代中国的历史与制度
》
售價:NT$
286.0
|
內容簡介: |
这本经过课堂检验的教材讲述分布式实时系统软件的设计和实现,使用了自底向上的方法。本书讨论了涉及实时系统的软件项目中面临的常见挑战,并提出了一种简单而有效地执行所有软件工程步骤的新方法。每一章都以对核心概念的讨论开始,并回顾了相关的方法和可用的软件。接下来是对示例内核中概念实现的描述,以及可执行代码。
|
目錄:
|
译者序
前言
部分 入门知识
第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
|
內容試閱:
|
从工厂、现代汽车到航空电子设备,分布式和嵌入式实时系统无处不在。分布式实时系统的特点是由许多通过实时网络连接起来的计算节点协同完成实时任务。实时任务有一个截止期限,很多应用要求实时任务必须在其截止期限之前完成。近年来的技术进步使这种分布式实时系统的节点数量大幅增加,从而使相应的系统软件设计面临巨大的挑战。分布式实时系统的节点具有一定的计算能力,它通常通过传感器和作动器与外部世界连接。并非所有的嵌入式系统都是实时的,我们将使用“分布式实时系统”这个术语描述那些具有实时特性的分布式嵌入式系统。
本书讨论设计和实现分布式实时系统软件的自底向上方法。我教授了几十年本科和研究生阶段的相关课程,并且参与了与实时系统相关的一些大型软件项目,因此了解人们在系统设计和实现过程中所遇到的主要瓶颈。首先,设计师或程序员经常面临将应用程序与一些商业化实时操作系统(或者中间件)进行结合的挑战,有时候甚至需要为这些系统编写补丁。这就要求我们深入了解与实时处理相关的硬件和操作系统概念。本书部分(第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
土耳其伊斯坦布尔
|
|