
计算机操作系统实验.doc
13页计算机操作系统实验报告实验一:了解操作系统一、 实验目的:通过在虚拟机中装载操作系统、并对硬盘进行分区的操作对操作系统有进一步和深入的了解,学会使用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 Swait(S); int j=this->Swait(Mutex); if(i==0 && j==0) { Print("进程可以运行"); } else if(i>0) { Print("当前因资源阻塞的进程数目为:",i); } else if(j>0) { Print("当前因互斥阻塞的进程数目为:",j); } this->Ssignal(Mutex); //this->Ssignal(S); }};int _tmain(int argc, _TCHAR* argv[]){ for(int i=0;i<10;i++) { UiProcess ui; ui.Process(); } system("pause"); return 0;}五、实验心得: 通过这次试验,加深了对进程同步的理解。
实验三:矩阵乘法一、 实验目的:熟悉矩阵乘法规则以及在计算中实现二、 实验环器材:Windows XP ,vc++6.0三、 实验内容:将程序输入计算机,调试运行程序程序如下:#include
二、 实验要求: 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 value.a);printf("\t当前资源类型是 %c\t",'b');scanf("%d",&alloc1->value.b);printf("\t当前资源类型是 %c\t",'c');scanf("%d",&alloc1->value.c);flag++;allochead=alloc1;}else{alloc2=(struct allocation*)malloc(sizeof(struct allocation));printf("\t当前资源类型是 %c\t",'a');scanf("%d",&alloc2->value.a);printf("\t当前资源类型是 %c\t",'b');scanf("%d",&alloc2->value.b);printf("\t当前资源类型是 %c\t",'c');scanf("%d",&alloc2->value.c);alloc1->next=alloc2;alloc1=alloc2;flag++;}}alloc2->next=NULL;flag=0;f。












