版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.实验报告实验课程: 计算机操作系统 学生姓名: XXX 学 号: XXXX 专业班级: 软件 2014年12月25日目录实验一 熟悉Windows XP中的进程和线程3实验二 进程调度7实验三 死锁避免银行家算法的实现16实验四 存储管理22实验一 熟悉Windows XP中的进程和线程 一、 实验名称熟悉Windows XP中的进程和线程二、 实验目的1、熟悉Windows中任务管理器的使用。2、通过任务管理器识别操作系统中的进程和线程的相关信息。 3、掌握利用spy+.exe来察看Windows中各个任务的更详细信息。三、 实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键
2、Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。2、 调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息序号进程名称进程ID线程数量占用内存优先级占CPU时间虚拟内存1Bddownloader.exe7312329980k标准0:00:009200k2Taskmgr.exe722834124k高0:00:043372k3BaiDuSdTray.exe5144308588k标准0:00:1543652k4QQprotect.exe46681120700k标准0:00:0123572k5TX
3、Platform.exe590831716k标准0:00:002128k6Explorer.exe58161730340k标准0:00:1121720k3、 启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。再从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是 任务管理器无法结束进程 ,原因是 该系统是系统进程 。4、 在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化 桌面上图标菜单都消失了 、得
4、到的结论 explorer.exe是管理桌面图标的文件 (说出explorer.exe进程的作用)。5、运行“spy+.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:进程:explorer.exe 中的各个线程序号进程ID线程ID基本优先级当前优先级CPU时间上下文开关1000016B800000104 8100:00:0649983362000016B8000003EC15150:00:0083000016B8000009048100:00:00114000016B800000A0C8100:00:00135000016B80
5、0001280880:00:078171386000016B8000013D88100:00:0023266、注意某些线程前有“”,如图所示:,说明二者之间的差异 前有“+”其器线程下有窗口 。四、 心得体会 通过本次实验,我了解到了windows系统中进程的管理与操作,我了解了如何切出任务管理器,任务管理器应用与其他与进程相关的知识,明白了有些系统程序不能够关闭,系统中的进程与线程虽然很多,但是其中有许多关联,只要弄清楚其中的关联那么就能够运用好进程与线程,达到我们的目的。 每个进程下都包含着许多线程,我们控制进程来达到控制线程的目的只有我们了解好掌握还进程,我们才能更好的运用线程,更好的控
6、制运用计算机。实验二 进程调度一、 实验名称进程调度二、 实验目的1、使学生进一步理解进程的概念,并在此基础上掌握有关PCB、进程队列的概念。2、掌握进程基本状态的转化;3、 掌握进程调度的策略、具体实施方法以及系统性能的评价方法。三、实验结果分析简化的实验代码如下:#include#include/调用STL中的优先队列 using namespace std;/定义一个PCB进程类 class PCBpublic:char name10;/进程的名字 int runtime;/该进程的运行时间 int priority;/该进程的优先级 char state;/该进程的状态 PCB* ne
7、xt;/指向下个进程的指针 void print()const/输出进程的信息 cout(name=name,runtime=runtime,state=state,priority=priority)endl;class PCBSortCriterion/优先队列的优先准则类 public:bool operator()(const PCB & p1,const PCB & p2)const/仿函数确定优先准则,从大到小 return (p1.priority p2.priority);PCB* pcb=new PCBnumber;/一个PCB的数组用来保存就绪进程PCB* p1=new P
8、CBnumber;/一个PCB的数组用来保存已经结束的进程coutendl;PCB p;/一个PCB型的变量,用来保存队首元素int i;for( i=0 ;i=number-1;i+)/建立进程信息 cout请输入pcbi的信息!endl;cout以(name,runtime,state(初始为R),priority)格式输入!;cinpcbi.runtime;cinpcbi.state;cinpcbi.priority;coutendl;typedef priority_queuePCB,vector ,PCBSortCriterion pQueue;/以 /PCBSor
9、tCriterion为/优先准则的优先队列 pQueue q,/ 优先队列pQueue的一个对象,对这个队列进行主操作temp;/优先队列pQueue的一个对象,是q的一个拷贝对象,作为实现打印输出/的一个中间变量for(int j=0;j=number-1;j+)/将进程入队建立优先队列 q.push(pcbj);/输出进程控制块的初始状态信息cout进程控制块的初始状态信息为:endl; temp=q;while(!temp.empty()p=temp.top();p.print();temp.pop();coutendl;int n=0, /进程执行的次数 m=0;/完成进程的个数 wh
10、ile(!q.empty()/对进程进行调度 cout第+n次运行;p=q.top();coutq.top().name!endl;p.runtime-=1;p.priority-=1;q.pop();if(p.runtime!=0)/表明该进程还未执行完 ,继续入队进行操作 q.push(p);else /表明该进程已经执行完,设置其状态为Z,并将其保存到p1中 p.state=Z;p1m+=p;cout运行后的状态为:0)/输出完成的进程的信息 for( i=0;i=m-1;i+)p1i.print();coutendl;coutendl;system(pause);return 0;in
11、t main()coutsetw(40)进程模拟调度设计endlendl;cout提示:输入1选择先来先服务算法,输入2选择优先级法,输入3选择轮转法,输入4退出程序endlendl;cout 1、先来先服务n 2、优先级法n 3、时间片轮转法n 4.多级反馈轮转法n 5.动态优先级法n 6.退出endlendl;int choice;int go=1;while(go)coutchoice;switch(choice)/调用先来先服务算法求解case 1: FCFS();break;/调用优先级法求解case 2: PRIO();break; /调用时间片轮转法求解case 3: LZF()
12、;break;/调用多级反馈轮转法求解case 4: DJFKLZ();break; case 5: DTYXJF();break;case 6: cout退出endl;go=0;break;/返回首页default: cout选择有误,请重新输入选择!endl;break;system(pause);return 0;程序运行结果:初始化界面:先来先服务法:静态优先级法:时间片轮转法:. 动态优先级法: 多级反馈轮转法: 四、心得体会1、通过这次实验使得我对进程调度几种算法的思想以及实现原理有了进一步的认识和掌握。在设计多级反馈轮转法的算法以及实现代码时,遇到了代码不会写,算法理解不够透彻的
13、问题,而导致在这个问题上纠结了很久。最后还是在查阅资料以及同组成员的讨论下解决了。2、这次实验使用的编程语言是C。由于在以前学习C的时候掌握的不是很好和很多知识点都忘记了以至于在实验的很多地方(如实验界面和代码的精简)做得不是很好,以后得注意对C的学习和巩固。3、也使我更能体会到集体的力量永远要大于个人。在实验中我们遇见的很多问题基本上都是一起讨论才解决的。4. 一开始以为涉及到操作系统的模拟编程的都是高不可攀的,然而在仔细阅读课本以及实验说明后,发现只要弄清楚了优先级数调度的实现原理后其实并不难,用优先队列就可以了。通过这个实验一来加深了对优先级数调度的理解,二来也加强了自己的编程实践能力!
14、实验三 死锁避免银行家算法的实现一、 实验名称死锁避免银行家算法的实现二、 实验目的1、 掌握死锁产生的原因和必要条件。2、 掌握银行家算法的实现三、 实验结果分析#include using namespace std;#define mp 50/最大进程数#define mr 100/最大资源数int keyongmr;/可用资源数组int MAXmpmr;/最大需求矩阵int fenpeimpmr;/分配矩阵int needmpmr;/剩余需求矩阵bool FINISHmp;/系统是否有足够资源分配int pmp; /记录序列int Workmr; /工作数组int m,n; /m个进程
15、,n个资源int l=0; void Init();/初始化bool Safe();void jc();void main() Init(); Safe();if(l!=m) jc();void Init()/初始化算法 int i,j;coutm; coutn; cout请输入每个进程最多所需的各资源数,按照mxn矩阵输入endl; for(i=0;im;i+) for(j=0;jMAXij; cout请输入每个进程已分配的各资源数,也按照mxn矩阵输入endl; for(i=0;im;i+) for(j=0;jfenpeiij; needij=MAXij-fenpeiij; if(need
16、ij0) cout您输入的第i+1个进程所拥有的第j+1个资源数错误,请重新输入:endl; j-; continue; cout请输入各个资源现有的数目:endl; for(i=0;ikeyongi; cout剩余需求矩阵:endl;for(i=0;im;i+) for(j=0;jn;j+) coutneedij ; if(j=n-1)coutendl; cout各资源现有数量:endl; for(i=0;in;i+) coutkeyongi ; coutendl; bool Safe() /*安全性算法*/ int i,j,k; for(i=0;in;i+) Worki=keyongi;
17、for(i=0;im;i+) FINISHi=false; /判断进程i是否已执行 for(i=0;im;i+) if(FINISHi=true) continue; else for(j=0;jWorkj) break; if(j=n) FINISHi=true; for(k=0;kn;k+) Workk+=fenpeiik; /进程i执行完后回收资源 pl+=i; i=-1; else continue; if(l=m) cout系统是安全的endl; cout安全序列:endl; for(i=0;il;i+) coutpi; if(i!=l-1) cout; coutendl; retu
18、rn true; cout会发生死锁,发生死锁的进程是:endl; for(i=0;im;i+)if(FINISHi=false)couti ;coutendl; return false;void jc() int i,j,k,q;i=0;while(im&FINISHi=false) /寻找没执行的for(j=0;jn;j+) keyongj+=fenpeiij; /回收 fenpeiij=0;if(Safe()cout死锁已解除endl;elsei+;Safe();输入进程已拥有资源数总需求资源数1()(.)2()()3(0.0.3
19、.4)()4()()5()()四、心得体会通过这次实验,我了解了有关资源申请分配、检测以及避免死锁等概念,了解死锁和避免死锁的具体实施方法。死锁的解除实质上就是如何让释放资源的进程能够继续运行.为了解除死锁就要剥夺资源,实验四 存储管理一、实验名称储存管理二、实验目的1、掌握物理内存和虚拟内存的基本概念,理解绝对地址和相对地址;2、了解Windows中内存管理机制,掌握页式虚拟存储;3、掌握虚拟存储管理中有关缺页处理方法等内容,巩固有关虚拟存储管理的教学内容;4、理解内存分配原理、特别是以页面为单位的虚拟内存分配原理;5、掌
20、握常用的页面置换算法。三、实验结果分析#define MAXSIZE 20#include void main()int label=0; /标记此页是否已经装入内存int input=0; /用于输入作业号int worknum=0; /记录作业个数int storesize=0; /系统分配的存储块数int interrupt=0; /中断次数int quenceMAXSIZE; /队列,FIFO算法的主要数据结构int workstepMAXSIZE; /用于记录作业走向/*初始化*/for(int i=0;iMAXSIZE;i+)quencei=0;workstepi=0;coutstoresize;cout请输入作业走向(输入0结束):n;for(int j=0;jMAXSIZE;j+)cout页面号:input;workstepj=input;if(input=0)cout输入结束!n;break;worknum+;if(workstep0=0)cout未输入任何作业,系统将退出!n;return;cout置换情况如下:n;fo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论