计算机操作系统实验课程教案2016

上传人:我** 文档编号:115704341 上传时间:2019-11-14 格式:DOC 页数:53 大小:1.47MB
返回 下载 相关 举报
计算机操作系统实验课程教案2016_第1页
第1页 / 共53页
计算机操作系统实验课程教案2016_第2页
第2页 / 共53页
计算机操作系统实验课程教案2016_第3页
第3页 / 共53页
计算机操作系统实验课程教案2016_第4页
第4页 / 共53页
计算机操作系统实验课程教案2016_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《计算机操作系统实验课程教案2016》由会员分享,可在线阅读,更多相关《计算机操作系统实验课程教案2016(53页珍藏版)》请在金锄头文库上搜索。

1、教师备课教案本(实验课程)教学单位:计算机学院课程名称:计算机操作系统课程组成员:李文生 周艳明 邹昆 马慧 段琢华版本号:2016电子科技大学中山学院实 验 课 程 授 课 计 划总学时数:8序号实 验 项 目 名 称计划学时1Windows进程管理和进程编程22基于互斥对象的Windows多线程和线程同步33基于信号量的生产者消费同步问题34模拟进程调度35Windows内存管理36NTFS文件系统2考核要求1、平时成绩占40%:其中出勤、作业、实验、笔记与互动各占10%2、期末笔试占60%项目名称Windows进程管理和进程编程实验类别验证型课时安排2教学目的 熟悉操作系统进程管理的概念

2、 初步理解Windows XP进程的编程预习要求教学内容与过程实验内容1 Windows 任务管理器的进程管理(30分钟)1、 背景知识简介 Windows的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位 使用任务管理器 可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序 也可以使用多个参数评估正在运行的进程的活动,以及查看CPU 和内存使用情况的图形和数据 任务管理器中 “应用程序”选项卡:显示正在运行程序的状态,用户能够结束、切换或者启动程序 “进程”选项卡:显示正在运行的进程信息。例如,可以显示关于C

3、PU 和内存使用情况、页面错误、句柄计数以及许多其他参数的信息 “性能”选项卡:显示计算机动态性能,包括CPU 和内存使用情况的图表,正在运行的句柄、线程和进程的总数,物理、核心和认可的内存总数 (KB) 等2、 实验目的和要求 通过在Windows 任务管理器中对程序进程进行响应的管理操作 熟悉操作系统进程管理的概念 学习观察操作系统运行的动态性能3、 实验环境 需要准备一台运行Windows XP Professional操作系统的计算机4、 实验内容与步骤 使用任务管理器终止进程 显示其他进程记数器 更改正在运行的程序的优先级5、 实验提示 注意实验中所使用的是操作系统的哪个版本 了解在

4、当前机器中正在运行的应用程序 在Windows XP的任务管理器中,“进程”选项卡增加了一个“用户名”栏目,其中区分了SYSTEM、NETWORK SERVICE、LOCAL SERVICE和用户的不同进程类别 终止进程时要小心,有可能导致不希望发生的结果,包括数据丢失和系统不稳定等;终止进程树将结束该进程以及它直接或间接创建的所有子进程实验内容2 Windows 进程编程(60分钟)1、 背景知识简介 Windows可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序 控制台应用程序可以创建GUI;GUI应用程序可以作为服务来运行;服务也可以向标准的输出流写入数据不同类型应用程

5、序间的惟一重要区别是其启动方法 Windows XP是以NT的技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C+工具,如iostream库中的cout和cin对象,来创建小型应用程序。当系统运行时,Windows XP的服务通常要向系统用户提供所需功能 服务应用程序类型需要ServiceMail() 函数,由服务控制管理器 (SCM) 加以调用。SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。其本身负责使应用程序的行为像一个服务。通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限 当令C

6、+ 编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。装载器指令告诉系统从哪里装载机器代码。另一个装载器指令告诉系统从哪里开始执行进程的主线程。在进行某些设置后,进入开发者提供的main() 、ServiceMain() 或WinMain() 函数的低级入口点。机器代码中包括有控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等 Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库 (DLL) 代码块,在其中包含应用程序所使用的机器代码和

