1700495720
事实上,在面对不确定性时,最短加工时间的加权版本是一种最通用的调度策略。它提供了一个简单的时间管理方法:每接到一件新工作时,通过其将耗费的时间来对其进行重要性的划分。如果该重要性高于当前正在执行的任务,就切换到新任务,不然就坚持当前任务。该算法是调度理论最接近“万能钥匙”的地方,最佳策略并不只是为了解决一个问题,而是许多问题。在一定条件下它所要最小化的并不只是加权完工时间的总和,如我们所期待的,也是超期任务的权值以及这些任务的加权超时数的总和。
1700495721
1700495722
有趣的是,如果我们提前知道任务的开始时间和持续时间,想要优化所有其他的指标也都是难解的。所以,调度不确定性的影响揭示了一些违反直觉的东西:在有些情况下,透视是一种负担。即使拥有完全的预知,寻找完美的调度计划实际上也许也是不可能的。相比之下,驻足思考,工作来时反应灵敏,也许不能给你想象中完美的调度执行,但这是你可以做的最好的一件事,也最容易计算。这会带来一些安慰。作为商业作家和编码员的杰森·弗瑞德曾说:“直到做出一个万能计划,你才会继续吗?用‘猜测’代替‘计划’,并放轻松。”当未来充满迷雾的时候,原来你不需要日程表,只需要一个待办事项清单。
1700495723
1700495724
1700495725
1700495726
1700495728
算法之美:指导工作与生活的算法 抢占并不是随意的:关联转换
1700495729
1700495730
谚语
1700495731
1700495732
走的越急,就落得越远。
1700495733
1700495734
埃伦·厄尔曼
1700495735
1700495736
程序员不说话,因为他们不能被打断……与其他人同步(电话、蜂鸣器和门铃)只能意味着打断思路。中断就意味着会发生一些错误。你不能中途下车。
1700495737
1700495738
所以,调度理论还是告诉人们一个合理而又鼓舞人心的道理。解决许多调度问题时,有最简单和最优算法,而要解决的这些问题都已经非常接近我们在日常生活中遇到的情况。但是,在现实世界中,当涉及实际操作的单机调度问题时,事情就会变得复杂。
1700495739
1700495740
首先,人们和计算机操作系统都面临着一个奇怪的挑战:正在进行调度的机器和将要进行计划的机器是同一个。要想理顺你的待办事项清单上的项目,需要你的待办事项列表本身进行优先处理和调度。
1700495741
1700495742
其次,抢占也不是随意的。每当你转换任务时,你都要付出代价,这在计算机科学领域被称为上下文切换。当计算机处理器把注意力从给定的程序上转移时,总要付出一定的代价。它需要有效地标记该任务的位置,并将其所有相关信息放置一边,然后找出它下一步运行的程序。之后,必须取得该程序的所有相关信息,找到它在代码中的位置,最后进入该档位。
1700495743
1700495744
这种来回切换并不是“真正的工作”,也就是说它们都没有实际提高计算机所切换的程序的状态。这是无用功,每一次上下文切换都在浪费时间。
1700495745
1700495746
人类在上下文切换时也会付出代价。对于这一点,我们在以下时刻会有所体会,我们将办公桌上的文件拿来又拿走,电脑上的文件关闭又打开,走进房间却不记得我们要来做什么,甚至我们会大喊:“我在哪里?”“我在说什么?”心理学家的研究表明,对于我们来说,任务切换的影响可以包括延迟和错误,影响时间会是几分钟而不是几微秒。任何一个人,如果你在一小时内被中断几次,那么你就有这一个小时什么都做不成的危险。
1700495747
1700495748
就个人而言,我们已经发现,编程和写作需要考虑整个系统的状态,所以其进行切换的成本就非常大。我的一位编程的朋友说,正常的一周工作时间不适合他的工作,因为对他来说,一天工作16小时的效率是每天8小时的两倍多。对于布瑞恩来说,他认为写作是一种锻造。金属在具有可塑性之前都要一段时间来加热。他发现,写不到90分钟就不会有什么成果,因为前半个小时几乎出不了成果,除了将“我在做什么?”这个大问题装进他的大脑。匹兹堡大学的调度专家柯克·普鲁斯,也有同样的经历。“如果只有不到一个小时是时间,我就去做些简单的小差事,因为我要花35分钟才能真正弄清楚我想做什么,然后我可能就没有时间去做这件事了。”
1700495749
1700495750
英国作家吉卜林在其1910年创作的著名的诗《如果》最后高度呼吁对时间的管理:“如果你能惜时如金,那就利用每一分钟不可追回的光阴……”
1700495751
1700495752
真希望是这样。但事实是,我们总会将大量时间花在无用的工作上,比如考虑如何记账和任务管理。这是调度的基本权衡之一。你承担的越多,花费的时间就越多。在极端的噩梦中,这变成一个被称为颠簸的现象。
1700495753
1700495754
1700495755
1700495756
1700495758
算法之美:指导工作与生活的算法 颠簸状态
1700495759
1700495760
《社交网络》
1700495761
1700495762
盖齐:扎克伯格先生,你现在是完全专心地在听吗?
1700495763
1700495764
扎克伯格:你只吸引了我的部分注意力——只有最低限额。
1700495765
1700495766
计算机多任务处理的过程被称为“线程”,你可以想象为在玩一组球。就像一个杂耍者一次只能投掷一个球,而同时其他的球都在空中,计算机中央处理器一次也只能处理一个程序,但可以快速地切换(以1/1000秒为单位),像放电影、浏览网页,或立即提醒你收到的电子邮件。
1700495767
1700495768
20世纪60年代,计算机科学家开始思考如何在不同的任务和用户之间实现计算机资源共享的自动化过程。“这是一个激动人心的时刻。”皮特·丹宁说道。他现在是计算机多任务处理的顶级专家,当时正在麻省理工学院攻读博士学位。令人兴奋又不确定的是:“你会如何划分一个主内存之间的大量工作?如果它们中的某些想变大,某些可能要缩小,而且它们会相互影响,试图窃取‘记忆’和所有东西……你如何管理这整套的任务?没有人知道该怎么做。”
1700495769
[
上一页 ]
[ :1.70049572e+09 ]
[
下一页 ]