Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6537965
  • 博文数量: 1159
  • 博客积分: 12444
  • 博客等级: 上将
  • 技术积分: 12570
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-13 21:34
文章分类

全部博文(1159)

文章存档

2016年(126)

2015年(350)

2014年(56)

2013年(91)

2012年(182)

2011年(193)

2010年(138)

2009年(23)

分类: LINUX

2013-11-04 15:34:48



Wiki百科上面对于银行家算法的解释比较详细()

但是我感觉要实际应用,有几个问题:
(1)真实的操作系统如Linux/Windows当中,进程/线程的资源分配真的使用了Djikstra的银行家算法吗? 我没有看过Linux的源代码,想知道理论学到的东西和实际应用是不是一回事。

(2)既然操作系统大都是用C写的,那么如果系统资源有10种类型,那么是不是OS要为每个进程分配一个Allocation向量来记录当前的进程用了多少资源? 这个数据结构是在OS的地址空间里面呢,还是进程自己的进程空间里面?

(3)因为进程的执行是可以并行的,是否会导致: 一个进程分配一个资源的时候,必须停下其他所有的进程来保证资源矩阵的操作是同步的。否则可能两个进程同时申请了一种资源,但是这种资源的 available只是减去了1。我觉得OS不应该这样设计,否则进程越多系统越慢,但是这个同步的问题是如何解决的呢?

谢谢。

++++++++++++++++++++++++++++++++

这是个很有意思的问题,在上学的时候我也想到过很多类似的问题,包括这个。现在给你一些参考:

以下内容来自《操作系统:设计与实现》

3.3.3 鸵鸟算法
最简单的方法是像鸵鸟一样对死锁视而不见。对该方法各人的看法不同。数学家认为不管花多大代价也要防止死锁的发生;工程师们则要了解死锁发生的频率、系统 因其他原因崩溃的频率、以及死锁有多严重,如果死锁平均每50年发生一次,而系统每个月会因硬件故障、编译器错误或操作系统错误而崩溃一次,那么大多数工 程师不会不惜工本的去消除死锁。

。。。。。

3.3.5 死锁预防
。。。。。
该算法(银行家算法)有Dijkstra与1965年发表。从那之后几乎每本操作系统的专著都详细的描述它,许多内容的论文也都围绕该算法,但很少有作者 指出该算法有实用价值。因为很少有进程能够在运行前就知道其所需资源的最大值,而且进程数不是固定的,往往在不断变化,况且原本可用的资源也可能突然变成 不可用(比如磁带机可能突然坏掉)。
。。。。。


++++++++++++++++++++++++++++++++++++++++++++++++

如果执行的任务相对固定,那么预先估计每个任务的资源使用也是可能的,在当年的大型机时代这个是完全可能的。但是,这个算法在现在的通用OS内核中估计就没多大用处了。




阅读(1954) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~