ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:275.81KB ,
资源ID:4919538      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4919538.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南昌大学操作系统实验报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南昌大学操作系统实验报告.docx

1、南昌大学操作系统实验报告实 验 报 告实验课程: 计算机操作系统 学生姓名: 陈帅 学 号: 8000111078 专业班级: 东软实验班111班 2013年 6 月 15 日目 录一、 实验一 编程实现银行家安全算法页码二、 实验二 存储管理的模拟实现页码 南昌大学实验报告 -(1)编程实现银行家安全算法学生姓名: 陈帅 学 号: 8000111078 专业班级: 东软实验班111班 实验类型: 验证 综合 设计 创新 实验日期: 2013/5/20 实验成绩: 一、实验目的通过实验加强对银行家安全算法的理解和掌握。二、实验内容熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法

2、,要求输出进程的安全序列。三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤五、实验数据及处理结果#include #include #include # define m 50 int no1; /进程数int no2; /资源数int r;int allocationmm,needmm,availablem,maxmm; char name1m,name2m; /定义全局变量void main() void check(); void print(); int i,j,p=0,q=0; char c; int requestm,allocation1mm,

3、need1mm,available1m; printf(*n); printf(* 银行家算法的设计与实现 *n); printf(* 姓名:陈帅 学号:8000111078 *n); printf(*n); printf(请输入进程总数:n); scanf(%d,&no1); printf(请输入资源种类数:n); scanf(%d,&no2); printf(请输入Max矩阵:n); for(i=0;ino1;i+) for(j=0;jno2;j+) scanf(%d,&maxij); /输入已知进程最大资源需求量 printf(请输入Allocation矩阵:n); for(i=0;in

4、o1;i+) for(j=0;jno2;j+) scanf(%d,&allocationij); /输入已知的进程已分配的资源数 for(i=0;ino1;i+) for(j=0;jno2;j+) needij=maxij-allocationij; /根据输入的两个数组计算出need矩阵的值 printf(请输入Available矩阵n); for(i=0;ino2;i+) scanf(%d,&availablei); /输入已知的可用资源数 print(); /输出已知条件 check(); /检测T0时刻已知条件的安全状态 if(r=1) /如果安全则执行以下代码 do q=0; p=0

5、;printf(n请输入请求资源的进程号(04):n); for(j=0;j=no1) printf(输入错误,请重新输入:n); continue; else break; printf(n请输入该进程所请求的资源数requestj:n); for(j=0;jno2;j+) scanf(%d,&requestj); for(j=0;jneedij) p=1; /判断请求是否超过该进程所需要的资源数 if(p) printf(请求资源超过该进程资源需求量,请求失败!n); else for(j=0;javailablej) q=1; /判断请求是否超过可用资源数 if(q) printf(没有

6、做够的资源分配,请求失败!n); else /请求满足条件 for(j=0;jno2;j+) available1j=availablej; allocation1ij=allocationij; need1ij=needij; /保存原已分配的资源数,仍需要的资源数和可用的资源数 availablej=availablej-requestj; allocationij+=requestj; needij=needij-requestj; /系统尝试把资源分配给请求的进程 print(); check(); /检测分配后的安全性 if(r=0) /如果分配后系统不安全 for(j=0;jno2

7、;j+) availablej=available1j; allocationij=allocation1ij; needij=need1ij; /还原已分配的资源数,仍需要的资源数和可用的资源数 printf(返回分配前资源数n); print(); printf(n你还要继续分配吗?Y or N ?n); /判断是否继续进行资源分配 c=getche(); while(c=y|c=Y); void check() /安全算法函数 int k,f,v=0,i,j; int workm,am; bool finishm; r=1; for(i=0;ino1;i+) finishi=false;

8、 / 初始化进程均没得到足够资源数并完成 for(i=0;ino2;i+) worki=availablei;/worki表示可提供进程继续运行的各类资源数 k=no1; do for(i=0;ino1;i+) if(finishi=false) f=1; for(j=0;jworkj) f=0; if(f=1) /找到还没有完成且需求数小于可提供进程继续运行的资源数的进程 finishi=true; av+=i; /记录安全序列号 for(j=0;j0); f=1; for(i=0;ino1;i+) /判断是否所有的进程都完成 if(finishi=false) f=0; break; if

9、(f=0) /若有进程没完成,则为不安全状态 printf(系统处在不安全状态!); r=0; else printf(n系统当前为安全状态,安全序列为:n); for(i=0;ino1;i+) printf(p%d ,ai); /输出安全序列 void print() /输出函数 int i,j; printf(n); printf(*此时刻资源分配情况*n); printf(进程名/号 | Max | Allocation | Need |n); for (i = 0; i no1; i+) printf( p%d/%d ,i,i); for (j = 0; j no2; j+) prin

10、tf(%d ,maxij); for (j = 0; j no2; j+) printf( %d ,allocationij); for (j = 0; j no2; j+) printf( %d ,needij); printf(n); printf(n); printf(各类资源可利用的资源数为:); for (j = 0; j no2; j+) printf( %d,availablej); printf(n);实验结果:1、程序初始化输入进程号输入进程号不在测试六、实验体会或对改进实验的建议七、参考资料 南昌大学实验报告 -(2)存储管理的模拟实现学生姓名: 陈帅 学 号: 80001

