当前位置:文档之家› 计算机操作系统实验课实验报告

计算机操作系统实验课实验报告

实验报告实验课程: 计算机操作系统学生姓名: XXX 学号: XXXX专业班级:软件2014年12月25日目录实验一熟悉Windows XP中的进程和线程错误!未定义书签。

实验二进程调度 ..... 错误!未定义书签。

实验三死锁避免—银行家算法的实现错误!未定义书签。

实验四存储管理 ..... 错误!未定义书签。

实验一熟悉Windows XP中的进程和线程一、实验名称熟悉Windows XP中的进程和线程二、实验目的1、熟悉Windows中任务管理器的使用。

2、通过任务管理器识别操作系统中的进程和线程的相关信息。

3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。

三、实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“”。

2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息序号进程名称进程ID线程数量占用内存优先级占CPU时间虚拟内存173********k标准0:00:009200k 2722834124k高0:00:043372k 35144308588k标准0:00:1543652k 446681120700k标准0:00:0123572k 5590831716k标准0:00:002128k 658161730340k标准0:00:1121720k3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。

再从任务管理器中分别找到下列程序:、、、,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该系统是系统进程。

4、在任务管理器中找到进程“”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论是管理桌面图标的文件(说出进程的作用)。

5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“”的各项信息,并填写下表:进程:中的各个线程序号进程ID线程ID基本优先级当前优先级CPU时间上下文开关1000016B800000104 8100:00:064998336 2000016B8000003EC15150:00:008 3000016B8000009048100:00:0011 4000016B800000A0C8100:00:0013 5000016B800001280880:00:07817138 6000016B8000013D88100:00:002326 6、注意某些线程前有“+”,如图所示:,说明二者之间的差异前有“+”其器线程下有窗口。

四、心得体会通过本次实验,我了解到了windows系统中进程的管理与操作,我了解了如何切出任务管理器,任务管理器应用与其他与进程相关的知识,明白了有些系统程序不能够关闭,系统中的进程与线程虽然很多,但是其中有许多关联,只要弄清楚其中的关联那么就能够运用好进程与线程,达到我们的目的。

每个进程下都包含着许多线程,我们控制进程来达到控制线程的目的只有我们了解好掌握还进程,我们才能更好的运用线程,更好的控制运用计算机。

实验二进程调度一、实验名称进程调度二、实验目的1、使学生进一步理解进程的概念,并在此基础上掌握有关PCB、进程队列的概念。

2、掌握进程基本状态的转化;3、掌握进程调度的策略、具体实施方法以及系统性能的评价方法。

三、实验结果分析简化的实验代码如下:#include<iostream>#include<queue>ame;cin>>pcb[i].runtime;cin>>pcb[i].state;cin>>pcb[i].priority;cout<<endl;}typedef priority_queue<PCB,vector<PCB> ,PCBSortCriterion>pQueue;ame<<"!"<<endl;=1;=1;();if!=0)rint();cout<<endl;cout<<endl;}system("pause");return 0;}int main(){cout<<setw(40)<<"进程模拟调度设计"<<endl<<endl;cout<<"提示:输入1选择先来先服务算法,输入2选择优先级法,输入3选择轮转法,输入4退出程序"<<endl<<endl;cout<<" 1、先来先服务\n 2、优先级法\n 3、时间片轮转法\n 4.多级反馈轮转法\n 5.动态优先级法\n 6.退出"<<endl<<endl;int choice;int go=1;while(go){cout<<"请输入你的选择:";cin>>choice;switch(choice){动态优先级法:多级反馈轮转法:四、心得体会1、通过这次实验使得我对进程调度几种算法的思想以及实现原理有了进一步的认识和掌握。

在设计多级反馈轮转法的算法以及实现代码时,遇到了代码不会写,算法理解不够透彻的问题,而导致在这个问题上纠结了很久。

最后还是在查阅资料以及同组成员的讨论下解决了。

2、这次实验使用的编程语言是C。

由于在以前学习C的时候掌握的不是很好和很多知识点都忘记了以至于在实验的很多地方(如实验界面和代码的精简)做得不是很好,以后得注意对C的学习和巩固。

3、也使我更能体会到集体的力量永远要大于个人。

在实验中我们遇见的很多问题基本上都是一起讨论才解决的。

4.一开始以为涉及到操作系统的模拟编程的都是高不可攀的,然而在仔细阅读课本以及实验说明后,发现只要弄清楚了优先级数调度的实现原理后其实并不难,用优先队列就可以了。

通过这个实验一来加深了对优先级数调度的理解,二来也加强了自己的编程实践能力!实验三死锁避免—银行家算法的实现一、实验名称死锁避免—银行家算法的实现二、实验目的1、掌握死锁产生的原因和必要条件。

2、掌握银行家算法的实现三、实验结果分析#include <iostream>using namespace std;#define mp 50了解除死锁就要剥夺资源,实验四存储管理一、实验名称储存管理二、实验目的1、掌握物理内存和虚拟内存的基本概念,理解绝对地址和相对地址;2、了解Windows中内存管理机制,掌握页式虚拟存储;3、掌握虚拟存储管理中有关缺页处理方法等内容,巩固有关虚拟存储管理的教学内容;4、理解内存分配原理、特别是以页面为单位的虚拟内存分配原理;5、掌握常用的页面置换算法。

三、实验结果分析#define MAXSIZE 20#include <>void main(){int label=0; //标记此页是否已经装入内存int input=0; //用于输入作业号int worknum=0; //记录作业个数int storesize=0; //系统分配的存储块数int interrupt=0; //中断次数int quence[MAXSIZE]; //队列,FIFO算法的主要数据结构int workstep[MAXSIZE]; //用于记录作业走向/*初始化*/for(int i=0;i<MAXSIZE;i++){quence[i]=0;workstep[i]=0;}cout<<"请输入存储区块数:";cin>>storesize;cout<<"请输入作业走向(输入0结束):\n";for(int j=0;j<MAXSIZE;j++){cout<<"页面号:"<<j+1;cin>>input;workstep[j]=input;if(input==0){cout<<"输入结束!\n";break;}worknum++;}if(workstep[0]==0){cout<<"未输入任何作业,系统将退出!\n";return;}cout<<"置换情况如下:\n";for(int k=0;k<worknum;k++){label=0;/*看队列中是否有相等的页号或空位置*/for(int l=0;l<storesize;l++){/*是否有相等的页号*/if(quence[l]==workstep[k]){cout<<"内存中有"<<workstep[k]<<"号页面,无须中断!\n";label=1; //标记此页面已装入内存break;}/*是否有空位置*/if(quence[l]==0){quence[l]=workstep[k];cout<<"发生中断,但内存中有空闲区,"<<workstep[k]<<"号页面直接调入!\n";interrupt++;label=1;break;}}/*上述情况都不成立则调出对首,将调入页面插入对尾*/if(label==0){cout<<"发生中断,将"<<quence[0]<<"号页面调出,"<<workstep[k]<<"号装入!\n";interrupt++;for(int m=0;m<storesize;m++){quence[m]=quence[m+1];}quence[storesize-1]=workstep[k];}}cout<<"作业"<<worknum<<"个,"<<"中断"<<interrupt<<"次,"<<"缺页率:"<<float(interrupt)/float(worknum)*100<<"%\n";}四、心得体会通过上机,我了解了许多关于操作系统的专业知识。

相关主题