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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机操作系统实验.docx

1、计算机操作系统实验实验一:了解操作系统一、 实验目的:通过在虚拟机中装载操作系统、并对硬盘进行分区的操作对操作系统有进一步和深入的了解,学会使用VMware Workstation,掌握操作系统的安装和对磁盘进行分区等各种操作二、 实验原理:在VMware Workstation中装载操作系统、对硬盘进行分区三、 实验器材:硬件:计算机 软件:VMware Workstation、windows系统镜像四、 实验步骤:1.打开计算机并运行VMware Workstation,新建虚拟机文件2.在VMware Workstation中找到保存在本地的系统镜像文件并选择3.启动虚拟机4.在弹出对话

2、框中选择PQ系统分区,对硬盘进行分区5.重新启动虚拟机,选择系统安装位置6.在装好的操作系统中进行各项操作,检查系统是否存在错误7.实验完成,关闭VMware Workstation,关闭计算机五、 实验心得:通过本次实验中的各项操作,我学会了安装操作系统并对磁盘进行分区,了解了操作系统,掌握了安装操作系统以及对硬盘进行分区等的各项操作。 实验二:进程同步和互斥一、 实验目的:1、掌握临界资源,临界正概念及并发进程互斥,同步访问原理2、学会使用高级语言进行多线程编程方法3、掌握利用VC+语言线程库实现进程的互斥,条件竞争并编码实现。P.O操作,利用 P.O操作实现两个并发线程,对有界临界区的同

3、步访问。二、 实验要求:1、知识基础:学生应在完成进程和线程及调度章节学习后进行2、开发环境工具: 硬件平台-网络实验室 软件平台-windows操作系统 VC+语言开发环境三、 实验内容:1、实现临界资源 临界区 进程或线程的定义与创建2、合用两个并发运行的进程 实现互斥算法 和有界缓冲区的同步算法实验步骤:kan ra/ Process.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include #include using namespace std;static int Mutex=1;static int S=5;int MBlock=0;int S

4、Block=0;class UiProcesspublic: int Swait(int& s) s=s-1; if(s=0) return BlockProcess(); else return 0; void Ssignal(int& s) s=s+1; int BlockProcess() if(Mutex=0) MBlock=abs(Mutex); return MBlock; if(S=0) SBlock=abs(S); return SBlock; void Print(string s) coutsendl; void Print(string s,int i) couts iS

5、wait(S); int j=this-Swait(Mutex); if(i=0 & j=0) Print(进程可以运行); else if(i0) Print(当前因资源阻塞的进程数目为:,i); else if(j0) Print(当前因互斥阻塞的进程数目为:,j); this-Ssignal(Mutex); /this-Ssignal(S); ;int _tmain(int argc, _TCHAR* argv) for(int i=0;i10;i+) UiProcess ui; ui.Process(); system(pause); return 0;、实验心得: 通过这次试验,加深

6、了对进程同步的理解。 实验三:矩阵乘法一、 实验目的:熟悉矩阵乘法规则以及在计算中实现二、 实验环器材:Windows XP ,vc+6.0三、 实验内容:将程序输入计算机,调试运行程序。程序如下:#include void main()int i,j,k; int a53=1,2,3,2,3,4,3,4,5,4,5,6,5,6,7; /相乘的一个矩阵int b34 = 1,2,3,4,1,2,3,4,1,2,3,4;int c54=0; for(i=0; i5; i+) for(j=0;j4;j+) for(k=0;k3;k+)cij+=aik*bkj;/*以上是主要的乘法算法,三个for循

7、环*/*以下是打印得到的矩阵*/for(i=0; i5; i+)printf(n); for(j=0;j4;j+)printf(%3.2d,cij);getch(); /*输入任意字符结束程序,使程序停下来以便观察结果*/四、 实验心得:通过本次实验对三个for循环相乘时的过程分析,熟悉了矩阵相乘的算法以及二维数组在内存中的存储形式实验四:银行家算法一、 实验目的: 1,理解死锁概念,银行家算法及安全性检测算法 2,掌握利用C语言设计实现银行家算数的基本进程 3,验证银行家算法对于避免死锁的作用。二、 实验要求: 1,学生应完成如下章节的学习:进程和线程的调度,死锁 2,安装上述操作系统,使用

