已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机操作系统实验报告实验一:了解操作系统一、 实验目的:通过在虚拟机中装载操作系统、并对硬盘进行分区的操作对操作系统有进一步和深入的了解,学会使用VMware Workstation,掌握操作系统的安装和对磁盘进行分区等各种操作二、 实验原理:在VMware Workstation中装载操作系统、对硬盘进行分区三、 实验器材:硬件:计算机 软件:VMware Workstation、windows系统镜像四、 实验步骤:1.打开计算机并运行VMware Workstation,新建虚拟机文件2.在VMware Workstation中找到保存在本地的系统镜像文件并选择3.启动虚拟机4.在弹出对话框中选择PQ系统分区,对硬盘进行分区5.重新启动虚拟机,选择系统安装位置6.在装好的操作系统中进行各项操作,检查系统是否存在错误7.实验完成,关闭VMware Workstation,关闭计算机五、 实验心得:通过本次实验中的各项操作,我学会了安装操作系统并对磁盘进行分区,了解了操作系统,掌握了安装操作系统以及对硬盘进行分区等的各项操作。 实验二:进程同步和互斥一、 实验目的:1、掌握临界资源,临界正概念及并发进程互斥,同步访问原理2、学会使用高级语言进行多线程编程方法3、掌握利用VC+语言线程库实现进程的互斥,条件竞争并编码实现。P.O操作,利用 P.O操作实现两个并发线程,对有界临界区的同步访问。二、 实验要求:1、知识基础:学生应在完成进程和线程及调度章节学习后进行2、开发环境工具: 硬件平台-网络实验室 软件平台-windows操作系统 VC+语言开发环境三、 实验内容:1、实现临界资源 临界区 进程或线程的定义与创建2、合用两个并发运行的进程 实现互斥算法 和有界缓冲区的同步算法四、 实验步骤: 13 / 13kan ra/ Process.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include #include using namespace std;static int Mutex=1;static int S=5;int MBlock=0;int SBlock=0;class UiProcesspublic:int Swait(int& s)s=s-1;if(s=0)return BlockProcess();elsereturn 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 iSwait(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;五、实验心得: 通过这次试验,加深了对进程同步的理解。 实验三:矩阵乘法一、 实验目的:熟悉矩阵乘法规则以及在计算中实现二、 实验环器材: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循环*/*以下是打印得到的矩阵*/for(i=0; i5; i+)printf(n); for(j=0;j4;j+)printf(%3.2d,cij);getch(); /*输入任意字符结束程序,使程序停下来以便观察结果*/四、 实验心得:通过本次实验对三个for循环相乘时的过程分析,熟悉了矩阵相乘的算法以及二维数组在内存中的存储形式实验四:银行家算法一、 实验目的: 1,理解死锁概念,银行家算法及安全性检测算法 2,掌握利用C语言设计实现银行家算数的基本进程 3,验证银行家算法对于避免死锁的作用。二、 实验要求: 1,学生应完成如下章节的学习:进程和线程的调度,死锁 2,安装上述操作系统,使用C程序编程完成设计实现三、 实验步骤: 1,定义并初始化进程及其资源结构 2,提供一个用户界面,用户利用它可动态输入进程和资源种类等相关参数 3,设计实现安全状态,检测和银行家死锁避免功能函数四、 实验步骤: 1,开发一个变量程序 首先从文件中读入系统描述信息,包括进程的数目,资源的种类和数量,每个进程最大资源请求。程序自动根据文件内容创建一个当前系统描述 如:每类资源的数目用.准数组RM描述,m为资源的种类,每个J记录资源的RJ的数量。进程的最大需求矩阵用Pn m表示,P3J记录进程Pi对资源RJ的最大需求。分配矩阵和请求矩阵,可使用二维数组表示。 2,用户输入一个请求, 格式类似:request(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 maxstruct 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,*alloc2,*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;ivalue.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当前资源类型是 %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);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当前资源类型是 %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=(maxtemp-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)-(alloctemp-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);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+=alloctemp-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-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;finishtemp=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;五、实验心得:程序基本实现了银行家算法的功能,并在其基础上考虑了输出显示的格式的美观性、输入错误要求重新输入等几个方面,尽可能的使程序完整一些。这段程序算是三个试验中最困难最复杂的一个,由于能力有限,所以在紧张的的编写和调试过程中遇到了许多的问题,通过查询资料、翻阅课本、向同学请教、多次调试等方法逐渐解决了大部分问题,编写的过程中也有比较一些算法的优劣性,找出比较好的算法,收获非常大。通过本次实验,加深了我对银行家算法的理解。实验中遇到了许多问题,通过网络这个大平台问题最终也得到了解决。通过这次的编程,使得自己的动手能力又增强了许多,同时也加深了对理论知识的理解。实验五:文件操作一、实验目的:1 掌握文件系统的工作原理。2 理解文件系统的主要数据结构。3 编程实现文件操作。二、实验内容:1 设计并实现一个一级(单用户)文件系统程序提供以下操作:文件创建/删除接口命令create/delete;目录创建/删除接口命令midair/rmdir;显示目录内容命令ls。创建的文件不要求格式和内容2 在以上基础上世纪并实现一个二级文件系统具备提供用户登录文件、目录要有权限三、程序源代码: / FileControl.cpp: 主项目文件。/*程序功能:对文件进行操作:判断文件是否存在、创建新文件、读文件、写文件、创建目录、删除目录、删除文件、将文件创建到指定目录中。作者:日期:2011-12-4*/#include stdafx.husing namespace System;using namespace System:IO;int main(array args)/*File类可用于创建文件、查找文件、设置文件等Directory类可用于创建目录、查找目录、设置目录等*/String dir=a;/设置目录名,注意路径分量间用两个隔开。String filename=b;/设置文件明String path=dir+filename;TextReader tReader(path);/读文件类TextWriter tWriter(path);/写文件类if(File:Exists(path)/判断文件是否存在,若存在则可直接读写,否则创建文件 Console:WriteLine(L文件存在!);/直接对文件进行读操作,可以修改数据/写文件操作。elseFile: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=getchar()!=n) fputc(ch,p2); if(p3=fopen(test2.txt,w+)=NULL) printf(can not open the file :); exit(1); printf(请输入字符保存到test2中:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货物装卸收费合同范本
- 牙齿耗材采购合同范本
- 第十九课 智慧物流教学设计-2025-2026学年初中信息技术(信息科技)九年级浙教版(广西、宁波)
- 牧场雇佣工人合同范本
- 火车车厢维修合同范本
- 物业临时看管合同范本
- 牧场养殖服务合同范本
- 租房合同养狗补充协议
- 美国购买游艇合同范本
- 货物渣土运输合同范本
- 仓储管理招聘题库及答案
- 采购玉米居间服务协议书
- 专题12 记叙文阅读写人记事专项训练(解析版)
- 乌鲁木齐市辅警考试题库2025(附答案)
- 预防术中获得性压力性损伤专家共识
- 安全生产考核巡查办法全文
- 售后配件管理制度
- 五年级上册数学同步拓展课件-取球问题 人教版(共11张PPT)
- 铁路工程提、抽、压、注水文地质试验教程
- HR工作法律手册(人力资源管理全案-法务篇)
- 第5章金属自由电子论
评论
0/150
提交评论