描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302526582
如果你正在寻找这样一种系统:当数据中心的数据流量出现大的跳跃时,需要增加服务器的数量,而在这个突发事件过去之后需要减少服务器的数量,那么《企业级编程与控制理论》将为你提供很好的解决方案。
《企业级编程与控制理论》适合具有一定编程基础并关注性能提升的读者阅读。
第Ⅰ部分 基础篇
第1章 为什么需要反馈 3
实际的例子 4
希望最好的情况 5
建立控制 7
累加偏差 7
小结 8
模拟程序 9
第2章 反馈系统 13
系统和信号 14
跟踪误差和矫正行动 15
稳定性、性能和准确性 16
设定值 18
不确定性和变化 19
反馈和前馈 19
反馈和企业系统 20
模拟代码 20
第3章 系统动态特性 23
滞后和延迟 23
强制反应和自然反应 25
瞬时响应和稳态响应 25
物理世界和虚拟世界的动态特性 26
动态特性和记忆 27
反馈循环的滞后和延迟的重要性 28
避免延迟 29
理论和实践 30
模拟代码 30
第4章 控制器 33
方框图 34
开关控制 34
比例控制 35
为什么比例控制还不够 35
积分控制 36
积分控制改变动态特性 37
积分控制可以产生恒定的偏移量 37
微分控制 38
微分控制的问题 39
三项PID控制器 39
模拟代码 40
第5章 识别输入输出信号 41
控制的输入和输出 41
输入/输出关系的方向性 42
例子 43
热控制1:加热 43
高速缓存 45
服务器扩展 46
通过动态标价控制供需关系 48
热控制2:冷却 50
选择控制信号的标准 51
用于控制输入 51
用于控制输出 51
关于多维系统的注释 52
第6章 回顾和展望 55
反馈概念 55
迭代 55
过程知识 55
避免不稳定性 56
设定值 56
控制,不是最优化 56
第Ⅱ部分 实践篇
第7章 理论预习 59
频率表示 59
传递函数 59
方框图代数 60
PID控制器 60
传递函数的极点 61
过程模型 62
第8章 测量传递函数 63
静态输入/输出关系:过程特征 63
实际考虑 64
阶梯输入的动态反应:过程反应曲线 65
实践方面 66
过程模型 66
自我调节过程 67
累积过程 68
带有振荡的自我调节过程 70
非最小相位系统 71
系统识别的其他方法 72
第9章 PID 控制调整 73
调整的目的 73
控制器参数变化的一般影响 75
齐格勒·尼科尔斯调整方法 76
半分析调整方法 77
实践方面 78
仔细研究控制器调整公式 79
第10章 实现问题 81
执行器饱和与积分器暂停 81
防止积分器暂停 82
设定值变化和积分器预加载 82
平滑微分项影响 83
选择抽样间隔 83
PID控制器的替代形式 84
增量形式 85
误差反馈与输出反馈 85
通用线性数字控制器 86
非线性控制器 87
误差平方和间隙控制器 87
模拟浮点输出 88
分类输出 88
第11章 通用反馈架构 91
改变运行条件:增益调度 92
轻度非线性系统的增益调度 93
强干扰:前馈 93
快-慢动态特性:嵌套或“级联”控制 94
具有延迟的系统:史密斯预报器 95
第Ⅲ部分 案例研究篇
第12章 通过模拟探索控制系统 99
案例研究 99
建模时间 100
控制时间 101
模拟时间 101
模拟框架 102
组件 103
对象和系统 103
控制器 103
执行器和过滤器 105
标准循环的便利函数 106
产生图形输出 108
第13章 案例研究:高速缓存命中率 109
定义组件 109
制造缺陷引起的缓存失效 111
测量系统特性 112
控制器调整 114
模拟代码 116
第14章 案例研究:广告推送 121
场景 121
测量系统特性 122
建立控制 123
改进性能 124
类型变换 127
累计目标 127
增益时间调度 128
积分器的预加载 128
周末效应 128
模拟代码 128
第15章 案例研究:扩展服务器 131
场景 131
测量和调节 132
用非标准控制器达到100% 133
处理延迟 136
模拟代码 137
第16章 案例研究:等待队列的控制 141
队列和缓存的机理 141
结构 142
设置和调整 142
救援情况的微分控制 145
控制器替代方案 146
模拟代码 147
第17章 案例研究:冷却风扇速度 149
场景 149
模型 149
调整和服役 151
封闭回路性能 152
模拟代码 153
第18章 案例研究:控制游戏引擎内存消耗 157
场景 157
问题分析 158
架构选择 159
非传统循环结构 159
具有对数的传统循环 159
结果 161
模拟代码 162
第19章 案例研究的总结 165
简单的控制器,简单的循环 165
测量和调整 165
保持控制 166
处理噪音 166
第Ⅳ部分 理论篇
第20章 传递函数 171
微分方程 171
拉普拉斯变换 171
拉普拉斯变换的属性 173
用拉普拉斯变换解微分方程 174
工作的例子 174
传递函数 175
工作的例子:阶梯响应 176
工作的例子:斜坡输入 177
谐波振荡器 177
如果不知道微分方程? 178
第21章 方框图代数和反馈公式 179
组合系统 179
反馈方程 180
反馈方程的另一种推导 182
方框图代数 182
传递函数方法的限制和重要性 183
第22章 PID 控制器 185
PID控制器的传递函数 185
PID控制器的典型形式 186
通用控制器 186
重新审视比例控制的稳定偏差 187
工作的例子 188
第23章 极点和零点 189
传递函数的结构 189
极点和零点的影响 190
特殊情况和其他细节 191
极点位置和响应模型 193
主导极点 193
极点的配置 195
如何处理延迟 195
第24章 根轨迹技术 197
造根轨迹图 197
根轨迹或埃文斯规则 198
角度和幅度标准 200
实际问题 201
例子 201
P控制器的简单滞后 202
PI控制器的简单滞后 203
第25章 频率响应和波特图 207
频率响应 207
物理世界中的频率响应 207
传递函数的频率响应 208
工作的例子 209
波特图 210
边缘稳定性标准 212
其他图形技术 213
第26章 本书主题拓展 215
离散时间建模和z变换 215
状态-空间方法 216
稳健控制 218
优化控制 219
数学控制理论 220
附 录
附录A 词汇表 223
附录B 用Gnuplot绘制图形 233
附录C 复数 237
附录D 深入阅读 241
这本书的主题是关于反馈控制技术的,但是没有多少编程人员(包括其他有关人员)了解这方面的知识。这是很遗憾的,因为反馈控制技术最初的产生是为了解决软件工程师们很熟悉的问题,特别是与企业系统打交道的工程师们需要了解。反馈控制是一种技术,旨在确保大型复杂系统能够稳定地运行,甚至在有外部干扰的情况下也不会受到影响,确保有效地使用有限的资源。
如果你正在寻找这样一种系统:当数据中心的数据流量出现大的跳跃时,需要增加服务器的数量,而在这个突发事件过去之后需要减少服务器的数量,那么这本书将为你提供很好的解决方案。
什么是反馈?
反馈的原理是不断地对系统的实际行为与期望行为进行比较,如果实际行为不同于期望的行为,就需要采取纠正措施来减少偏差,将系统带回到理想状态。只要该系统还在运行,反馈过程就会不断地重复下去。
反馈控制一个很有用的功能就是不需要对被控制的系统有太多的了解。当系统出现偏差时,只要我们知道哪个方向可以调回系统,就可以建立一个反馈循环。因此,反馈是一种控制大型的、复杂的、不透明系统的最有效的技术。
另外,反馈系统具有自我调节的功能,甚至有外部干扰出现时也不受影响。由于系统的行为总是处于监视和调整中,所以,反馈系统会自动对操作状态中出现的变化进行响应。所以,当流量拥挤时,系统不需要设置专门的设施来激活额外的服务器:反馈控制器会通知负荷增加,并且增加服务器的数量直到满足所需的服务质量要求。同样,一旦流量峰值过后,控制器会根据负荷减少程度,相应地再次减少服务器的数量。
但是我们也要小心,因为太大的控制调整或者在时机不当的调整,都会造成“过量”的控制干扰。这样的控制非但不能减少期望行为和实际行为之间的偏差,反而造成以相反方向的偏差来代替现有方向的偏差。在最坏的情况下,这些偏差的幅度会逐步增长,直到系统出现错误,甚至崩溃!
为了避免出现这样的后果,控制理论制定出一种专门的实验来分析系统的行为。从这些实验中得到的结果可以用于设计和调整循环控制,使得这些循环操作更安全,同时将准确稳定地跟踪参考值。
为什么写这本书?
反馈控制在电子学、工业流程和车辆工程领域的应用有很长的成功历史,但它的应用不限于此。反馈是自我调节的,所以即使条件意外改变,它也能够保证系统运作正常。反馈只要求对受控流程有个基本的了解,因此它可以应用在复杂和不透明的系统状况下,例如企业环境下的那些典型系统。
在这本书里,我们将研究如何把反馈原理应用到几个软件工程问题上,例如,高速缓存的最佳容量、服务器群的管理、等待队列或高速缓存的控制等。所有这些例子都向我们展示了一点,在不断变化的条件下,反馈可以帮助我们有效地使用稀缺或昂贵的资源。
然而,把反馈原理应用到计算机系统会遇到与传统应用领域不同的问题。描述计算机系统行为的规则比起现实世界系统的规则限制要少得多,所以我们会更多依赖于实际测量和现象学描述,而较少地依赖于理论分析(你会发现工业流程应用反馈方法时有着相似的情况)。同时比起物理组件来,计算机系统提供了大量控制信号,我们有更大的自由度选择最佳控制信号,当然必须了解有关的限制和折中。我们将特别关注这些问题。
由于在软件系统设计理念中很少有人讨论反馈控制,我希望人们能够意识到,反馈控制在这个方面会有很多的潜力,事实上,软件工程师通常遇到的许多问题,都可以在反馈控制上找到正确的解决方案。
如何阅读这本书?
外行人学习反馈相关理论可能会有些困难。教科书和科技文章使用了专门的术语和从现有应用领域选出的例子,这些内容有的时候掩盖了基本的概念。出现在典型反馈应用领域的问题不一定是编程人员最感兴趣的问题。同时也应该知道,许多有关反馈控制的教科书最关心底层控制理论的数学推演,而很少关注概念开发或具体实现。
这本书采用了不同的方法。理论研究可能很重要,很精彩,但不是本书的重点,我已经把这部分内容放在本书后面的第Ⅴ部分中。第Ⅰ部分简单介绍了反馈控制、系统动态和控制器设计。第Ⅱ部分描述了实现和调节控制器的大量实用技术,同时讨论了一些反馈循环“设计模型”的例子。第Ⅲ部分搜集了一组典型案例的研究,来介绍如何使用反馈方法解决计算机系统的专门问题。在每一个案例分析中,详细讨论了许多不同的方法及其折中方案。
案例研究是这本书的重头戏。我建议从第Ⅰ部分开始阅读,熟悉基本的反馈概念。然后看一下案例研究,如果需要其他的信息可以跳到第Ⅱ部分(实践篇)和第Ⅳ部分(理论篇),案例研究的顺序大体上是按照复杂度的增加来排列的。
所有案例研究都实现了计算机模拟,在这本书的互联网站上可以找到这些程序。这些程序有意写得简单和直接,以便可以容易地扩展和修改程序。动手尝试模拟代码是最好的学习方法,发现闭环系统有时会出现的神奇表现,从而真正意识到这种反馈技术确实很酷!
使用本书的约定
本书使用了下列的印刷约定。
斜体字符
代表新的术语、URL、电子邮件地址、文件名以及文件的扩展名。
固定宽度字符
用于程序列表或者段落中的程序元素,例如变量、函数名、数据库、数据类型、环境变量、语句和关键词。
黑体固定宽度字符
表明用户应该输入的命令或其他文字。
斜体固定宽度字符
展示临时文字,它需要替换为用户提供的数值,或者被上下文确定的数值。
这个图标表示小经验、建议或一般说明。
这个图标表示注意或警告。
使用代码示例
这本书的目的是帮助你完成任务的。一般情况下,如果这本书有代码例子,你可以在你的程序和文档中使用该代码。除非重新产生本书的大部分代码,否则不需要联系我们以获得使用权。例如,写的程序使用了这本书的几段代码,不需要获得使用权。销售或者分发有O’Reilly书中例子的CD-ROM是需要申请使用权的。在回答问题时提到这本书或引用代码的例子是不需要批准的。把这本书例子中的大部分代码集成到产品文档中是需要申请使用权的。
我们建议但不要求标明著作权。著作权通常包括标题、作者、出版商和ISBN。例如,“Feedback Control for Computer Systems by Philipp K. Janert(O’Reilly). Copyright 2014 Philipp K. Janert, 978-1-449-36169-3”。
如果感到你使用代码例子的方式不属于正常的使用范围,或者不符合前面提到的使用权规定,请联系我们,电子邮箱地址是 [email protected]。
Safari在线
Safari在线(www.safaribooksonline.com)是一家按需服务的数字图书馆,以图书的方式或者视频的方式提供世界技术和商业领域里顶级作者所写的专业内容。
技术专业人士、软件开发人员、互联网设计者、商业和创新专业人士使用Safari在线作为主要的资源,进行研究、解决问题、学习和认证培训。
Safari在线为机构、政府部门和个人提供了一系列产品组合和价格方案。用户可以完全搜索数据库,访问上千种书籍、培训视频和出版前的手稿,内容来自许多出版机构O’Reilly Media,Prentice Hall Professional,Addision-Wesley Professional,Microsoft Press,Sams,Que,Peachpit Press,Focal Press,Cisco Press,John Wiley & Sons,Syngress,Morgan Kaufmann,IBM Redbooks,Packt,Adobe Press,FT Press,Apress,Manning,New Riders,McGraw-Hill,Jones & Bartlett,Course Technology等。有关Safari在线的更多信息,可以访问我们的网站。
如何联系我们?
请把你对本书的意见和疑问发给出版社:
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
在前一章中使用的方法是基于反馈原理,它的基本概念可以简单地描述如下:
反馈原理:持续地将实际输出和它的期望参照值进行比较,然后对系统输入进行调整,以减少实际输出和参照值之间的偏差。
换句话说,如果输出值高于参照值,就对输入进行矫正以引导输出降低;如果输出值低于参照值,就对输入进行矫正以提高输出值。
反馈概念的基本思路是“把系统输出引导回来”,用它来计算输入值,这就产生了通用的反馈或闭环式结构(图2-1)。和它相对应的是前馈或者开环式结构(图2-2),开环结构不考虑系统的输出。
图2-1 反馈环路的结构:系统的输出被返回与参照值做比较,以便计算出系统新的输入
图2-2 开环式(或前馈式)布局的结构:系统输入直接从参照值计算得到而不考虑系统输出
反馈是在前一个输出的基础上计算下一个输入值,这表明反馈是一种叠加的解决方案。每一个控制行动仅仅是为了使系统更加接近期望值,使它向正确的方向更迈近一步。我们不去完全消除参照值和输出值之间的差距,而是重复执行少量减少偏差的步骤,逐渐缩小偏差。
在讨论任何迭代方案时,自然会提出三个问题。
迭代会收敛吗?(或者 迭代会发散吗?)
它能多快收敛?(如果它一定会收敛)
它会收敛到什么值?(它会收敛到所期望的解决方案还是不同的结果?)
系统和信号
在这本书里,我们将考虑服务于各种目标的不同系统。这些系统所具有的共同特点是,所有系统都依赖于结构或者调节参数,以影响系统的行为。要想得到行为的信息,我们需要跟踪和观察不同的监视指标。在大多数情况下,希望系统能够满足或者超过事先定义的服务质量指标。因而,控制问题就是调节一组设置参数,以便被监视的指标落在服务质量范围之内。
只要考虑控制问题,配置参数就是我们可以直接影响和操纵的变量,有的时候这些变量被称为操作变量或者简单称为(控制)输入。被监视的指标是我们想要影响的变量,有时称为“过程变量”或者“控制输出”,把输入和输出放在一起就构成了控制信号。
术语“输入”和“输出”分别对应于被操作和被跟踪的数量,它们非常简便,我们将会经常使用。但是请记住,这些术语的目的只是与控制问题有关,和系统的功能“输入”和“输出”没有任何关系。如果一旦发现定义不清楚,请在“输入”和“输出”的位置上分别使用“可配置参数”和“跟踪指标”。
大部分情况下,我们只考虑一个控制输入和一个控制输出的系统,所以只有一个单独的可设置的参数,它可以用来影响单一的跟踪指标。虽然这看上去好像是极端的情况,但是它包括了很多种类的系统。(处理具有多个输入或输出的系统在原理上讲也是可能的,但是它会带来严重的实际问题。)
我们从企业编程和软件工程资料里,选出一些系统和它们的输入及输出,列举如下。
高速缓存
跟踪的指标是命中率,可设置的参数是缓存量(缓存器能存储条目的最大数量)。
服务器群
跟踪的指标是反应滞后时间,可设置的参数是在线服务器的数量。
队列系统
跟踪的指标是等待时间,可设置的参数是服务于排队的工作(worker)的数量。
图形库
跟踪的指标是占用的全部存储量,可设置的数量是分辨率。
其他的例子如下。
房间或容器的加热
跟踪的指标是屋子的温度或者容器的温度,可设置的量是提供的热量(对于炉子上的锅,可调节量是旋转盘上的刻度)。
CPU冷却器
跟踪的指标是CPU温度,可调节的量是加在风扇上的电压。
汽车的巡航控制
跟踪的指标是汽车的速度,可调节的量是加速器的设置。
销售情况
跟踪的指标是销售掉的条目数量,可调节的量是每件东西的价格。
跟踪误差和矫正行动
反馈原理要求过程输出不断地和参照值(通常称为“设定值”)进行比较,实际过程输出和设定值之间的偏差就是跟踪误差:
跟踪误差 = 设定值 – 输出值
图2-1控制器的工作原理就是基于跟踪误差来计算矫正行动。如果跟踪误差是正值(意味着过程输出过低),那么控制器必须产生新的控制输入来提高过程的输出,反之亦然。
请注意,控制器在没有系统及系统行为的具体信息时,就可以做反馈控制,控制器主要需要了解过程的方向性:为了提高输出值,是需要增加或是减少输入值吗?两种情况都会出现:提高加热设备的动力将会导致温度的增加,但是增加冷柜的电能将导致温度的降低!
一旦控制行动的方向决定后,控制器必须选择矫正的幅度。我们将在下一节讨论更多这方面的情况。
稳定性、性能和准确性
反馈循环的引入可能会使原来稳定的系统变得不稳定。问题通常是由不断的过度补偿造成的,矫正行动所产生的结果变得太大了。现在考虑高速缓存的情况(前面列出的例子),假设命中率最初低于期望值,要增加命中率,我们需要扩大缓存量。但是多大合适呢?如果我们将缓存量增加得太大,那么命中率最后将会比期望值高,因此在下一个时间步骤,缓存量将会减少,以此类推。系统会产生控制波动,在不同的设置环境下会迅速和疯狂地切换(图2-3)。
我们不期望看到控制波动,想象一下如果你的汽车巡航控制出现了这种情况!但是事情会变得更糟糕:如果每个过度矫正或矫正不足将导致更大的补偿行动,波动的幅度就会随时间而增加,使得已经不稳定的系统会变得更加不稳定了,没过多久就会出现严重问题(或者崩溃)。在控制循环中要不惜一切代价避免这种不稳定的现象出现。
与此相反的问题是太慢或者太懒惰的行为。如果我们过分小心,采取过小的控制行动,该系统对于干扰会反应迟钝,跟踪误差将持续很长一段时间(图2-3)。虽然缓慢行动没有系统不稳定那样危险,但是这样的缓慢反应也是不能令人满意的。要取得最快的反应效果,我们需要采取最大的控制行动,同时不会使系统变得不稳定。
设计精良的控制系统应该展现出好的性能,这就意味着它能够迅速对变化做出反应,使得被跟踪的指标与参照指标之间的偏差不会延续下去。典型的控制系统反应时间描述了系统能够多快对变化产生反应,它同时定义了系统所能控制的最快可能干扰的上限。
在稳定的状态下,控制系统的质量是用准确性来衡量的,用准确性来跟踪给定的参照值。反馈控制系统的行为通常是用稳定性、性能和准确性来评估的。
我们现在可以重述关于迭代系统收敛的三个问题,用控制理论术语描述如下。
图2-3?展示了找到高速缓存的最佳容量,以取得所需的命中率。上图显示了对于不同的增益,初始误差会导致不同的迭代;下图显示了对应不同控制增益的命中率的演变。太大的矫正会导致振荡行为,太小的矫正导致不佳的结果
稳定性
该系统稳定吗?它能够处理变化而不会产生过度波动吗?是否确保波动的幅度不会随着时间而积累,只会迅速减弱吗?
性能
该系统能够多快对变化产生反应?对于给定的应用代码它能够反应足够快吗?(飞机的自动驾驶需要比船舶的自动驾驶反应快很多)。
准确性
系统是否足够准确地跟踪指定的参照值?
结论是不能同时兼顾所有这些目标?特别是反馈系统的设计经常涉及稳定性和性能之间的平衡,因为反应太快的系统有可能产生波动。这取决于给定的情况,设计师必须做出选择,重点应该放在哪里。
通常做出许多小的快速调整比起偶尔的做出几个大的调整要更好一些。采取很多小的步骤,可以更快地执行矫正行动,不给系统有机会产生与参照值之间的明显差异。如果不经常采取调整行动,偏差的幅度将会变大,这就意味着过度补偿的机会将会增加,而且不稳定性所带来的风险也会增加。
设定值
反馈系统的目的是要跟踪参照值或者设定值。这种参照值的存在是必须的,没有参照值就不可能有反馈控制。
另一方面要注意以下细节:对于跟踪的指标很明显会有一个期望值,我们要知道跟踪它的原因,而且必须知道在反馈控制中设定值的具体限制含义。
从结构上看,反馈循环将使其输出尽可能准确地达到给定的参照值,即设定值。顺便指出,标准的反馈循环不适用于有一定数值范围的指标,对于许多应用代码来说这种要求太苛刻,反馈系统需要额外的设置来支持浮动范围控制(示例参见第18章)。
同时要注意要反馈控制与任何形式的最优化不要混淆。反馈控制试图复制设定值,而不是要在一套给定条件下取得“最佳”或者“最优化”的输出。如前所述,反馈系统也许是整体优化方案的重要组成部分:如果有一个整体优化计划,它要求系统应该有什么样的输出值,那么反馈控制就是提交或执行这个计划的合适工具。但是,反馈控制本身没有能力确定最佳的计划或者设置。
有时还会遇到其他的挑战。比如反馈原理的自动调节性质要求,系统输出可能超过设定值。只要输出落在设定值的任意一侧,反馈系统就能够从其中的一个方向采取恢复行动。但是当设定值的数值处在系统能够达到的范围的边缘,跟踪误差变为零,此时不会执行反馈控制。考虑缓存的例子,如果我们想要命中率(作为跟踪的指标)达到100%,实际的命中率永远不可能大于设定值,它不可能通过减少缓存的尺寸来达到目的。(在第15章中,我们将看到类似的情况,可以采取一些临时的措施)
不确定性和变化
很明显,反馈系统比直截了当的前馈系统要复杂很多,因为前馈系统不涉及反馈。反馈循环的设计要求在许多不同的属性上做平衡,有的时候要做出艰难的取舍。同时,反馈系统把不稳定的风险引入到原来稳定的系统中,因而需要额外的措施来防止“崩溃”。考虑到这么多的挑战,人们会问,在什么情况下反馈系统值得考虑,为什么?答案是反馈系统能够提供一种取得稳定行为的方法,甚至在出现不确定性和变化的状态时也能达到稳定。
我们并不清楚结构参数(控制输入)如何影响被跟踪指标(控制输出)的行为。再次思考高速缓存的例子:增加缓存的大小肯定会增加命中率,但是增加多少合适?有多少缓存量才能够保证特定的命中率?这些都是难以回答的问题,答案在很大程度上依赖于缓存访问模式的性质。(在某些时间段里有多少不相同的条目被查询过)。忽略输入和输出之间的关系会导致不确定性。即使我们能够准确地描绘出,在特殊的时间段里输入和输出的关系,系统还是会受到变化的影响:访问模式会(一定会)随着时间改变,不同的条目被访问。被访问条目的分布在早上和下午有可能不同,以此类推。
反馈是处理这些不确定性和变化形式的合理机制。如果其中一个因素缺失,将没有必要考虑反馈:如果我们准确知道缓存大小将如何影响到命中率,并且如果知道访问模式不会受到变化的影响,那么我们不需要反馈循环。相反,我们可以简单地选择大小合适的缓存,就这样任务完成了。但是我们会如此幸运吗?
坦率地讲,这样的情况确实存在,大部分情况是在封闭的环境下(不会受到变化影响),而且有清晰的定义和熟悉的规则(因而避免了不确定性)。例如,计算机代码具有最大的确定性!不需要反馈控制。
但是说到计算机系统情况就不一样了。只要几个部分相互动作,就有可能会出现随机性、不确定性和变化。一旦我们考虑到人的因素,事情就会变得相当混乱,肯定会出现突发的不确定性,变化将是常态,因此有反馈控制的必要。
评论
还没有评论。