8、C程序编程完成设计实现三、 实验步骤: 1,定义并初始化进程及其资源结构 2,提供一个用户界面,用户利用它可动态输入进程和资源种类等相关参数 3,设计实现安全状态,检测和银行家死锁避免功能函数四、 实验步骤: 1,开发一个变量程序 首先从文件中读入系统描述信息,包括进程的数目,资源的种类和数量,每个进程最大资源请求。程序自动根据文件内容创建一个当前系统描述 如:每类资源的数目用.准数组RM描述,m为资源的种类,每个J记录资源的RJ的数量。进程的最大需求矩阵用Pn m表示,P3J记录进程Pi对资源RJ的最大需求。分配矩阵和请求矩阵,可使用二维数组表示。 2,用户输入一个请求, 格式类似:requ

9、est(i,j,k) 求release(i,j,k),在这里,i表示进程Pi,J表示进程PJ,K为申请释放的数量。对于每一个请求,系统回应是满足要求,还是拒绝分配。 3,设定一个申请和释放序列,无任何检测和避免死锁的算法,分配会导致死锁 4,设定一个申请和释放序列,按照安全性算法进行设计,回应系统是否安全。然后实现银行家算法,确保没有死锁的分配五、 算法如下: #include#includestruct typeint a;int b;int c;struct allocationstruct type value;struct allocation *next;struct maxstru

10、ct type value;struct max *next;struct availablestruct type value;struct available *next;struct needstruct type value;struct need *next;struct pathint value;struct path *next;struct finishint value;struct finish *next;void main()int p,status=0,i,j,temp,flag=0;struct allocation *allochead,*alloc1,*all

