77范文网 - 专业文章范例文档资料分享平台

os实验指导书(新)

来源:网络收集 时间:2020-02-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

操作系统教程

实验指导书

姓名:

学号: 班级: 指导老师:

2013-12-2

1

目录

实验一 WINDOWS进程初识 ............................................. 3

1、实验目的 ..................................................... 3 2、实验内容和步骤 ............................................... 3 3、实验结论 ..................................................... 4 4、程序清单 ..................................................... 4 实验二 进程管理.................................................... 7

背景知识 ........................................................ 7 1、实验目的 .................................................... 10 2、实验内容和步骤 .............................................. 10 3、实验结论 .................................................... 14 4、程序清单 .................................................... 14 实验三 进程同步的经典算法.......................................... 18

背景知识 ....................................................... 18 1、实验目的 .................................................... 19 2、实验内容和步骤 .............................................. 19 3、实验结论 .................................................... 22 4、程序清单 .................................................... 22 实验四 存储管理.................................................... 27

背景知识 ....................................................... 27 1、实验目的 .................................................... 31 2、实验内容和步骤 .............................................. 31 3、实验结论 .................................................... 37 4、程序清单 .................................................... 37 实验五 文件和设备管理.............................................. 41

背景知识 ....................................................... 41 1、实验目的 .................................................... 43 2、实验内容与步骤 .............................................. 43 3、实验结论 .................................................... 46

2

实验一 WINDOWS进程初识

1、 实验目的

(1) 学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。 (2) 掌握WINDOWS API的使用方法。

(3) 编写测试程序,理解用户态运行和核心态运行。

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

运行结果 (如果运行不成功,则可能的原因是什么?) : _

(2)计算进程在核心态运行和用户态运行的时间

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

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

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

E:\\课程\\os课\\os实验\\程序\\os12\\debug>time TEST.exe

步骤4:运行结果 (如果运行不成功,则可能的原因是什么?) : 因为此程序是个死循环,所以运行结果为无穷大

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

3

屏蔽j循环:

调整循环变量i的循环次数:

调整循环变量j的循环次数:

3、 实验结论

_通过实验可以得知运行一个程序CPU的使用情况是不同的,同时与循环的次数无关,和当前计算的复杂情况有关。实验得出的数据可以可以说明这一点。

程序清单

清单1-1 一个简单的Windows控制台应用程序 // hello项目

# include void main() {

std::cout << “Hello, Win32 Consol Application” << std :: endl ; }

清单1-2 核心态运行和用户态运行时间比计算 // proclist项目

# include # include # include

// 当在用户模式机内核模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法

DWORD GetKernelModePercentage(const FILETIME& ftKernel, const FILETIME& ftUser) {

// 将FILETIME结构转化为64位整数

ULONGLONG qwKernel=(((ULONGLONG)ftKernel.dwHighDateTime) <<32)+ftKernel.dwLowDateTime;

4

ULONGLONG qwUser=(((ULONGLONG)ftUser.dwHighDateTime) <<32)+ftUser.dwLowDateTime;

// 将消耗时间相加,然后计算消耗在内核模式下的时间百分比 ULONGLONG qwTotal=qwKernel+qwUser;

DWORD dwPct=(DWORD)(((ULONGLONG)100*qwKernel)/qwTotal); return(dwPct); }

// 以下是将当前运行过程名和消耗在内核模式下的时间百分数都显示出来的应用程序 void main(int argc,char *argv[]) { if(argc<2) { cout<<\请给出你要查询的程序名\ exit(0); } // 对当前系统中运行的过程拍取“快照” HANDLE hSnapshot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, // 提取当前过程 0); // 如果是当前过程,就将其忽略

// 初始化过程入口 PROCESSENTRY32 pe; ::ZeroMemory(&pe,sizeof(pe)); pe.dwSize=sizeof(pe); BOOL bMore=::Process32First(hSnapshot,&pe); BOOL found = FALSE; while(bMore) {

// 打开用于读取的过程 if(!strcmp(pe.szExeFile,argv[1])) { found = TRUE; HANDLE hProcess=::OpenProcess( PROCESS_QUERY_INFORMATION, // 指明要得到信息 FALSE, // 不必继承这一句柄 pe.th32ProcessID); // 要打开的进程 if (hProcess!=NULL) { // 找出进程的时间

5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库os实验指导书(新)在线全文阅读。

os实验指导书(新).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/770252.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: