- 博客(1)
- 资源 (6)
- 收藏
- 关注
原创 开源日志系统比较
参考资料: https://my.oschina.net/sunzy/blog/183795scribe主页:https://github.com/facebook/scribechukwa主页:http://incubator.apache.org/chukwa/kafka主页:http://sna-projects.com/kafka/Flume主页:https://github.com/cl
2016-10-24 16:37:55 302
课程设计报告
实验题目:纸牌游戏
编号为1~52张牌,正面向上,从第二张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后从第三张牌开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些?
2012-09-12
操作系统设计
实验题目:
基于死锁避免动态策略的资源分配银行家算法的模拟实现
问题解析(对问题的分析、理解和解题方法):
对问题的分析:
并发进程共享系统时如处理不当可能发生死锁。要防止死锁的发生,必须保证系统状态是合理的。有效的避免死锁的算法必须能预见将来可能发生的事情的模式,以便在死锁发生之前就能察觉出它们潜在的危险的存在。这种预见类型的算法的代表是Dijkstra 提出法银行家算法。
银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。
对问题的理解和解决:
操作系统按照一定的规则为进程分配资源,当某个进程申请资源时,首先要测试该进程对资源的需求量是否与最大需求量冲突,如果超出最大需求量,则不予分配。其次如果系统的可用资源能满足当前的进程的需求,则尝试性的分配,并接下来今年进入安全性检查。
否则不予分配。
如果进入安全性检查,在为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,并释放所占用的资源。否则就推迟分配。进入下个进程的资源申请。直到所有的进程都能合理的分配资源并结束。则安全性检查通过。系统处于安全的状态。否则若有进程无法完成,始终无法获得所需的资源,即检查出潜在的死锁。此时系统处于不安全的状态。
处于不安全的状态的进程资源申请因当驳回。并恢复分配前的状态。
2012-09-12
死锁检测算法
#include
using namespace std;
const int M = 3;
const int N = 5;
int Ava[M] = {3, 3, 2};
int All[N][M] = {{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};
int Nee[N][M] = {{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};
int work[N+1][M] = {{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
int flag[N][2] = {{0,0},{0,0},{0,0},{0,0},{0,0}};
int count = 0;
void Safe(int num);
int main()
{
int num = 0;
for (int k = 0; k < M; ++k)
{
work[num][k] = Ava[k];
}
Safe(num);
cout << "total: " << count;
system("pause");
return 0;
}
void Safe(int num)
{
if (num == N)
{
count++;
for (int m = 0; m < N; ++m)
{
cout << flag[m][1] << " ";
}
cout << endl;
}
2012-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人