上海大学操作系统2实验报告合集1-8(3)

2018-12-29 21:27

PCB[RUN].status='W'; //插入链尾 link[TAIL]=RUN; link[RUN]=-1; TAIL=RUN; RUN=HEAD;//链首进程开始运行 HEAD=link[HEAD]; PCB[RUN].status='R'; } } } showit(); } //主函数 int main() { long algo; srand(time(NULL)); algo = ChooseAlgo(); if (algo == 1) { main_priority();//优先数法 } else { main_round_robin();//简单轮转法 } printf(\return 0; } 实验体会:

通过写代码的过程更加清晰地了解了两种算法的思想和用处,对算法的了解加深的同事也锻炼了写代码的能力。

《计算机操作系统》实验二报告

实验二 题目 : 死锁观察与避免 姓名 : 余果 学号 :14122602

实验环境 : Linux Ubuntu系统 实验目的 :

1、目的

死锁会引起计算机工作僵死,造成整个系统瘫痪。因此,死锁现象是操作系统特别是大型系统中必须设法防止的。学生应独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效的防止死锁的发生。通过实习,更直观地了解死锁的起因,初步掌握防止死锁的简单方法,加深理解课堂上讲授过的知识。 2、要求

(1) 设计一个 n 个并发进程共享 m 个系统资源的系统。进程可动态地申请资源和释放资源。系统按各进程的申请动态地分配资源。

(2) 系统应能显示各进程申请和释放资源以及系统动态分配资源的过程,便于用户观察和分析。

(3) 系统应能选择是否采用防止死锁算法或选用何种防止算法(如有多种算法)。在不采用防止算法时观察死锁现象的发生过程。在使用防止死锁算法时,了解在同样申请条件下,防止死锁的过程。

实验内容 :

1、题目

本示例采用银行算法防止死锁的发生。假设有三个并发进程共享十个系统。在三个进程申请的系统资源之和不超过 10 时,当然不可能发生死锁,因为各个进程申请的资源都能满足。在有一个进程申请的系统资源数超过 10 时,必然会发生死锁。应该排除这二种情况。程序采用人工输入各进程的申请资源序列。如果随机给各进程分配资源,就可能发生死锁,这也就是不采用防止死锁算法的情况。假如,按照一定的规则,为各进程分配资源,就可以防止死锁的发生。示例中采用了银行算法。这是一种犹如“瞎子爬山”的方法,即探索一步,前进一步,行不通,再往其他方向试探,直至爬上山顶。这种方法是比较保守的。所花的代价也不小。 2、代码

#include using namespace std; #include int Res[15]; int n,m;

struct Process{

int Had[15]; int Max[15]; int Need[15];

bool IsEnd;}Processes[15]; int curProcess; int Req[15];

Process tmpProcesses[15]; bool IsEnd(){

bool R = true;

for(int i = 0;i

bool IstmpEnd(){ bool R = true; for(int i = 0;i

bool Legal= false; bool Banker(){ Legal = true;

for(int i = 0;i Processes[curProcess].Need[i]){ Legal = false; break; } }

for(int i = 0;i Res[i]){ Legal = false; break; } }

int tmp[15];

for(int i = 0;i

tmp[i] = Res[i]; } for(int i = 0;i tmp[i]){ IsFF = false; break; } } IsFind = IsFF; if(IsFind == true){ curRel = i; break; } } } if(IsFind){

for(int i = 0;i

}while(!IstmpEnd() && IsFind == true);

for(int i = 0;i

if(tmpProcesses[i].IsEnd == false){ Legal = false; break;} }

return Legal; }

int main() {

memset(Processes,0,sizeof(Processes)); memset(Res,0,sizeof(Res)); memset(Req,0,sizeof(Req)); cin>>n>>m;

for(int i = 0;i>Res[i]; }

for(int i = 0;i>Processes[i].Had[j]>>Processes[i].Max[j]; } }

int option = -1; cin>>option; if(option == 0){ do{ for(int i = 0;i

cin>>curProcess; for(int i = 0;i>Req[i]; } Legal = false; Banker(); if(Legal){ Processes[curProcess].IsEnd = true; for(int i = 0;i


上海大学操作系统2实验报告合集1-8(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:全国化学检验工职业技能大赛考试试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: