( ! ) Notice: Undefined index: mobile in /var/www/html/head.php on line 16
Call Stack
#TimeMemoryFunctionLocation
10.0001230624{main}( ).../view.php:0
20.0001231368include( '/var/www/html/head.php' ).../view.php:2
30.0009250728isMobile( ).../head.php:30
数学思维训练网 - 小学计算思维课程(24)-路由与死锁

小学计算思维课程(24)-路由与死锁

小学计算思维课程(24)-路由与死锁

本书共26课,如果您有好的建议,请联系作者:浙江省新昌县城西小学 唐明 147885198@qq.com


第二十四课:路由与死锁

“死锁”是一种相持不下的情况。比如交通堵塞会引起道路的死锁,网络风暴也会引起网络的死锁。为了避免死锁,唯一有效的办法是寻找一条有效合作的方法。下面我们通过一个游戏来体验一下路由和死锁。

准备:

5位小朋友,5顶有A、B、C、D、E的帽子,A、B、C、D、E每个字母2张卡片(最好同时用颜色区分)。

活动:

1.5名小朋友围成一圈坐下。

2.10张卡片留下一张,随机派发给小朋友。要求一只手拿一张卡片,其中有一人空着一只手。

3.活动的目标是通过“消息路由”(传递卡片),让每个小朋友拥有自己的卡片(A帽子的拿A卡片)。但你只能将卡片传递给相邻的小朋友。

注意:一次只能传递一个消息,而且只能在相邻两个小朋友之间(如下图所示)。

问题:

1.不违反游戏规则,你们完成活动了吗?

2.你们在传递卡片时相互协商了吗?

3.怎样才能最快的让卡片归位?

如果找不到这么多小朋友一起玩,也可以将这个游戏画在纸上,然后按照上面的规则玩。

在上面的游戏中,我们能控制网络中的所有信息,而且我们知道下一步要怎样做。这和真实网络中的情况并不一样,在真实情况下,每个人或每台计算机都是自主运行的。而且,有时候他们会用到“贪婪”算法(让自己的利益最大化),一旦有很多人使用了“贪婪”算法,死锁就离我们不远了。

如果上面游戏中的A和C都很贪婪,拒绝放走属于他们的卡片,请再玩一遍游戏,看看卡片还能正确归位吗?如果只有C是贪婪的,正确的信息能传递到B和D吗?想一想生活中有没有这样发生死锁的例子。

死锁一般都需要其它因素介入,比如因为一场交通事故,导致环城路上大堵车,数以千计的司机被困在路上。如果没有交警或其他人的疏导,说不定会发展为全城大堵车。

二十世纪最伟大的发明莫过了互联网了,通过互联网,全世界的每一台计算机都可以相互连接。网络负责把信息从一台计算机传送到别一台计算机。它的工作原理和邮局寄信差不多,信息就好比信件,它通过一个个中转站,最终被送到目的地,这个过程被称为“路由”。在上面的游戏中,每个人都是一个节点,卡片就是传送的信息,每个节点可以存储2个信息,它被称为“缓冲区”,如果缓冲区满了,就无法再接收信息了。实际计算机中的缓冲区要大的多,但它的大小并不是无限的,如果有个黑客给这个节点发送了大量垃圾信息,有可能引起缓冲区“溢出”,它就无法接收其它信息,从而拒绝为其它人提供服务。我们在设计网络系统时要充分考虑到这些可能,尽量杜绝以上情况发生。