没有合适的资源?快使用搜索试试~ 我知道了~
首页哈尔滨工业大学(威海)操作系统实验报告及答案
哈尔滨工业大学(威海)操作系统实验报告及答案
需积分: 16 23 下载量 18 浏览量
更新于2023-03-16
评论 1
收藏 1.04MB DOC 举报
说明:本实验报告实验答案,是本人在上实验时的测试数据,由于操作系统实验中后面实验与当时所做实验的计算机的配置有关,因此本实验报的数据仅供参考。
资源详情
资源评论
资源推荐
哈尔滨工业大学(威海)
操作系统实验报告
说明:本实验报告实验答案,是本
人在上实验时的测试数据,由于操
作系统实验中后面实验与当时所做
实验的计算机的配置有关,因此本
实验报的数据仅供参考。
实验 1
进程的描述与控制
Windows 2000 编程
(实验估计时间:100 分钟)
1.1 背景知识
Windows 2000 可以识别的应用程序包括控制台应用程序、GUI 应用程序和服务应用
程序。控制台应用程序可以创建 GUI,GUI 应用程序可以作为服务来运行,服务也可
以向标准的输出流写入数据。不同类型应用程序间的惟一重要区别是其启动方法。
Windows 2000 是以 NT 技术构建的,它提供了创建控制台应用程序的能力,使用户
可以利用标准的 C++工具,如 iostream 库中的 cout 和 cin 对象,来创建小型应用程序。
当系统运行时,Windows 2000 的服务通常要向系统用户提供所需功能。
服务应用程序类型需要 ServiceMail()函数,由服务控制管理器(SCM)加以调用。
SCM 是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一
个服务中来的请求。其本身负责使应用程序的行为像一个服务,通常,服务登录到特
殊的 LocalSystem 账号下,此账号具有与开发人员创建的服务不同的权限。
当 C++编译器创建可执行程序时,编译器将源代码编译成 OBJ 文件,然后将其与标
准库相链接。产生的 EXE 文件是装载器指令、机器指令和应用程序的数据的集合。装
载器指令告诉系统从哪里装载机器代码。另一个装载器指令告诉系统从哪里开始执行
进程的主线程。在进行某些设置 后,进入开发者提供的 main()、 Servicemain()或
WinMain()函数的低级入口点。机器代码中包括控制逻辑,它所做的事包括跳转到
Windows API 函数,进行计算或向磁盘写入数据等。
Windows 允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动
态链接库(DLL)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
1.2 实验目的
通过对 Windows 2000 编程,进一步熟悉操作系统的基本概念,较好地理解 Windows
2000 的结构。
1.3 工具/准备工作
在开始本实验之前,请回顾教科书的相关内容。
您需要做以下准备:
1)一台运行 Windows 2000 Professional 操作系统的计算机。
2)计算机中需安装 Visual C++ 6.0 专业版或企业版。
1.4 实验内容与步骤
(1)、简单的控制台应用程序
我们先来创建一个名为“Hello,World”的应用程序。
步骤 1:登录进入 Windows 2000 Professional。
步骤 2:利用输入输出类 iostream 和 std::cout 编写一个控制台小程序,在屏幕上显示
“hello,windows 2000”,并把代码保存为 1-1.cpp。
步骤 3:在“开始”菜单中单击“程序”、“附件”、“命令提示符”,进入 Windows “命令提
示符”窗口,并利用简单的标准命令行:
C:\>CL 1-1.cpp
来创建可执行的 1-1.exe。
操作能否正常进行?如果不行,原因是什么?
答:不能正常进行。
因为缺少环境变量,需要设置三个环境变量:path、include、lib。
Path : C:\Program Files\Microsoft Visual Studio\VC98\Bin;.;C:\Program Files\
Microsoft Visual Studio\COMMON\MSDev98\Bin;
Include:C:\Program Files\Microsoft Visual Studio\VC98\Include;
Lib:C:\Program Files\Microsoft Visual Studio\VC98\Lib;
步骤 4:运行 1-1.exe 程序,产生用户键入的一行文字。
运行结果(如果运行不成功,原因是什么?):
(2
)、GUI 应用程序
在下面的实验中,用 C++编译器创建一个 GUI 应用程序,代码应包括 WinMain()方
法,这是 GUI 类型的应用程序的标准入口点。
步骤 1:用 Windows.h 头文件、WinMain()、MessageBox() API 函数、用 pragma 指令
指示编译器/连接器找到 User32.lib 库文件编写一段小程序,在屏幕上显示一个窗口,
消息框中显示“Hello,Windows 2000",消息框标是用"Greeting",消息框中设一个“OK”按钮,
代码保存为 1-2.cpp
步骤 2:在“命令提示符”窗口运行 CL.exe,产生 1-2.exe 文件:
C:\>CL 1-2.cpp
运行结果:
3、进程对象
操作系统将当前运行的应用程
序看作是进程对象。利用系统提供
的惟一的称为句柄(HANDLE)
的号码,就可与进程对象交互,这一号码只对当前进程有效。
本实验编写一个简单的进程句柄的应用,在系统中运行的任何进程都可调用
GetCurrentProcess() API 函数,返回标识进程本身的句柄;再利用 GetPriorityClass()获
得进程的优先级,用 cout 函数在屏幕上把得到的进程优先级在屏幕上显示出来。
步骤 1:将程序键入记事本中,并把代码保存为 1-3.cpp
步骤 2:在“命令提示符”窗口运行 CL.exe,产生 1-3.exe 文件:
C:\>CL 1-3.cpp
运行结果
步骤 3:编写一段程序,利用句柄查出进程的详细信息,首先利用 Windows 2000 的
新特性工具帮助库 tlhelp.h 来获得当前运行的所有进程的快照。然后应用程序进入快照
中的每一个进程,得到其以 PROCESSENTRY32 结构表示的属性,这一结构用来向
OpenProcess() API 函数提供进程的 ID。Windows 跟踪每一进程的有关时间,通过打开
的进程句柄和 GetProcessTime() API 来查询得到有关时间。然后计算进程在内核模
式下消耗的时间占总时间的百分比。
将程序键入记事本中,并把代码保存为 1-4.cpp。
步骤 4:在“命令提示符”窗口运行 CL.exe,产生 1-4.exe 文件:
C:\>CL 1-4.cpp
运行结果:
1.5 实 验
总结
答:
通 过
本 次
实 验
初 步
了 解
了 计
算 机
操 作
系 统
实 验
课 的
模 式 ,
通 过
实 验
1 中
的 四
个 小
问 题
学到了如何在命令行模式下编译 C++程序,开始在直接尝试中遇到许多的错误,
在 解 决 错 误 的 过 程 中 我 学 到 : cl.exe 要 用 到 MSDev98\Bin 目 录 下 的
MSPDB60.DLL
解决实验 1 中的第一个小实验错误的方法有以下几种:
一:将电脑目录
C:\Program Files\
Microsoft Visual Studio\COMMON\MSDev98\Bin 下面的 MSPDB60.DLL 文件拷
贝到 CL.exe 所在的文件夹中
二:在“我的电脑--属性--高级--环境变量”中, 添加如下变量:
需要设置三个环境变量:path、include、lib。
Path : C:\Program Files\Microsoft Visual Studio\VC98\Bin;.;C:\Program
Files\Microsoft Visual Studio\COMMON\MSDev98\Bin;
Include:C:\Program Files\Microsoft Visual Studio\VC98\Include;
Lib:C:\Program Files\Microsoft Visual Studio\VC98\Lib;
最终我是采用第二种方法解决实验 1-1 的
在实验 1-2 中:
文 件 1-2.cpp 是 用 Windows.h 头 文 件 、
WinMain()、MessageBox() API 函数、用 pragma 指令指示编译器/连接器找
到 User32.lib 库文件编写一段小程序,也就是一个简单的 windows 编程,再次
熟悉了 WinMain()函数。
实验 2
进程的描述与控制
Windows 2000 进程的一生
(实验估计时间:100 分钟)
2.1 背景知识
Windows 2000 所创建的每个进程都从调用 CreateProcess() API 函数开始,该函数
的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用 ExitProcess()或
TerminateProcess() API 函数终止。通常应用程序的框架负责调用 ExitProcess()函数,对
于 C++运行库来说,这一调用发生在应用程序的 main()函数返回之后。
剩余45页未读,继续阅读
hit409keshe
- 粉丝: 4
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0