打字猴:1.700495793e+09
1700495793 算法之美:指导工作与生活的算法 [:1700494153]
1700495794 算法之美:指导工作与生活的算法 中断合并
1700495795
1700495796 使实时调度变得如此复杂和有趣的部分原因是,它本质上是两个完全不兼容的原则之间的协调。这两个原则被称为反应速度和吞吐量:是指你能多快地进行反应,以及你可以做多少。任何曾经在办公室工作过的人都可以很容易地体会到这两个指标之间的紧张关系。对那些工作是接电话的人来说,这就是部分原因:他们反应速度越快,其他人的吞吐量就越大。
1700495797
1700495798 同样,生活更困难时你必须像一台电脑一样在反应速度和吞吐量之间做出自己的权衡。但矛盾的是,要想把事情做好,最好的策略就是慢下来。
1700495799
1700495800 操作系统的调度程序通常被定义为一个“周期”,其中的每个程序至少要保证运行自己的那部分任务,这样系统就给每个程序提供该周期的其中一个“切片”。程序运行得越多,这样的一片就越小,每一期发生的上下文切换就越多,这样就要以吞吐量为代价保持反应速度。然而,如果不加以控制,这种保证在每个周期中每一进程至少都会得到一些关注的策略,可能导致灾难。当有足够多的程序运行时,任务切片就会缩得极小,以至系统会将整个切片都花费在上下文切换上,而不是切换到下一个任务上。
1700495801
1700495802 罪魁祸首是硬反应保证。因此,现代操作系统实际上为其程序切片设置了一个最小长度,若长度达到该最小值,系统将拒绝再进行细分。(例如,在Linux系统中,这个最小切片的值被设定为一毫秒,但就人类而言,现实中这一时间可能至少要几分钟。)如果添加了超越这一数字的进程,周期就会变得更长。这意味着那些进程将不得不等待更长的时间才能轮到被处理,但它们所等待的时间至少要足够做一些事情。
1700495803
1700495804 设置花在任何一个任务上的最低时间量,有助于防止过于强调反应速度而完全忽视吞吐量:如果系统最小切片时间比其上下文切换的时间长,则系统永远不会进入一种只进行上下文切换的状态。这也是一个很容易转化为人类生活建议的原则。如“时间盒子”或“番茄时钟”等方法(你随便设置一个厨房定时器或承诺做一个任务)就是这一思想的体现。
1700495805
1700495806 但是你应该设置多长时间呢?面对在执行重复任务之间要等待多长时间这样一个问题,比如检查你的电子邮件,从吞吐量的角度来看,答案很简单:尽可能长的时间。但这并不是故事的结尾,毕竟更高的吞吐量也意味着更低的反应能力。
1700495807
1700495808 对于你的电脑来说,它必须定期检查的恼人干扰并不是邮件,而是你。你可能不会把鼠标移动几分钟或几个小时,但当你移动鼠标时,你会期望看到屏幕上的指针立即移动,这意味着机器为了跟上你的步伐将耗费大量的努力。检查鼠标和键盘的频率越高,它在输入时就能反应得越快,但是它需要做的上下文切换就越多。因此,计算机操作系统在决定花多长时间来完成一些任务的时候,所遵循的规则很简单:用尽可能长的时间,以免用户感到紧张或迟钝。
1700495809
1700495810 当我们离开家去做一件快速完成的差事时,我们可能会说:“你甚至不会注意到我已经离开了。”而当我们的机器进行上下文切换去做计算时,在我们发现系统已经切换走之前,其必须由我们所控制。为了找到这个平衡点,操作系统的程序员便转向心理学方面进行研究,心理物理学研究能精确地计算出人类大脑滞后或延迟时所需的毫秒数。比这更密切地关注于用户是没有意义的。
1700495811
1700495812 多亏了这些努力,当操作系统工作正常时,你甚至不会注意到你的计算机正在发挥着多么大的作用。即使你的处理器在全速运转,你也可以继续在屏幕上顺畅地移动你的鼠标。顺畅性可能会导致吞吐量的下降,但这是由系统工程师设计的一个权衡:你的系统会尽可能多地花时间与你交流,然后及时刷新鼠标。
1700495813
1700495814 再次,这是一个可以应用到人类生活的原则。其寓意是,你应该尽可能长时间地停留在一个任务上,而不是将你的反应降低到最低可接受的限度以下。决定你的反应速度,然后,如果你想把事情做好,就不要超过此反应速度。
1700495815
1700495816 如果你发现自己在进行很多上下文切换(因为你在处理一系列短任务),你也可以使用计算机科学的另一个做法:“中断联合”。例如,如果你有5张信用卡账单,不要在刚收到第一张账单时就立即支付它,一直等到第五张账单来时再做处理。只要你的账单在到期31天之内,你就可以指定每个月的第一天作为“账单支付日”,然后在这一天,把每张账单放在你的办公桌上开始处理,不管你是在三周前还是三小时前收到的。同样,如果你的电子邮件通信者没有要求你在24小时内回复,你可以限制自己每天只检查一次消息。电脑可以自己做这些事:等到固定时间间隔进行一次检查,而不是在上下文切换时处理那些不相关、不协调的各种子任务。[1]
1700495817
1700495818 有时,计算机科学家发现自己的生活中并没有中断联合的存在。谷歌的研究部主任彼得·诺维德说:“我今天要跑去市区办三次事,我说‘哦,好吧,这只是你的算法中的一个单线错误代码。你应该等待,或者把这些事先添加到待办事项列表中,而不是按顺序一个一个执行,因为他们每次只增加一个’。”
1700495819
1700495820 就人类而言,我们会中断联合邮政系统,就像它们的投递周期一样。因为信件一天只揽收一次,所以你若投寄迟了几分钟,你的信件就要多花24个小时才能送达。考虑到上下文切换的成本,其原因应该是显而易见的:你每天最多只能被账单和信件打断一次。更重要的是,我们的24小时邮政系统要求的最小反应速度就是:你在收到信后的5分钟或5小时回复邮件,并没有任何区别。
1700495821
1700495822 在学术界,上班时间就是一种中断联合。而在私营部门,中断联合提供一个最恶毒的办公室礼仪的救赎观:每周例会。无论其缺点是什么,定期会议都是我们对自发的中断和计划外的上下文切换的一种最好防御。
1700495823
1700495824 也许最小上下文切换生活方式的守护神就是传奇程序员高德纳·克努斯。“我一次只做一件事,”他说,“这就是计算机科学家们称之为批处理的方法,它是用来代替交替进出的。因此我不交替进出。”克努斯不是在开玩笑。2014年1月1日,“2014版克努斯排版”出现了,他在其中修正了该软件过去6年来所报告出现的所有错误代码。他在报告最后愉快地说道:“敬请期待2021版!”同样的,克努斯直到1990年才有第一个电子邮箱的地址。“电子邮件对于那些在生活中扮演着重要角色的人来说是件美妙的事情,但我并不是这样的人,我的身份是在底层,我所做的事情需要很长时间的学习和不断的集中精力。”他每3个月查收一次他的邮政邮件,每6个月查收一次传真。
1700495825
1700495826 但是,你并不需要事事都参照克努斯的极端原则,以期望我们生活中有更多事可以使用中断联合作为一个设计原则。邮局遵照这种原则的情况很少,在其他地方,我们需要为自己建立原则,或进行要求。各种能发出声音的设备都有“请勿打扰”模式,我们可以手动切换打开和关闭一整天,但这种工具都太生硬。相反,我们可能会想进行一些设置,为中断联合提供一个明确的选择。这就相当于在设备内部进行的人类时间尺度。它每10分钟提醒我一次,然后告诉我一切细节。
1700495827
1700495828 [1]由于每当计算机想要我们进行某种操作时,它们往往会弹出错误信息和对话框,这种行为是有点儿虚伪的。用户界面以一种中央处理器本身很少容忍的方式要求提起用户的注意。
1700495829
1700495830
1700495831
1700495832
1700495833 算法之美:指导工作与生活的算法 [:1700494154]
1700495834 算法之美:指导工作与生活的算法 06 贝叶斯法则 预测未来
1700495835
1700495836 伯特兰·罗素
1700495837
1700495838 人类获得的所有知识都是不确定的、不准确的和不全面的。
1700495839
1700495840 安妮
1700495841
1700495842 明天太阳会照常升起。你可以用你的一切来打赌太阳会出来。
[ 上一页 ]  [ :1.700495793e+09 ]  [ 下一页 ]