首页 计算机操作系统实验

计算机操作系统实验

举报
开通vip

计算机操作系统实验计算机操作系统实验 计算机操作系统实验报告 实验一:了解操作系统 一、 实验目的: 通过在虚拟机中装载操作系统、并对硬盘进行分区的操作对操作系统有进一步和深入的了解,学会使用VMware Workstation,掌握操作系统的安装和对磁盘进行分区等各种操作 二、 实验原理: 在VMware Workstation中装载操作系统、对硬盘进行分区 三、 实验器材: 硬件:计算机 软件:VMware Workstation、windows系统镜像 四、 实验步骤: 1.打开计算机并运行VMware Wor...

计算机操作系统实验
计算机操作系统实验 计算机操作系统 实验报告 化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单 实验一:了解操作系统 一、 实验目的: 通过在虚拟机中装载操作系统、并对硬盘进行分区的操作对操作系统有进一步和深入的了解,学会使用VMware Workstation,掌握操作系统的安装和对磁盘进行分区等各种操作 二、 实验原理: 在VMware Workstation中装载操作系统、对硬盘进行分区 三、 实验器材: 硬件:计算机 软件:VMware Workstation、windows系统镜像 四、 实验步骤: 1.打开计算机并运行VMware Workstation,新建虚拟机文件 2.在VMware Workstation中找到保存在本地的系统镜像文件并选择 3.启动虚拟机 4.在弹出对话框中选择PQ系统分区,对硬盘进行分区 5.重新启动虚拟机,选择系统安装位置 6.在装好的操作系统中进行各项操作,检查系统是否存在错误 7.实验完成,关闭VMware Workstation,关闭计算机 五、 实验心得: 通过本次实验中的各项操作,我学会了安装操作系统并对磁盘进行分区,了解了操作系统,掌握了安装操作系统以及对硬盘进行分区等的各项操作。 1 / 13 计算机操作系统实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 实验二:进程同步和互斥 一、 实验目的: 1、掌握临界资源,临界正概念及并发进程互斥,同步访问原理 2、学会使用高级语言进行多线程编程方法 3、掌握利用VC++语言线程库实现进程的互斥,条件竞争并编码实现。P.O操作,利用 P.O操作实现两个并发线程,对有界临界区的同步访问。 二、 实验要求: 1、知识基础:学生应在完成进程和线程及调度章节学习后进行 2、开发环境工具: 硬件平台----网络实验室 软件平台-----windows操作系统 VC++语言开发环境 三、 实验内容: 1、实现临界资源 临界区 进程或线程的定义与创建 2、合用两个并发运行的进程 实现互斥算法 和有界缓冲区的同步算法 四、 实验步骤: kan ra// Process.cpp : 定义控制台应用 } 程序的入口点。 else // { return 0; #include "stdafx.h" } #include } #include void Ssignal(int& s) using namespace std; { static int Mutex=1; s=s+1; static int S=5; } int MBlock=0; int BlockProcess() int SBlock=0; { class UiProcess if(Mutex<=0) { { public: MBlock=abs(Mutex); int Swait(int& s) return MBlock; { } s=s-1; if(S<=0) if(s<=0) { { SBlock=abs(S); return BlockProcess(); return SBlock; 2 / 13 计算机操作系统实验报告 } } } else if(j>0) void Print(string s) { { Print("当前因互斥阻塞的进 cout<Ssignal(Mutex); { //this->Ssignal(S); cout<Swait(S); { int j=this->Swait(Mutex); for(int i=0;i<10;i++) if(i==0 && j==0) { { UiProcess ui; Print("进程可以运行"); ui.Process(); } } else if(i>0) system("pause"); { return 0; Print("当前因资源阻塞的进} 程数目为:",i); 五、实验心得: 通过这次试验,加深了对进程同步的理解。 3 / 13 计算机操作系统实验报告 实验三:矩阵乘法 一、 实验目的: 熟悉矩阵乘法规则以及在计算中实现 二、 实验环器材: Windows XP ,vc++6.0 三、 实验内容: 将程序输入计算机,调试运行程序。 程序如下: #include void main() { int i,j,k; int a[5][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6},{5,6,7}}; //相乘的一个矩阵 int b[3][4] = {{1,2,3,4},{1,2,3,4},{1,2,3,4}}; int c[5][4]={0}; for(i=0; i<5; i++) for(j=0;j<4;j++) for(k=0;k<3;k++) { c[i][j]+=a[i][k]*b[k][j]; } /*以上是主要的乘法算法,三个for循环*/ /*以下是打印得到的矩阵*/ for(i=0; i<5; i++) { printf("\n"); for(j=0;j<4;j++) { printf("%3.2d",c[i][j]); } } getch(); /*输入任意字符结束程序,使程序停下来以便观察结果*/ } 四、 实验心得: 通过本次实验对三个for循环相乘时的过程分析,熟悉了矩阵相乘的算法以及二维数组在内 存中的存储形式 4 / 13 计算机操作系统实验报告 实验四:银行家算法 一、 实验目的: 1,理解死锁概念,银行家算法及安全性检测算法 2,掌握利用C语言 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实现银行家算数的基本进程 3,验证银行家算法对于避免死锁的作用。 二、 实验要求: 1,学生应完成如下章节的学习:进程和线程的调度,死锁 2,安装上述操作系统,使用C程序编程完成设计实现 三、 实验步骤: 1,定义并初始化进程及其资源结构 2,提供一个用户界面,用户利用它可动态输入进程和资源种类等相关参数 3,设计实现安全状态,检测和银行家死锁避免功能函数 四、 实验步骤: 1,开发一个变量程序 首先从文件中读入系统描述信息,包括进程的数目,资源的种类和数量,每个进程最大资源请求。程序自动根据文件内容创建一个当前系统描述 如:每类资源的数目用...准数组R[M]描述,m为资源的种类,每个[J]记录资源的RJ的数量。进程的最大需求矩阵用P[n] [m]表示,P[3][J]记录进程Pi对资源RJ的最大需求。分配矩阵和请求矩阵,可使用二维数组表示。 2,用户输入一个请求, 格式类似:request(i,j,k) 求release(i,j,k),在这里,i表示进程Pi,J表示进程PJ,K为 申请 关于撤销行政处分的申请关于工程延期监理费的申请报告关于减免管理费的申请关于减租申请书的范文关于解除警告处分的申请 释放的数量。对于每一个请求,系统回应是满足要求,还是拒绝分配。 3,设定一个申请和释放序列,无任何检测和避免死锁的算法,分配会导致死锁 4,设定一个申请和释放序列,按照安全性算法进行设计,回应系统是否安全。然后实现银行家算法,确保没有死锁的分配 五、 算法如下: #include { #include struct type value; struct type struct allocation *next; { }; int a; struct max int b; { int c; struct type value; }; struct max *next; struct allocation }; 5 / 13 计算机操作系统实验报告 struct available *availablehead,*workhead,*worktemp; struct need { *needhead,*need1,*need2,*needtemp; struct type value; struct path struct available *next; *pathhead,*path1,*path2,*pathtemp; }; struct finish struct need *finishhead,*finish1,*finish2,*finishtemp; { struct type value; printf("请输入进程的数目\n"); struct need *next; scanf("%d",&p); }; for(i=0;ivalue.a); }; printf("\t当前资源类型是 %c\t",'b'); scanf("%d",&alloc1->value.b); void main() printf("\t当前资源类型是 %c\t",'c'); { scanf("%d",&alloc1->value.c); int p,status=0,i,j,temp,flag=0; flag++; struct allocation allochead=alloc1; *allochead,*alloc1,*alloc2,*alloctemp; } struct max else *maxhead,*max1,*max2,*maxtemp; { struct available 6 / 13 计算机操作系统实验报告 alloc2=(struct scanf("%d",&max1->value.b); allocation*)malloc(sizeof(struct printf("\t当前资源类型是 %c\t",'c'); allocation)); scanf("%d",&max1->value.c); printf("\t当前资源类型是 %c\t",'a'); maxhead=max1; scanf("%d",&alloc2->value.a); flag++; printf("\t当前资源类型是 %c\t",'b'); } scanf("%d",&alloc2->value.b); else printf("\t当前资源类型是 %c\t",'c'); { scanf("%d",&alloc2->value.c); max2=(struct max*)malloc(sizeof(struct max)); alloc1->next=alloc2; printf("\t当前资源类型是 %c\t",'a'); alloc1=alloc2; scanf("%d",&max2->value.a); flag++; printf("\t当前资源类型是 %c\t",'b'); } scanf("%d",&max2->value.b); } printf("\t当前资源类型是 s %c\t",'c'); alloc2->next=NULL; scanf("%d",&max2->value.c); flag=0; max1->next=max2; max1=max2; for(i=0;inext=NULL; if(flag==0) flag=0; { maxhead=max1=max2=(struct printf("\n请输入可以利用是资源数目\n"); max*)malloc(sizeof(struct max)); availablehead=workhead=(struct printf("\t当前资源类型是 %c\t",'a'); available*)malloc(sizeof(struct available)); scanf("%d",&max1->value.a); printf("\n"); printf("\t当前资源类型是 %c\t",'b'); printf("\t当前资源类型是 %c\t",'a'); 7 / 13 计算机操作系统实验报告 need2=(struct need*)malloc(sizeof(struct scanf("%d",&availablehead->value.a); need)); printf("\t当前资源类型是 %c\t",'b'); need2->value.a=(maxtemp->value.a)-(alloscanf("%d",&availablehead->value.b); ctemp->value.a); printf("\t当前资源类型是 %c\t",'c'); need2->value.b=(maxtemp->value.b)-(allo scanf("%d",&availablehead->value.c); ctemp->value.b); workhead=availablehead; need2->value.c=(maxtemp->value.c)-(allo ctemp->value.c); workhead->value=availablehead->value; flag=0; need1->next=need2; need1=need2; alloctemp=allochead; flag++; maxtemp=maxhead; } for(i=0;inext; { alloctemp=alloctemp->next; if(flag==0) } { need2->next=NULL; needhead=need1=need2=(struct need*)malloc(sizeof(struct need)); flag=0; need1->next=need2->next=NULL; need1->value.a=(maxtemp->value.a)-(allofor(i=0;ivalue.a); { need1->value.b=(maxtemp->value.b)-(alloif(flag==0) ctemp->value.b); { need1->value.c=(maxtemp->value.c)-(allo finishhead=finish1=finish2=(struct ctemp->value.c); finish*)malloc(sizeof(struct finish)); needhead=need1; finish1->next=finish2->next=NULL; flag++; finish1->value=0; } finishhead=finish1; else flag++; { } 8 / 13 计算机操作系统实验报告 else { { worktemp->value.a+=alloctemp->value.a; finish2=(struct finish*)malloc(sizeof(struct worktemp->value.b+=alloctemp->value.b; finish)); worktemp->value.c+=alloctemp->value.c; finish2->value=0; finishtemp->value=1; if(flag==0) finish1->next=finish2; { finish1=finish2; pathhead=path1=path2=(struct flag++; path*)malloc(sizeof(struct path)); } path1->next=path2->next=NULL; } path1->value=j+1; finish2->next=NULL; pathhead=path1; flag=0; flag++; } for(temp=0;tempvalue=j+1; finishtemp=finishhead; path1->next=path2; worktemp=workhead; path1=path2; flag++; for(j=0;jnext; if(finishtemp->value==0) alloctemp=alloctemp->next; { needtemp=needtemp->next; if((needtemp->value.a<=worktemp->value .a)&&(needtemp->value.b<=worktemp->v} alue.b)&&(needtemp->value.c<=worktempelse ->value.c)) { 9 / 13 计算机操作系统实验报告 finishtemp=finishtemp->next; for(temp=0;tempnext; { needtemp=needtemp->next; if(finishtemp->value==0) } { printf("\n警告!当前系统是不安全的\n"); } else exit(0); { } finishtemp=finishtemp->next; finishtemp=finishtemp->next; alloctemp=alloctemp->next; } printf("\n当前系统是安全的!\n"); needtemp=needtemp->next; printf("\n安全序列为: \n"); } for(i=0;ivalue); path2->next=NULL; pathhead=pathhead->next; finishtemp=finishhead; } pathtemp=pathhead; } 五、实验心得: 程序基本实现了银行家算法的功能,并在其基础上考虑了输出显示的格式的美观性、输入错误要求重新输入等几个方面,尽可能的使程序完整一些。 这段程序算是三个试验中最困难最复杂的一个,由于能力有限,所以在紧张的的编写和调试过程中遇到了许多的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,通过查询资料、翻阅课本、向同学请教、多次调试等方法逐渐解决了大部分问题,编写的过程中也有比较一些算法的优劣性,找出比较好的算法,收获非常大。 通过本次实验,加深了我对银行家算法的理解。实验中遇到了许多问题,通过网络这个大平台问题最终也得到了解决。通过这次的编程,使得自己的动手能力又增强了许多,同时也加深了对理论知识的理解。 10 / 13 计算机操作系统实验报告 实验五:文件操作 一、实验目的: 1( 掌握文件系统的工作原理。 2( 理解文件系统的主要数据结构。 3( 编程实现文件操作。 二、实验内容: 1( 设计并实现一个一级(单用户)文件系统程序 提供以下操作: 文件创建/删除接口命令create/delete; 目录创建/删除接口命令midair/rmdir; 显示目录内容命令ls。 创建的文件不要求格式和内容 2( 在以上基础上世纪并实现一个二级文件系统 具备提供用户登录 文件、目录要有权限 三、程序源代码: // FileControl.cpp: 主项目文件。 String ^dir="a";//设置目录名,注意/* 路径分量间用两个\\隔开。 程序功能:对文件进行操作:判断文件是否 String ^filename="b";//设置文件明 存在、创建新文件、读文件、写文件、创建 String ^path=dir+filename; 目录、删除目录、删除文件、将文件创建到 TextReader tReader(path);//读文件 类 指定目录中。 作者: TextWriter tWriter(path);//写文件日期:2011-12-4 类 */ if(File::Exists(path))//判断文件#include "stdafx.h" 是否存在,若存在则可直接读写,否则创建 文件 using namespace System; { using namespace System::IO; Console::WriteLine(L"文件存 在~"); int main(array ^args) //直接对文件进行读操作,可以修{ 改数据 /* //写文件操作。 File类可用于创建文件、查找文件、设 } 置文件等 else Directory类可用于创建目录、查找目 { 录、设置目录等 File::CreateText(path);//创建 */ 文件 11 / 13 计算机操作系统实验报告 //新建文件应先写入数据,然后在 exit(1); 读取操作 } //此处调用tWriter对象写入数 printf("请输入字符保存到test2中:"); 据,数据可为任意内容。 while((ch=getchar())!='\n') } fputc(ch,p3); Console::ReadKey(); return 0; fclose(p1); } if((p1=fopen("test.txt","a+"))==NULL) 四、参考程序: { 1.#include printf("can not open the file :"); #include exit(1); } void main() rewind(p2); { rewind(p3); FILE *p1,*p2,*p3; while((ch=fgetc(p2))!=EOF) char ch; fputc(ch,p1); while((ch=fgetc(p3))!=EOF) if((p1=fopen("test.txt","w"))==NULL) fputc(ch,p1); { fclose(p1); printf("can not open the file :"); fclose(p2); exit(1); fclose(p3); } printf("合并完成,按任何键结束程序: printf("请输入字符保存到test中:"); "); while((ch=getchar())!='\n') getchar(); fputc(ch,p1); } 2. #include if((p2=fopen("test1.txt","w+"))==NULL ) int main() { { printf("can not open the file :"); int a[5], b[4], c[9] = {0}; exit(1); int i, j, k = 5; } int flag; printf("请输入字符保存到test1中:"); FILE *fp; while((ch=getchar())!='\n') if ((fp = fopen("a.txt", "r")) == fputc(ch,p2); NULL) { printf("open a.txt fails, if((p3=fopen("test2.txt","w+"))==NULLexit...\n"); ) return -1; { } printf("can not open the file :"); 12 / 13 计算机操作系统实验报告 for (i = 0; i < 5; i++) { if (flag) c[k++] = b[i]; fscanf(fp, "%d", &a[i]); } c[i] = a[i]; fclose(fp); } if ((fp = fopen("b.txt", "w")) == for (i = 0; i < 4; i++) NULL) { { flag = 1; printf("open b.txt fails, fscanf(fp, "%d", &b[i]); exit...\n"); for (j = 0; j < 5; j++) return -2; if (b[i] == a[j]) } { for (i = 0; i < k; i++) flag = 0; fprintf(fp, "%d ", c[i]); break; fclose(fp); } return 0; } 五、实验心得: 通过这次试验,了解文件系统的工作原理,还有与其相关的数据结构。虽然对较为复杂 的编程还不怎么熟练,但随着后续的学习会慢慢掌握的。 13 / 13
本文档为【计算机操作系统实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_003124
暂无简介~
格式:doc
大小:42KB
软件:Word
页数:17
分类:生活休闲
上传时间:2018-10-27
浏览量:45