7、应用程序的数据 Windows 所创建的每个进程都从调用CreateProcess() API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象 每一进程都以调用ExitProcess() 或TerminateProcess() API函数终止。通常应用程序的框架负责调用 ExitProcess() 函数。对于C+ 运行库来说,这一调用发生在应用程序的main() 函数返回之后 创建进程 CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行 正在运行的进程 如果一个进程拥有至少一个执行线程,则为正在系统中运行的进程。通常,这种进程使用主线程来指示它的存在。

8、当主线程结束时,调用ExitProcess() API函数,通知系统终止它所拥有的所有正在运行、准备运行或正在挂起的其他线程 当进程正在运行时,可以通过一系列的API函数来查看它的许多特性,其中少数特性也允许加以修改 终止进程 所有进程都是以调用ExitProcess() 或者TerminateProcess() 函数结束的。但最好使用前者而不要使用后者,因为进程是在完成了它的所有的关闭“职责”之后以正常的终止方式来调用前者的。而外部进程通常调用后者即突然终止进程的进行,由于关闭时的途径不太正常,有可能引起错误的行为 TerminateProcess() API函数只要打开带有PROCESS_

9、TERMINATE访问权的进程对象,就可以终止进程,并向系统返回指定的代码。这是一种“野蛮”的终止进程的方式,但是有时却是需要的2、 实验目的和要求 通过对Windows进程编程 进一步熟悉操作系统的基本概念 进一步熟悉进程的概念 初步理解Windows 进程的编程 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows进程的“一生” 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法3、 实验环境 需要做以下准备 一台运行Windows XP Professional操作系统的计算机 计算机中需安装Visual C

10、+ 开发环境(版本不限)4、 实验内容与步骤1、 启动Visual C+,新建一个空的Win32 Console Application,工程名为xxProcHandle,其中“xx”为你的姓名拼音首字母+学号末两位,如张三学号末两位为21,则其工程名为ZS21ProcHandle。2、 新建一个cpp文件,文件名任意,输入以下代码(边输入边理解代码):3、增加代码,实现更改并显示当前运行进程的优先级(更改为何种优先级由用户选择)提示:使用SetPriorityClass,其原型为:BOOL WINAPI SetPriorityClass( HANDLE hProcess,/ 进程句柄 DWO

11、RD dwPriorityClass/ 优先级(取值和GetPriorityClass获取到的优先级一样,包括HIGH_PRIORITY_CLASS等等);4、新建一个空的Win32 Console Application,工程名为xxProcList,其中“xx”为你的姓名拼音首字母+学号末两位。5、新建一个cpp文件,输入以下代码:#include #include #include using namespace std;/ 根据用户模式及内核模式下的消耗时间,计算在内核模式下进程所耗时间百分数DWORD GetKernelModePercentage(const FILETIME& f

12、tKernel, const FILETIME& ftUser) / 将FILETIME结构转化为位整数 ULONGLONG qwKernel = (ULONGLONG)ftKernel.dwHighDateTime) 32) + ftKernel.dwLowDateTime; ULONGLONG qwUser = (ULONGLONG)ftUser.dwHighDateTime) 0)/ 防止除0return (DWORD)(ULONGLONG)100 * qwKernel) / qwTotal);elsereturn 0;/ 以下是将当前正在运行的所有进程名和消耗在内核模式下的时间百分数都

13、显示出来的应用程序void main() / 对当前系统中运行的进程拍取快照HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,/ 提取进程快照0);/ 进程ID,当前进程设置为(前一参数为TH32CS_SNAPPROCESS时忽略此参数) / 初始化进程信息项结构体 PROCESSENTRY32 pe;ZeroMemory(&pe, sizeof(pe);/ 将pe的成员全部初始化为0pe.dwSize = sizeof(pe);/ 调用Process32First前必须设置PROCESSENTRY32中的dwSize

14、成员/ 获得第一个进程信息BOOL bMore = Process32First(hSnapshot, &pe); / 获取成功返回TRUE,否则返回FALSEwhile(bMore) / 只要快照中还有进程未处理,则继续循环 / 打开用于读取的进程HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,/ 指明打开进程是为了得到进程信息FALSE,/ 当前进程的子进程不能继承这一句柄pe.th32ProcessID);/ 要打开的进程IDif (hProcess != NULL) / 查询进程的时间信息FILETIME ftCreation,ftKernelMode,ftUse

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号