操作系统实验报告(5)

时间:2026-01-27

操作系统实验报告总编.包含操作系统安装及其接口环境,编程实现银行家安全算法,进程调度算法的实现,存储管理的模拟实现.内容详细丰富,仅供参考

南昌大学实验报告

---编程实现银行家安全算法

学生姓名: 张虹 学 号: 6100409033 专业班级: 电Ⅲ091班 实验类型:□ 验证 ■ 综合 □ 设计 □ 创新 实验日期: 实验成绩:

一、实验目的

通过实验加强对银行家安全算法的理解和掌握。

二、实验内容

熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法,要求输出进程的安全序列。

三、实验要求

1、 需写出设计说明; 2、 设计实现代码及说明 3、 运行结果;

四、主要实验步骤

1、 分析银行家算法结构;

2、 画出银行家算法的流程图,即设计说明;

3、 根据画出的流程图使用C语言编写相应的代码(代码过长,放到最后);

程序主要由main函数和以下几个函数组成:

void input();用户输入银行家算法的初始数据; void output();输出当前系统资源分配情况;

void change();当请求资源满足要求时,进行分配,系统资源发生改变; int check();安全性算法,检查是否存在安全序列; void outputsafe();输出安全序列的资源分配表。 4、 检查代码,将编出的代码编译、链接,验证其正确性。

操作系统实验报告总编.包含操作系统安装及其接口环境,编程实现银行家安全算法,进程调度算法的实现,存储管理的模拟实现.内容详细丰富,仅供参考

五、实验数据及处理结果

操作系统实验报告总编.包含操作系统安装及其接口环境,编程实现银行家安全算法,进程调度算法的实现,存储管理的模拟实现.内容详细丰富,仅供参考

9

操作系统实验报告总编.包含操作系统安装及其接口环境,编程实现银行家安全算法,进程调度算法的实现,存储管理的模拟实现.内容详细丰富,仅供参考

六、实验体会或对改进实验的建议

体会:编写银行家算法需要较好分析能力,C语言也要掌握的很好,而且需要细心和极大地耐心。我的程序在最开始编出来的第一份代码编译时大大小小一堆错误,有些是一个小错误导致了下面全错,这些小错误在一百多行里找起来非常费劲。然后小错误全部找出来以后,再编译,错误没有了,但是得到的结果却是错误的,这样又要开始一行一行分析,看是哪里出了问题。到最后得到了想要的结果以后,程序还需要修饰,至少要输出要简洁明朗,要让别人一运行这个程序就知道自己在什么时候该输入什么数据,数据是什么作用,而不是只有自己知道输进去的是什么东西。

七、参考资料

《计算机操作系统》 《C程序设计》

《C语言程序设计_现代方法》

八、实验代码

#include <stdio.h> #include <stdlib.h>

#include <string.h>

int max[5][3]; //开始定义银行家算法中需要用到的数据 int allocation[5][3]; int need[5][3]; int available[3]; int request[5][3]; char *finish[5]; int safe[5]; int n,i,m; int k=0;

操作系统实验报告总编.包含操作系统安装及其接口环境,编程实现银行家安全算法,进程调度算法的实现,存储管理的模拟实现.内容详细丰富,仅供参考

int j=0;

int work[3]; int works[5][3];

void start(); //表示程序开始 void end(); //表示程序结束 void input(); //输入数据 void output(); //输出数据

void change(); //系统分配资源,原有资源情况改变 void outputsafe(); //输出安全序列的资源分配情况 int check(); {

start();

for (;j==0;) //确认输入数据的正确性,若输入错误,重新输入 {

input();

printf("以下为进程资源情况,请确认其是否正确:\n");

output();

printf("数据是否无误:\n正确:输入\n错误:输入\n请输入:"); scanf("%d",&j);

//安全性算法

void main() //主程序开始

} printf("数据确认无误,算法继续。\n"); if (check()==0) //若check函数返回值为,表示输入的初始数据找不到安全序列,无法进行下一步,程序结束

{

end(); exit(0);

}

for(;j==1;) //当有多个进程请求资源时,循环开始

printf("请输入请求资源的进程i(0、、、、):"); //输入发出请求向量的进程及请求向scanf("%d",&i);

printf("请输入进程P%d的请求向量Request%d:",i,i);

for(n=0;n<3;n++) scanf("%d",&request[i][n]);

for (;request[i][0]>need[i][0] || request[i][1]>need[i][1] || request[i][2]>need[i][2];) //若

{ 量

请求向量大于需求资源,则认为是输入错误,要求重新输入 { printf("数据输入有误,请重试!\n请输入进程P%d的请求向量Request%d:",i,i);

}

for(n=0;n<3;n++) scanf("%d",&request[i][n]);

…… 此处隐藏:284字,全部文档内容请下载后查看。喜欢就下载吧 ……
操作系统实验报告(5).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:4.9 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:19元/月

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