os实验一1.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
os实验一1

实验一:进程创建与撤消 一、实验目的 1、 加深对进程概念的理解和进程创建与撤消算法; 2、 进一步认识并发执行的实质。 二、实验内容 本实验完成如下三个层次的任务: (1)系统级—以普通用户身份认识windows的进程管理。通过windows的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。 (2)语言级—以普通程序员身份认识高级语言VC++/Java/C#的进程创建与撤销工具。 (3)模拟级—以OS设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。 三、实验步骤 1、windows的进程管理 通过windows的任务管理器管理进程。 2、VC++/Java/C#的进程创建与撤销工具 通过创建,撤销记事本和计算器程序来体现用vc++来进行进程的创建和撤销。 当输入1或者2时计算机就会打开记事本功能,当输入4或者5时就会关闭程序;当输入7或者8时就会打开计算器程序,当输入10或11时就会关闭程序。 实现代码: #includeiostream #includewindows.h using namespace std; BOOL KillProcess(DWORD ProcessId)//撤销进程; { HANDLE hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,ProcessId); if(hProcess==NULL) return FALSE; if(!TerminateProcess(hProcess,0)) return FALSE; return TRUE} int main() { int i; STARTUPINFO si; memset(si,0,sizeof(STARTUPINFO)); si.cb=sizeof(STARTUPINFO); si.dwFlags=STARTF_USESHOWWINDOW; si.wShowWindow=SW_SHOW; PROCESS_INFORMATION pi; cout请输入构造条件endl;//当输入值小于时开启一个记事本进程,当输入值大于且小于时关闭记事本, cini; //当输入值大于且小于时开启一个计算器进程,当输入值大于且小于时关闭计算器; if(i3) {int a=CreateProcessA(c:\\windows\\system32\\notepad.exe,NULL,NULL,NULL,FALSE,0,NULL,NULL,(LPSTARTUPINFOA)si,pi); //创建记事本进程 if(a) cout进程创建成功endl; else { cout进程创建失败,原因是:endl; coutGetLastError()endl;} cini; if(i3i6) {bool ret=KillProcess(pi.dwProcessId); //撤销记事本进程 if(ret) cout进程成功关闭endl; else cout未成功关闭进程endl;}} else if(i6i9){int a=CreateProcessA(c:\\windows\\system32\\calc.exe,NULL,NULL,NULL,FALSE,0,NULL,NULL,(LPSTARTUPINFOA)si,pi); //创建计算器进程 if(a) cout进程创建成功endl; else {cout进程创建失败,原因是:endl; coutGetLastError()endl;} cini; if(i9i12) {bool ret=KillProcess(pi.dwProcessId); //撤销计算器进程 if(ret) cout进程成功关闭endl; else cout未成功关闭进程endl; } else { cout输入有误!请重新输入:endl; cini; }} return 0;} 3、进程创建与撤销的模拟实现 (1)总体设计: ①数据结构定义: #define OK 1 成功返回OK定义为1 #define EVERFLOW -1 越界用-1 #define PCBSIZE 10 //空闲队列初始数组空间 #define NULL 0 //空定义为0 typedef struct PCB //定义进程结构体 { int id; //进程的序号 int priority;

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档