操作系统 实验报告 一
姓名:****** 班级:2010级软件工程 学号:******** 日期:2012年10月19日
一、 实验题目 Windows 2000进程的“一生”
二、 实验目的
1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。
2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。
二、 实验内容
本实验分为三个小实验分别为实验1.1、实验1.2、实验1.3,每个小实验的实验题目、实验目的、实验内容、实验过程、回答问题、实验总结分别如下:
一、 实验题目 实验1.1:创建进程
二、 实验目的
1)通过创建进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。
2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。
三、实验内容:
1) 调试实验3-5中的程序。
2) 观察并分析程序。
四、实验过程及结果:
步骤1:登录进入Windows 2000 Professional。
步骤2:在“开始”菜单中单击“程序”-“Microsoft Visual Studio 6.0”–“Microsoft
Visual C++ 6.0”命令,进入Visual C++窗口。
步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程
序3-5.cpp。
步骤4:单击“Build”菜单中的“Compile 3-5.cpp”命令编辑3-5.cpp
步骤5:编译完成后,单击“Build”菜单中的“Build 3-5.exe”命令,建立3-5.exe
可执行文件。
步骤6:在工具栏单击“Execute Program”(执行程序) 按钮,或者按Ctrl + F5
键,或者单击“Build”菜单中的“Execute 3-5.exe”命令,执行3-5.exe程序。
步骤7:按Ctrl + S键可暂停程序的执行,按Ctrl + Pause (Break) 键可终止程序
的执行。
运行结果分析:
答:程序的运行结果如下图所示:
图一
图二
分析运行结果:创建标志参数CREATE_NEW_CONSOLE指示新进程分配它自己的控制台,所以在运行程序时,在任务栏上产生许多活动标记,如图一所示,一共产生了25个窗口,即创建了25个新进程。然后该克隆进程的创建方法关闭传递过来的句柄并返回main() 函数。在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。利用GetCurrentProcessId()函数获得进程的ID号,并输出。
五、回答问题:
1)(结合背景知识回答)该程序中使用的CreateProcess() API函数,此函数的大多数参数都可取缺省值,但是创建标志参数使用了:
CREATE_NEW_CONSOLE
_____________________________________________________________________ 标志,指示新进程分配它自己的控制台,这使得运行示例程序时,在任务栏上产生许多活动标记。然后该克隆进程的创建方法关闭传递过来的句柄并返回main() 函数。在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。
2)CreateProcess() 函数有__10____个核心参数?本实验程序中设置的各个参数的值是:
3)部分程序在Visual C++环境完成编译、链接之后,还可以在Windows 2000的“命令提示符”状态下尝试执行该程序,看看与在可视化界面下运行的结果有没有不同?为什么?
答:在命令提示符下运行结果如下所示,与在可视化界面下运行结果是一样的。 原因:
六、实验总结
经过本次实验,学习了进程创建的方法,CreateProcess()的一些用法,它的10个参数的
含义等等,在做实验的过程中遇到了以下问题:
①修改代码后,编译连接都没有问题,但运行时程序一直不停止,怎么关也关不掉程序,只能关机。解决方法是:去上机时电脑上有一个程序,跟我自己修改后的程序代码一样的,但运行后可以自动停止。现在仍不明白为什么原来的一样的代码运行后停止不了,周围很多同学也遇到了同样的问题。
②在main()中的代码
if (argc> 1)
{
// 从第二个参数中提取克隆ID
::sscanf(argv[1] , "%d" , &nClone) ;
}
看不懂,不知道是怎么获得参数nClone的。询问了周围的同学及学长,但问题仍未解决······
③一开始不知道进程的ID号具体是什么含义,但经过查找资料了解到:操作系统通过进程ID来标识一个进程,进程ID是进程的唯一标识,在任务管理器中点击进程后点击查看,点击选择列,在PID前面勾选,就会显示出每个进程的ID号了。
一、实验题目实验1.2:正在运行的进程
二、实验目的
1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。
2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。
三、实验内容:
1) 调试实验3-6中的程序。
2) 观察并分析程序。
四、实验过程及结果:
步骤1:在Visual C++ 窗口的工具栏中单击“打开”按钮,在“打开”对话框中找到
并打开实验源程序3-6.cpp。
步骤2:单击“Build”菜单中的“Compile 3-6.cpp”命令,再单击“是”按钮确认。系
统对3-6.cpp进行编译。
步骤3:编译完成后,单击“Build”菜单中的“Build 3-6.exe”命令,建立3-6.exe可执
行文件。
步骤4:在工具栏单击“Execute Program” (执行程序) 按钮,执行3-6.exe程序。 步骤5:单击Ctrl + Alt + Del键,进入“Windows任务管理器”,在“应用程序”选项
卡中右键单击“3-6”任务,在快捷菜单中选择“转到进程”命令。
在“Windows任务管理器”的“进程”选项卡中,与“3-6”任务对应的进程映像名称是 (为什么?) :
答:对应的进程映像名称是VCSPAWN.exe,这是因为Windows 7 的兼容性问
题,非得用VCSPAWN.EXE来启动PE格式的文件。
__________________________________________________
右键单击该进程名,在快捷菜单中选择“设置优先级”命令,可以调整该进程的优先级,如设置为“高”后重新运行3-6.exe程序,屏幕显示有变化吗?为什么?
答:只有进程的ID号变了,其他没有变化,因为程序的输出语句是以下语句: std :: cout<< "Process ID: "<<dwIdThis
<<", requires OS: " <<wMajorReq
<<wMinorReq<<std :: endl ;
std :: cout<< "Running on OS:" <<osvix.dwMajorVersion<<"."
<<osvix.dwMinorVersion<<std :: endl;
std::cout<< "Task Manager should now indicate this "
"process is high priority."<<std :: endl;
即输出进程的ID号、进程和报告所需的版本、版本信息和报告,出了进程的ID号会变化外,无论怎么设置优先级,输出都不会发生变化。因为是随机获取进程,所以进程的ID号几乎每次运行都会发生变化。另外,如果是windows2000系统,程序也利用SetPriorityClass()函数将该进程的优先级设为了High。设置优 …… 此处隐藏:3236字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




