操作系统实验报告(7)

2019-08-01 23:24

山东科技大学学生课程设计

printf(\到达时间: ?\\n\ printf(\开始时间:?\\n\ if(q->runtime<=rr) {

time=time+q->runtime;

printf(\完成时间: ?\\n\ q->turntime=time-q->arrivetime;

printf(\周转时间: ?\\n\ struct process *t=q; q=q->next; p->next=q; free(t); } else {

time=time+rr;

printf(\完成时间: ?\\n\ q->runtime=q->runtime-rr; q->rrtime++; p=q;

q=q->next;

} } } }

int main() {

printf(\时间片轮转调度算法\\n\ struct process *head=list();

- 28 -

山东科技大学学生课程设计

runrr(head); return 0; }

1.3.4运行结果

2.银行家算法

- 29 -

山东科技大学学生课程设计

2.1需求分析

利用银行家算法避免死锁,每一个进程再进入系统时,它必须申明在运行过程中,可能需要每种资源类型的最大单元数目,其数目不应超过系统所拥有的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程。若有,再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态。如果不会,才将资源分配给它。

基本功能如下:

(1)安全性算法。根据提供的安全序列判断是否为安全状态。

(2)银行家算法分配资源。根据银行家的算法判断能否分配申请的资源。 以下是各功能模块的功能描述: 1.主函数模块

本模块的主要功能是输入进程个数、已分配的资源、进程所需要最大的资源和系统此时所需要的资源,通过调用check()函数来检测此时系统是否安全,如果安全,则将资源分配并输出此时的安全序列。 2.安全性算法模块

本模块的主要功能是对进程进行安全性检测,检测此时的系统资源是否满足提出资源请求进程的需要,如果满足则进一步检测是否所有的进程都能运行完毕,如果均能运行完毕,则系统安全,否则,系统不安全。 3.银行家算法

本模块的主要功能是对资源进行分配,如果申请的资源正确,则尝试将资源分配给进程,并进行检测。 测试数据:

进程的个数:5资源的个数3

- 30 -

山东科技大学学生课程设计

2.2 概要设计

本次程序使用c语言的方法,程序中定义了一个主函数、一个安全性算法函数和一个输出函数,首先要做的是输入进程的个数和各类资源的数量,然后调用check()函数检测,在调用print()函数输出。

2.3 详细设计

1.主函数模块

首先输入进程的个数和资源的数量,然后调用check()模块和print()模块。

2.安全性算法模块

对提出申请资源的进程进行检查,当need大于work,则不能满足进程的需求,则系统不安全,如果成立,则输出安全序列a[s++]。

3. 银行家算法

- 31 -

山东科技大学学生课程设计

首先,检查Request[j]<=Need[i,j],然后检查

Request[j]<=Available[j],如果均成立,则试着分配给它资源,并修改数据,然后执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全则分配,否则分配前状态。 Request<=need? 开始 初始化数组:available,allocation,max 提出请求分配request Error(出错,无法分配) Request<=available? Error(出错,无法分配) Available=available-request; Allocation=allocation+request; Need=need-request; 是否存在安全序列? Error(出错,无法分配) Available=available+request; Allocation=allocation-request; Need=need+request; - 32 - 输出安全序列 再次进行分配?


操作系统实验报告(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:DNF大转移NPK补丁翻译

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

马上注册会员

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