11、11078 专业班级: 东软实验班111班 实验类型: 验证 综合 设计 创新 实验日期: 2013/5/20 实验成绩: 一、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。二、实验内容编程实现页面置换算法,要求输出页面的置换过程,具体可以编程实现OPT、FIFO和LRU算法。三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤五、实验数据及处理结果#include #include #include in

12、t s,i; /s表示产生的随机数,i表示物理块数int m,n,h; /循环专用int k,g,f; /临时数据int sum; /缺页次数float r; /rate命中率int p320; /page页数int a320; /执行的指令int pb32; /physical block用户内存容量(物理块)void initialization();void FIFO();void LRU();void LFU();void line();void start();void end();void main() start(); srand(int) time (NULL); /以计算机当

13、前时间作为随机数种子 for (n=0;n320;n+=3) s=rand()%320+0; /随机产生一条指令 an=s+1; /顺序执行一条指令 s=rand()%(an+1); /执行前地址指令M an+1=s+1; s=rand()%(319-an+1)+(an+1+1); an+2=s; for (n=0;n320;n+) pn=an/10; /得到指令相对的页数 printf(物理块数t FIFOtt LRUtt LFUn); line(); for (i=4;i=32;i+) printf(n %2d:,i); FIFO(); LRU(); LFU(); end();void i

14、nitialization() /用户内存及相关数据初始化 for (n=0;n32;n+) pbn=-1; sum=0; r=0; k=0; g=-1; f=-1;void FIFO() /先进先出置换算法 int time32; /定义进入内存时间长度数组 int max; /max表示进入内存时间最久的,即最先进去的 initialization(); for(m=0;mi;m+) timem=m+1; for (n=0;n320;n+) k=0; for (m=0;mi;m+) if (pbm=pn) /表示内存中已有当前要调入的页面 g=m; break; for (m=0;mi;m

15、+) if (pbm=-1) /用户内存中存在空的物理块 f=m; break; if (g!=-1) g=-1; else if (f=-1) /找到最先进入内存的页面 max=time0; for(m=0;mmax) max=timem; k=m; pbk=pn; timek=0; /该物理块中页面停留时间置零 sum+; /缺页数+1 else pbf=pn; timef=0; sum+; f=-1; for (m=0;mi & pbm!=-1;m+) timem+; /物理块中现有页面停留时间+1 r=1-(float)sum/320; printf(tt%6.4f,r);void L

16、RU() /最近最少使用算法 int time32; int max; initialization(); for (m=0;mi;m+) timem=m+1; for (n=0;n320;n+) k=0; for (m=0;mi;m+) if (pbm=pn) g=m; break; for (m=0;mi;m+) if (pbm=-1) f=m; break; if (g!=-1) timeg=0; g=-1; else if (f=-1) max=time0; for (m=0;mmax) k=m; max=timem; pbk=pn; timek=0; sum+; else pbf=p

17、n; timef=0; sum+; f=-1; for (m=0;mi & pbm!=-1;m+) timem+; r=1-(float)sum/320; printf(tt%6.4f,r);void LFU() /最少访问页面算法 int time_lru32,time32,min,max_lru,t; initialization(); for (m=0;mi;m+) timem=0; time_lrum=m+1; for (n=0;n320;n+) k=0; t=1; for (m=0;mi;m+) if (pbm=pn) g=m; break; for (m=0;mi;m+) if (

18、pbm=-1) f=m; break; if (g!=-1) time_lrug=0; g=-1; else if (f=-1) if (n=20) /将最少使用的间隔时间定位个单位 max_lru=time_lru0; /在未达到一定时间的要求时,先采用LRU进行页面置换 for (m=0;mmax_lru) k=m; max_lru=time_lrum; pbk=pn; time_lruk=0; sum+; else for (m=0;m=n-51;h-) if (pbm=ph) timem+; min=time0; for (m=0;mi;m+) if (timemmin) min=ti

19、mem; k=m; for (m=0;m1) /若使用次数同样少,将次数相同的页面按照LRU进行页面置换 max_lru=time_lruk; for (m=0;mmax_lru) k=m; max_lru=time_lrum; pbk=pn; time_lruk=0; sum+; else pbf=pn; time_lruf=0; sum+; f=-1; for (m=0;mi & pbm!=-1;m+) time_lrum+; r=1-(float)sum/320; printf(tt%6.4f,r);void line() /美化程序,使程序运行时更加明朗美观 printf(*);void start() /表示算法开始 line(); printf(n); printf(* 页面置换算法开始 *n); printf(* 姓名:陈帅 学号:8000111078 * n); line(); printf(nn);void end() /表示算法结束 printf(n); line(); printf(n 页面置换算法结束,谢谢使用n); line();运行结果:六、实验体会或对改进实验的建议七、参考资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1