11、oc2,*alloctemp;struct max *maxhead,*max1,*max2,*maxtemp;struct available *availablehead,*workhead,*worktemp;struct need *needhead,*need1,*need2,*needtemp;struct path *pathhead,*path1,*path2,*pathtemp;struct finish *finishhead,*finish1,*finish2,*finishtemp;printf(请输入进程的数目n);scanf(%d,&p);for(i=0;ivalu

12、e.a);printf(t当前资源类型是 %ct,b);scanf(%d,&alloc1-value.b);printf(t当前资源类型是 %ct,c);scanf(%d,&alloc1-value.c);flag+;allochead=alloc1;elsealloc2=(struct allocation*)malloc(sizeof(struct allocation);printf(t当前资源类型是 %ct,a);scanf(%d,&alloc2-value.a);printf(t当前资源类型是 %ct,b);scanf(%d,&alloc2-value.b);printf(t当前资源

13、类型是 %ct,c);scanf(%d,&alloc2-value.c);alloc1-next=alloc2;alloc1=alloc2;flag+;alloc2-next=NULL;flag=0;for(i=0;ivalue.a);printf(t当前资源类型是 %ct,b);scanf(%d,&max1-value.b);printf(t当前资源类型是 %ct,c);scanf(%d,&max1-value.c);maxhead=max1;flag+;elsemax2=(struct max*)malloc(sizeof(struct max);printf(t当前资源类型是 %ct,a

14、);scanf(%d,&max2-value.a);printf(t当前资源类型是 %ct,b);scanf(%d,&max2-value.b);printf(t当前资源类型是 s %ct,c);scanf(%d,&max2-value.c);max1-next=max2;max1=max2;flag+;max2-next=NULL;flag=0; printf(n请输入可以利用是资源数目n);availablehead=workhead=(struct available*)malloc(sizeof(struct available);printf(n);printf(t当前资源类型是 %

15、ct,a);scanf(%d,&availablehead-value.a);printf(t当前资源类型是 %ct,b);scanf(%d,&availablehead-value.b);printf(t当前资源类型是 %ct,c);scanf(%d,&availablehead-value.c);workhead=availablehead;workhead-value=availablehead-value;flag=0;alloctemp=allochead;maxtemp=maxhead;for(i=0;inext=need2-next=NULL;need1-value.a=(max

16、temp-value.a)-(alloctemp-value.a);need1-value.b=(maxtemp-value.b)-(alloctemp-value.b);need1-value.c=(maxtemp-value.c)-(alloctemp-value.c);needhead=need1;flag+;elseneed2=(struct need*)malloc(sizeof(struct need);need2-value.a=(maxtemp-value.a)-(alloctemp-value.a);need2-value.b=(maxtemp-value.b)-(alloc

17、temp-value.b);need2-value.c=(maxtemp-value.c)-(alloctemp-value.c);need1-next=need2;need1=need2;flag+;maxtemp=maxtemp-next;alloctemp=alloctemp-next;need2-next=NULL;flag=0;for(i=0;inext=finish2-next=NULL;finish1-value=0;finishhead=finish1;flag+;elsefinish2=(struct finish*)malloc(sizeof(struct finish);

18、finish2-value=0;finish1-next=finish2;finish1=finish2;flag+;finish2-next=NULL;flag=0;for(temp=0;tempp;temp+)alloctemp=allochead;needtemp=needhead;finishtemp=finishhead;worktemp=workhead;for(j=0;jvalue=0)if(needtemp-value.avalue.a)&(needtemp-value.bvalue.b)&(needtemp-value.cvalue.c)worktemp-value.a+=a

19、lloctemp-value.a;worktemp-value.b+=alloctemp-value.b;worktemp-value.c+=alloctemp-value.c;finishtemp-value=1;if(flag=0)pathhead=path1=path2=(struct path*)malloc(sizeof(struct path);path1-next=path2-next=NULL;path1-value=j+1;pathhead=path1;flag+;elsepath2=(struct path*)malloc(sizeof(struct path);path2

20、-value=j+1;path1-next=path2;path1=path2;flag+;finishtemp=finishtemp-next;alloctemp=alloctemp-next;needtemp=needtemp-next;else finishtemp=finishtemp-next;alloctemp=alloctemp-next;needtemp=needtemp-next;else finishtemp=finishtemp-next;alloctemp=alloctemp-next;needtemp=needtemp-next;path2-next=NULL;fin

21、ishtemp=finishhead;pathtemp=pathhead;for(temp=0;tempvalue=0)printf(n警告!当前系统是不安全的n);exit(0);finishtemp=finishtemp-next;printf(n当前系统是安全的!n);printf(n安全序列为: n);for(i=0;ivalue);pathhead=pathhead-next;五、实验心得: 程序基本实现了银行家算法的功能,并在其基础上考虑了输出显示的格式的美观性、输入错误要求重新输入等几个方面,尽可能的使程序完整一些。 这段程序算是三个试验中最困难最复杂的一个,由于能力有限,所以在

22、紧张的的编写和调试过程中遇到了许多的问题,通过查询资料、翻阅课本、向同学请教、多次调试等方法逐渐解决了大部分问题,编写的过程中也有比较一些算法的优劣性,找出比较好的算法,收获非常大。通过本次实验,加深了我对银行家算法的理解。实验中遇到了许多问题,通过网络这个大平台问题最终也得到了解决。通过这次的编程,使得自己的动手能力又增强了许多,同时也加深了对理论知识的理解。实验五:文件操作一、实验目的:1 掌握文件系统的工作原理。2 理解文件系统的主要数据结构。3 编程实现文件操作。二、实验内容:1 设计并实现一个一级(单用户)文件系统程序提供以下操作:文件创建/删除接口命令create/delete;目

23、录创建/删除接口命令midair/rmdir;显示目录内容命令ls。创建的文件不要求格式和内容2 在以上基础上世纪并实现一个二级文件系统具备提供用户登录文件、目录要有权限三、程序源代码: / FileControl.cpp: 主项目文件。/*程序功能:对文件进行操作:判断文件是否存在、创建新文件、读文件、写文件、创建目录、删除目录、删除文件、将文件创建到指定目录中。作者:日期:2011-12-4*/#include stdafx.husing namespace System;using namespace System:IO;int main(array args) /* File类可用于创

24、建文件、查找文件、设置文件等 Directory类可用于创建目录、查找目录、设置目录等 */ String dir=a;/设置目录名,注意路径分量间用两个隔开。 String filename=b;/设置文件明 String path=dir+filename; TextReader tReader(path);/读文件类 TextWriter tWriter(path);/写文件类 if(File:Exists(path)/判断文件是否存在,若存在则可直接读写,否则创建文件 Console:WriteLine(L文件存在!); /直接对文件进行读操作,可以修改数据 /写文件操作。 else

25、File:CreateText(path);/创建文件 /新建文件应先写入数据,然后在读取操作 /此处调用tWriter对象写入数据,数据可为任意内容。 Console:ReadKey(); return 0;四、参考程序:1.#include#includevoid main() FILE *p1,*p2,*p3; char ch; if(p1=fopen(test.txt,w)=NULL) printf(can not open the file :); exit(1); printf(请输入字符保存到test中:); while(ch=getchar()!=n) fputc(ch,p1); if(p2=fopen(test1.txt,w+)=NULL) printf(can not open the file :); exit(1); printf(请输入字符保存到test1中:); while(ch=

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

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