操作系统实验报告

2019-08-31 21:29

操作系统教程 实验报告

班级:软104 学号:109074267 姓名:王二康

实验一 WINDOWS进程初识

1

1、 实验目的

(1) 学会使用VC编写基本的Win32 Consol Application(控制 (2) 台应用程序)。 (3) 掌握WINDOWS API的使用方法。 (4) 编写测试程序,理解用户态运行和核心态运行。 2、 实验内容和步骤

(1)编写基本的Win32 Consol Application

步骤1:登录进入Windows,启动VC++ 6.0。

步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location” 处输入工程目录。创建一个新的控制台应用程序工程。

步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File” 处输入C/C++源程序的文件名。 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。

步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:

E:\\课程\\os课\\os实验\\程序\\os11\\debug>hello.exe 运行结果 (如果运行不成功,则可能的原因是什么?) : Hello,Win32 Consol Application (2)计算进程在核心态运行和用户态运行的时间

步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。

步骤2: 在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。

步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。

2

E:\\课程\\os课\\os实验\\程序\\os12\\debug>time TEST.exe 步骤4:运行结果 (如果运行不成功,则可能的原因是什么?): process ID: 3716,EXE file:3.exe,%d in Kernel mode: 60

步骤5:分别屏蔽While循环中的两个for循环,或调整两个for循环的次数,写出运行结果。 屏蔽i循环:

process ID: 1412,EXE file:3.exe,%d in Kernel mode: 62 屏蔽j循环:

process ID: 1816,EXE file:3.exe,%d in Kernel mode: 34 调整循环变量i的循环次数:

process ID: 2616,EXE file:3.exe,%d in Kernel mode: 64 调整循环变量j的循环次数:

process ID: 1868,EXE file:3.exe,%d in Kernel mode: 50 3、 实验结论

对Win32 Consol Application有进一步的认识,WIN32 API也就是Windows 32平台的应用程序编程接口。用户态运行和核心态运行,核心态就是一个是直接的代码运行,即win32consol Application下代码运行;而用户态是在DOS下运行的,对编译好的程序进行的运行,核心态速度较快,没有太多的约束,而用户态的运行需要时间较长,由于有相应的约束。

实验二 进程管理

3

背景知识

Windows所创建的每个进程都从调用CreateProcess() API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用ExitProcess() 或TerminateProcess() API函数终止。通常应用程序的框架负责调用 ExitProcess() 函数。对于C++ 运行库来说,这一调用发生在应用程序的main() 函数返回之后。 1. 创建进程

CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行。表 3-4详细地列出了每个参数的类型和名称。

表3-4 CreateProcess() 函数的参数

参数名称 LPCTSTR lpApplivationName LPCTSTR lpCommandLine LPSECURIITY_ATTRIBUTES 要指明这一句柄是否应该由lpProcessAttributes 其他子进程所继承 LPSECURIITY_ATTRIBUTES 返回进程的主线程的句柄的lpThreadAttributes BOOL bInheritHandle 程继承创建者进程的句柄 特殊的创建标志 (如DWORD dwCreationFlage CREATE_SUSPENDED) 的安全属性 一种标志,告诉系统允许新进使用目的 全部或部分地指明包括可执行代码的EXE文件的文件名 向可执行文件发送的参数 返回进程句柄的安全属性。主 4

位标记 向新进程发送的一套环境变LPVOID lpEnvironment 量;如为null值则发送调用者环境 LPCTSTR lpCurrentDirectory 新进程的启动目录 STARTUPINFO结构,包括新STARTUPINFO lpStartupInfo 进程的输入和输出配置的详情 调用的结果块;发送新应用程LPPROCESS_INFORMATION 序的进程和主线程的句柄和lpProcessInformation

可以指定第一个参数,即应用程序的名称,其中包括相对于当前进程的当前目录的全路径或者利用搜索方法找到的路径;lpCommandLine参数允许调用者向新应用程序发送数据;接下来的三个参数与进程和它的主线程以及返回的指向该对象的句柄的安全性有关。

然后是标志参数,用以在dwCreationFlags参数中指明系统应该给予新进程什么行为。经常使用的标志是CREATE_SUSPNDED,告诉主线程立刻暂停。当准备好时,应该使用ResumeThread() API来启动进程。另一个常用的标志是CREATE_NEW_CONSOLE,告诉新进程启动自己的控制台窗口,而不是利用父窗口。这一参数还允许设置进程的优先级,用以向系统指明,相对于系统中所有其他的活动进程来说,给此进程多少CPU时间。

接着是CreateProcess() 函数调用所需要的三个通常使用缺省值的参数。第一个参数是lpEnvironment参数,指明为新进程提供的环境;第二个参数是lpCurrentDirectory,可用于向主创进程发送与缺省目录不同的新进程使用的特殊的当前目录;第三个参数是STARTUPINFO数据结构所必需的,用于在必要时指明新应用程序的主窗口的外观。

5

ID


操作系统实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福大结构力学课后习题详细答案(祁皑)..- 副本

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: