哲学家进餐问题是荷兰学者Dijkstra 提出的经典问题之一,它是一个信号量机制问题的应用,在操作系统文化史上具有非常重要的地位。对该问题的剖析有助于学生深刻地理解计算机系统中的资源共享、进程同步、死锁等问题,并能熟练地应用信号量来解决生活中的控制流程,即将生活中的控制流程用形式化的方式表达出来。 假设有5个哲学家,他们花费一生中的时光思考和吃饭。这些哲学家共用一个圆桌,每个哲学家都有一把椅子。在桌子中央是一碗通心面,在桌子上放着5只筷子。(如图所示)当一个哲学家思考时,他与其他同事不交互。时而,哲学家会感到饥饿,并试图拿起与他相近的两只筷子(他与邻近左、右之间的筷子)。一个哲学家一次只能拿起一只筷子。显然,他不能从其他哲学家手里拿走筷子。当一个饥饿的哲学家同时有两只筷子时,他就不能不用释放他的筷子而自己吃了。当吃完后,他会放下两只筷子,并再次开始思考。 规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。按此规定,将是1、 2号哲学家竞争1号筷子;3、4号哲学家竞争3号筷子。即五位哲学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一位哲学家能获得两只筷子而进餐。
上传时间: 2014-01-23
上传用户:teddysha
动态资源分配系统的设计 目的与要求: 本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。具体要求如下: ⑴模拟一个银行家算法; ⑵初始化时让系统拥有一定的资源; ⑶用键盘输入的方式申请资源; ⑷如果预分配后,系统处于安全状态,则修改系统的资源分配情况; ⑸如果预分配后,系统处于不安全状态,则提示不能满足请求。
上传时间: 2013-11-30
上传用户:gtf1207
Linux网络编程。主要实现共享资源问题。通过lock()函数实现锁定,unlock()实现解锁,以避免造成临界资源的死锁问题。
上传时间: 2015-12-16
上传用户:tb_6877751
模拟银行家算法,用以实现死锁的检测与避免
上传时间: 2014-01-06
上传用户:懒龙1988
模拟银行家算法,了解死锁的产生和避免的方法。
上传时间: 2013-12-18
上传用户:yuzsu
哲学家进餐问题——Java语言实现 哲学家进餐问题是一个多线程运用的经典例子,涉及到线程同步/互斥,临界区访问问题以及一个避免死锁的解决方法。 有五个哲学家绕着圆桌坐,每个哲学家面前有一盘面,两人之间有一支筷子,这样每个哲学家左右各有一支筷子。 哲学家有2个状态,思考或者拿起筷子吃饭。如果哲学家拿到一只筷子,不能吃饭,直到拿到2只才能吃饭,并且一次只能拿起身边的一支筷子。一旦拿起便不会放下筷子直到把饭吃完,此时才把这双筷子放回原处。 如果,很不幸地,每个哲学家拿起他或她左边的筷子,那么就没有人可以吃到饭了。这就会造成死锁了。。这是需要坚决杜绝的,正如操作系统的死锁问题。
上传时间: 2016-06-29
上传用户:恋天使569
在校所做的实验,关于死锁的避免的实验,传上来。
标签: 实验
上传时间: 2013-12-21
上传用户:fanboynet
著名的操作系统经典算法,银行家算法。模拟了资源的分配!银行家算法是一种最有代表性的避免死锁的算法。 要解释银行家算法,必须先解释操作系统安全状态和不安全状态。
上传时间: 2014-12-05
上传用户:qq521
银行家算法是用来在系统调用资源时,避免死锁的一种使用很广泛的算法,易懂,有兴趣玩程序的就加我啊QQ364523756
上传时间: 2014-01-20
上传用户:lz4v4
哲学家就餐是一个经典的Java多线程编程的实例,这是图形版。涉及到线程同步与互斥,临界区访问问题以及避免死锁的方法。
上传时间: 2014-01-19
上传用户:金宜