ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:256.79KB ,
资源ID:8358763      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8358763.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机操作系统实验课实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、计算机操作系统实验课实验报告实验报告实验课程: 计算机操作系统 学生姓名: XXX 学 号: XXXX 专业班级: 软件 2014年12月25日实验一 熟悉Windows XP中的进程和线程 一、 实验名称熟悉Windows XP中的进程和线程二、 实验目的1、熟悉Windows中任务管理器的使用。2、通过任务管理器识别操作系统中的进程和线程的相关信息。 3、掌握利用spy+.exe来察看Windows中各个任务的更详细信息。三、 实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。

2、2、 调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息序号进程名称进程ID线程数量占用内存优先级占CPU时间虚拟内存1Bddownloader.exe7312329980k标准0:00:009200k2Taskmgr.exe722834124k高0:00:043372k3BaiDuSdTray.exe5144308588k标准0:00:1543652k4QQprotect.exe46681120700k标准0:00:0123572k5TXPlatform.exe590831716k标准0:00:002128k6Explorer.exe5

3、8161730340k标准0:00:1121720k3、 启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。再从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是 任务管理器无法结束进程 ,原因是 该系统是系统进程 。4、 在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化 桌面上图标菜单都消失了 、得到的结论 explorer.exe是管理桌面图标的文件 (说出explorer.exe进程的作用)。

4、5、运行“spy+.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:进程:explorer.exe 中的各个线程序号进程ID线程ID基本优先级当前优先级CPU时间上下文开关1000016B800000104 8100:00:0649983362000016B8000003EC15150:00:0083000016B8000009048100:00:00114000016B800000A0C8100:00:00135000016B800001280880:00:078171386000016B8000013D88100:00:002

5、3266、注意某些线程前有“”,如图所示:,说明二者之间的差异 前有“+”其器线程下有窗口 。四、 心得体会 通过本次实验,我了解到了windows系统中进程的管理与操作,我了解了如何切出任务管理器,任务管理器应用与其他与进程相关的知识,明白了有些系统程序不能够关闭,系统中的进程与线程虽然很多,但是其中有许多关联,只要弄清楚其中的关联那么就能够运用好进程与线程,达到我们的目的。 每个进程下都包含着许多线程,我们控制进程来达到控制线程的目的只有我们了解好掌握还进程,我们才能更好的运用线程,更好的控制运用计算机。实验二 进程调度一、 实验名称进程调度二、 实验目的1、使学生进一步理解进程的概念,并

6、在此基础上掌握有关PCB、进程队列的概念。2、掌握进程基本状态的转化;3、 掌握进程调度的策略、具体实施方法以及系统性能的评价方法。三、实验结果分析简化的实验代码如下:#include#include/调用STL中的优先队列 using namespace std;/定义一个PCB进程类 class PCBpublic:char name10;/进程的名字 int runtime;/该进程的运行时间 int priority;/该进程的优先级 char state;/该进程的状态 PCB* next;/指向下个进程的指针 void print()const/输出进程的信息 cout(name=

7、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 PCBnumber;/一个PCB的数组用来保存已经结束的进程coutendl;PCB p;/一个PCB

8、型的变量,用来保存队首元素int i;for( i=0 ;i=number-1;i+)/建立进程信息 cout请输入pcbi的信息!endl;cout以(name,runtime,state(初始为R),priority)格式输入!pcbi.name;cinpcbi.runtime;cinpcbi.state;cinpcbi.priority;coutendl;typedef priority_queuePCB,vector ,PCBSortCriterion pQueue;/以 /PCBSortCriterion为/优先准则的优先队列 pQueue q,/ 优先队列pQueue的一个对象,对

9、这个队列进行主操作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;/完成进程的个数 while(!q.empty()/对进程进行调度 cout第+n次运行;p=q.top();coutq.

10、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;int main() coutsetw(40)进程模拟调度设计endlendl; cout提示:输入1选

11、择先来先服务算法,输入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();break; /调用多级反馈轮转法求解 case 4: DJFKLZ()

12、;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个进程,n个资源int l=0; void Ini

15、t(); /初始化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(needij0) cout您输入的第i+1个进

16、程所拥有的第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; for(i=0;im;i+) FI

17、NISHi=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; return true; cout会发生死

18、锁,发生死锁的进程是: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; else i+; Safe(); 输入进程已拥有资源数总需求资源数1(0.0.1.2)(0.0.1.2.)2(2.0.0.0)(2.7.5.0)3(0.0.3.4)(6.

19、6.5.6)4(2.3.5.4)(4.3.5.6)5(0.3.3.2)(0.6.5.2)四、心得体会通过这次实验,我了解了有关资源申请分配、检测以及避免死锁等概念,了解死锁和避免死锁的具体实施方法。死锁的解除实质上就是如何让释放资源的进程能够继续运行.为了解除死锁就要剥夺资源,实验四 存储管理一、实验名称储存管理二、实验目的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;

21、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; for(int k=0;kworknum;k+) label=0; /*看队列中是否有相等的页号或空位置*/ for(int l=0;lstoresize;l+) /*是否有相等的页号*/ if(quencel=

22、workstepk) cout内存中有workstepk号页面,无须中断!n; label=1; /标记此页面已装入内存 break; /*是否有空位置*/ if(quencel=0) quencel=workstepk; cout发生中断,但内存中有空闲区,workstepk号页面直接调入!n; interrupt+; label=1; break; /*上述情况都不成立则调出对首,将调入页面插入对尾*/ if(label=0) cout发生中断,将quence0号页面调出,workstepk号装入!n; interrupt+; for(int m=0;mstoresize;m+) quencem=quencem+1; quencestoresize-1=workstepk; cout作业worknum个,中断interrupt次,缺页率:float(interrupt)/float(worknum)*100%n;四、心得体会通过上机,我了解了许多关于操作系统的专业知识。无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。这次实验课上机是我了解了许多知识,让我更加了解了处理系统,我相信我能够把处理系统用好。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1