安徽工业大学操作系统实验报告汇编.docx
- 文档编号:3647706
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:19
- 大小:102.18KB
安徽工业大学操作系统实验报告汇编.docx
《安徽工业大学操作系统实验报告汇编.docx》由会员分享,可在线阅读,更多相关《安徽工业大学操作系统实验报告汇编.docx(19页珍藏版)》请在冰豆网上搜索。
安徽工业大学操作系统实验报告汇编
4、“体验化”消费
综上所述,DIY手工艺品市场致所以受到认可、欢迎的原因就在于此。
我们认为:
这一市场的消费需求的容量是极大的,具有很大的发展潜力,我们的这一创业项目具有成功的前提。
2003年,上海市总人口达到1464万人,上海是全国第一个出现人口负增长的地区。
1、DIY手工艺市场状况分析
(5)资金问题
上述所示的上海经济发展的数据说明:
人们收入水平的增加,生活水平的提高,给上海的饰品业带来前所未有的发展空间,为造就了一个消费额巨大的饰品时尚市场提供了经济基础。
使大学生对DIY手工艺品的时尚性消费,新潮性消费,体验性消费成为可能。
世界上的每一个国家和民族都有自己的饰品文化,将这些饰品汇集到一起再进行新的组合,便可以无穷繁衍下去,满足每一个人不同的个性需求。
(5)资金问题
1、现代文化对大学生饰品消费的影响
“碧芝”的成功归于他的唯一,这独一无二的物品就吸引了各种女性的眼光。
《操作系统教程》
实验报告书
专业班级
物141班
学号
149074353
姓名
程裕博
指导教师
郭玉华
安徽工业大学计算机
实验一WINDOWS进程初识
1、实验目的
(1)学会使用VC编写基本的Win32ConsolApplication(控制
(2)台应用程序)。
(3)掌握WINDOWSAPI的使用方法。
(4)编写测试程序,理解用户态运行和核心态运行。
2、实验内容和步骤
(1)编写基本的Win32ConsolApplication
步骤1:
登录进入Windows,启动VC++6.0。
步骤2:
在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32ConsolApplication”,然后在“Projectname”处输入工程名,在“Location”处输入工程目录。
创建一个新的控制台应用程序工程。
步骤3:
在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++SourceFile”,然后在“File”处输入C/C++源程序的文件名。
步骤4:
将清单1-1所示的程序清单复制到新创建的C/C++源程序中。
编译成可执行文件。
步骤5:
在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:
E:
\课程\os课\os实验\程序\os11\debug>hello.exe
运行结果(如果运行不成功,则可能的原因是什么?
):
运行成功,截图:
(2)计算进程在核心态运行和用户态运行的时间
步骤1:
按照
(1)中的步骤创建一个新的“Win32ConsolApplication”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。
步骤2:
在创建一个新的“Win32ConsolApplication”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。
步骤3:
在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。
E:
\课程\os课\os实验\程序\os12\debug>timeTEST.exe
步骤4:
运行结果(如果运行不成功,则可能的原因是什么?
):
processID:
3716,EXEfile:
3.exe,%dinKernelmode:
60
步骤5:
分别屏蔽While循环中的两个for循环,或调整两个for循环的次数,写出运行结果。
屏蔽i循环:
processID:
1412,EXEfile:
3.exe,%dinKernelmode:
62
屏蔽j循环:
processID:
1816,EXEfile:
3.exe,%dinKernelmode:
34
调整循环变量i的循环次数:
processID:
2616,EXEfile:
3.exe,%dinKernelmode:
64
调整循环变量j的循环次数:
processID:
1868,EXEfile:
3.exe,%dinKernelmode:
50
3、实验结论
对Win32ConsolApplication有进一步的认识,WIN32API也就是Windows32平台的应用程序编程接口。
用户态运行和核心态运行,核心态就是一个是直接的代码运行,即win32consolApplication下代码运行;而用户态是在DOS下运行的,对编译好的程序进行的运行,核心态速度较快,没有太多的约束,而用户态的运行需要时间较长,由于有相应的约束。
实验二进程管理
1、实验目的
1)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows进程的“一生”。
2)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。
2、实验内容和步骤
(1).创建进程
本实验显示了创建子进程的基本框架。
该程序只是再一次地启动自身,显示它的系统进程ID和它在进程列表中的位置。
步骤1:
创建一个“Win32ConsolApplication”工程,然后拷贝清单2-1中的程序,编译成可执行文件。
步骤2:
在“命令提示符”窗口运行步骤1中生成的可执行文件。
运行结果:
范例:
E:
\课程\os课\os实验\程序\os11\debug>os21
(假设编译生成的可执行文件是os21.exe)
ProcessID:
3012,CloneID:
0
ProcessID:
2748,CloneID:
1
ProcessID:
4044,CloneID:
2
ProcessID:
2896,CloneID:
3
ProcessID:
1588,CloneID:
4
ProcessID:
2144,CloneID:
5
按下ctrl+alt+del,调用windows的任务管理器,记录进程相关的行为属性:
步骤3:
在“命令提示符”窗口加入参数重新运行生成的可执行文件。
运行结果:
范例:
E:
\课程\os课\os实验\程序\os11\debug>os213
(假设编译生成的可执行文件是os21.exe)
ProcessID:
3112,CloneID:
3
ProcessID:
1380,CloneID:
4
ProcessID:
3576,CloneID:
5
按下ctrl+alt+del,调用windows的任务管理器,记录进程相关的行为属性:
步骤4:
修改清单2-1中的程序,将nClone的定义和初始化方法按程序注释中的修改方法进行修改,编译成可执行文件(执行前请先保存已经完成的工作)。
再按步骤2中的方式运行,看看结果会有什么不一样。
运行结果:
ProcessID:
3112,CloneID:
3
ProcessID:
1380,CloneID:
4
ProcessID:
3576,CloneID:
5
从中你可以得出什么结论:
nClone的作用:
控制ID的起始值,并控制其输出窗口的数量。
_
变量的定义和初始化方法(位置)对程序的执行结果有影响吗?
为什么?
有影响,变量的定义影响了程序的结果数目,还影响了ID的其实位置,由于变量的初始化使程序的循环次数发生改变,直接改变了结果,所以结果由变量的不同而不同。
(2).父子进程的简单通信及终止进程
步骤1:
创建一个“Win32ConsolApplication”工程,然后拷贝清单2-2中的程序,编译成可执行文件。
步骤2:
在VC的工具栏单击“ExecuteProgram”(执行程序)按钮,或者按Ctrl+F5键,或者在“命令提示符”窗口运行步骤1中生成的可执行文件。
运行结果:
范例:
E:
\课程\os课\os实验\程序\os11\debug>os22
(假设编译生成的可执行文件是os22.exe)
步骤3:
按源程序中注释中的提示,修改源程序2-2,编译执行(执行前请先保存已经完成的工作)。
运行结果:
死循环
在程序中加入跟踪语句,或调试运行程序,同时参考MSDN中的帮助文件CreateProcess()的使用方法,理解父子进程如何传递参数。
给出程序执行过程的大概描述:
产生的应用程序的名称(本EXE文件),告诉其行为像一个子进程的标志,不继承句柄,使用新的控制台,新的环境,启动信息,返回的进程信息。
步骤4:
填空
CreateProcess()函数有__8个核心参数?
本实验程序中设置的各个参数的值是:
a.szFilename;
b.szCmdLine,;
c.NULL;
d.NULL;
e.FALSE;
f.CREATE_NEW_CONSOLE;
g.NULL;
h.NULL。
步骤5:
按源程序中注释中的提示,修改源程序2-2,编译执行。
运行结果:
步骤6:
参考MSDN中的帮助文件CreateMutex()、OpenMutex()、ReleaseMutex()和WaitForSingleObject()的使用方法,理解父子进程如何利用互斥体进行同步的。
给出父子进程同步过程的一个大概描述:
首先,进程创建一个互斥体,打开互斥体,如遇到互斥,则进行处理,处理完后,释放互斥体,下面便是进程等待下一个要处理的项目。
3、实验结论
每个进程都从调用CreateProcess()API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。
每一进程都以调用ExitProcess()或TerminateProcess()API函数终止。
通常应用程序的框架负责调用ExitProcess()函数。
进程都是有始有终,其中有中断,还有处理进程间互斥的函数,已达到进程的完成后自然终止。
实验三进程同步的经典算法
1、实验目的
1)回顾系统进程、线程的有关概念,加深对Windows2000线程的理解。
2)了解互斥体对象,通过对生产者消费者等进程间同步与互斥经典算法的实现,加深对P、V原语以及利用P、V原语进行进程间同步与互斥操作的理解。
2、实验内容和步骤
(1).生产者消费者问题
步骤1:
创建一个“Win32ConsolApplication”工程,然后拷贝清单3-1中的程序,编译成可执行文件。
步骤2:
在“命令提示符”窗口运行步骤1中生成的可执行文件。
运行结果:
范例:
E:
\课程\os课\os实验\程序\os11\debug>os31
(假设编译生成的可执行文件是os31.exe)
步骤3:
仔细阅读源程序,找出创建线程的WINDOWSAPI函数,回答下列问题:
线程的第一个执行函数是什么(从哪里开始执行)?
它位于创建线程的API函数的第几个参数中?
第一个执行函数是:
DWORDWINAPIProducer(LPVOIDlpPara)
Produce();
它位于创建线程的API函数的第3个参数中。
步骤4:
修改清单3-1中的程序,调整生产者线程和消费者线程的个数,使得消费者数目大与生产者,看看结果有何不同。
运行结果:
从中你可以得出什么结论:
生产速度快,生产者经常等待消费者;反之,消费者经常等待。
步骤5:
修改清单3-1中的程序,按程序注释中的说明修改信号量EmptySemaphore的初始化方法,看看结果有何不同。
运行结果:
步骤6:
根据步骤4的结果,并查看MSDN,回答下列问题
1)CreateMutex中有几个参数,各代表什么含义。
答:
有三个参数.
1.LPSECURITY_ATTRIBUTESlpMutexAttributes代表安全属性的指针
2.BOOLbInitialOwner代表布尔bInitialOwner
3.LPCTSTRlpName代表LPCTSTR类型lpName
2)CreateSemaphore中有几个参数,各代表什么含义,信号量的初值在第几个参数中。
四个:
lpSemaphoreAttributesSECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值——表示采用不允许继承的默认描述符。
该参数定义了信号机的安全特性;lInitialCountLong,设置信号机的初始计数。
可设置零到lMaximumCount之间的一个值;lMaximumCountLong,设置信号机的最大计数;lpNameString,指定信号机对象的名称。
3)程序中P、V原语所对应的实际WindowsAPI函数是什么,写出这几条语句。
HANDLEMutex;HANDLEFullSemaphore;HANDLEEmptySemaphore;
DWORDWINAPIProducer(LPVOID);DWORDWINAPIConsumer(LPVOID);
4)CreateMutex能用CreateSemaphore替代吗?
尝试修改程序3-1,将信号量Mutex完全用CreateSemaphore及相关函数实现。
写出要修改的语句:
可以
Mutex=CreateSemaphore(NULL,false,false,NULL);
(2).读者写者问题
根据实验
(1)中所熟悉的P、V原语对应的实际WindowsAPI函数,并参考教材中读者、写者问题的算法原理,尝试利用WindowsAPI函数实现第一类读者写者问题(读者优先)。
3、实验结论
将信号量看作生产或消费的一个对象,对信号量的生成和销毁操作如同P操作和V操作一样,生成者消费者问题模拟的就是对信号量的生成和销毁,其中牵涉了信号量的同步,这也是该问题为何称为同步的经典问题的原因。
实验四存储管理
1、实验目的
(1)通过对Windows2000“任务管理器”、“计算机管理”、“我的电脑”属性、“系统信息”、“系统监视器”等程序的应用,学习如何察看和调整Windows的内存性能,加深对操作系统存储管理、虚拟存储管理等理论知识的理解。
(2)了解Windows2000的内存结构和虚拟内存的管理,理解进程的虚拟内存空间和物理内存的映射关系。
2、实验内容和步骤
(1)观察和调整Windows2000/XP的内存性能。
步骤1:
阅读“背景知识”,请回答:
1)什么是“分页过程”?
__分页就是将信息从主内存移动到磁盘进行临时存储的过程
2)什么是“内存共享”?
__应用程序经常需要彼此通信和共享信息。
_
3)什么是“未分页合并内存”和“分页合并内存”?
Windows2000中,未分页合并内存的最大限制是多少?
分页合并内存是存储迟早需要的可分页代码或数据的内存部分。
未分页合并内存包含必须驻留在内存中的占用代码或数据。
4)Windows2000分页文件默认设置的最小容量和最大容量是多少?
Windows2000使用内存数量的1.5倍作为分页文件的最小容量,这个最小容量的两倍作为最大容量。
步骤2:
登录进入Windows2000Professional。
步骤3:
查看包含多个实例的应用程序的内存需求。
1)启动想要监视的应用程序,例如Word。
2)右键单击任务栏以启动“任务管理器”。
3)在“Windows任务管理器”对话框中选定“进程”选项卡。
4)向下滚动在系统上运行的进程列表,查找想要监视的应用程序。
请在表4-3中记录:
表4-3实验记录
映像名称
PID
CPU
CPU时间
内存使用
WINWORD
368
00
0:
00:
38
23.440
“内存使用”列显示了该应用程序的一个实例正在使用的内存数量。
5)启动应用程序的另一个实例并观察它的内存需求。
请描述使用第二个实例占用的内存与使用第一个实例时的内存对比情况:
印像名称:
Explorer.EXE__pid:
1652__cpu:
0:
00:
26___内存使用:
29,028________
步骤4:
未分页合并内存。
估算未分页合并内存大小的最简单方法是使用“任务管理器”。
未分页合并内存的估计值显示在“任务管理器”的“性能”选项卡的“核心内存”部分。
总数(K):
_________82076____________________
分页数:
____________34900____________________
未分页(K):
________47176___________________
还可以使用“任务管理器”查看一个独立进程正在使用的未分页合并内存数量和分页合并内存数量。
操作步骤如下:
1)单击“Windows任务管理器”的“进程”选项卡,然后从“查看”菜单中选择“选择列”命令,显示“进程”选项卡的可查看选项。
2)在“选择列”对话框中,选定“页面缓冲池”选项和“非页面缓冲池”选项旁边的复选框,然后单击“确定”按钮。
返回Windows2000“任务管理器”的“进程”选项卡时,将看到其中增加显示了各个进程占用的分页合并内存数量和未分页合并内存数量。
仍以刚才打开观察的应用程序(例如Word)为例,请在表4-4中记录:
表4-4实验记录
映像名称
PID
内存使用
页面缓冲池
非页面缓冲池
WINWORD
368
23.638
530
16
从性能的角度来看,未分页合并内存越多,可以加载到这个空间的数据就越多。
拥有的物理内存越多,未分页合并内存就越多。
但未分页合并内存被限制为256MB,因此添加超出这个限制的内存对未分页合并内存没有影响。
步骤5:
提高分页性能。
在Windows2000的安装过程中,将使用连续的磁盘空间自动创建分页文件(pagefile.sys)。
用户可以事先监视变化的内存需求并正确配置分页文件,使得当系统必须借助于分页时的性能达到最高。
虽然分页文件一般都放在系统分区的根目录下面,但这并不总是该文件的最佳位置。
要想从分页获得最佳性能,应该首先检查系统的磁盘子系统的配置,以了解它是否有多个物理硬盘驱动器。
1)在“开始”菜单中单击“设置”–“控制面板”命令,双击“管理工具”图标,再双击“计算机管理”图标。
2)在“计算机管理”窗口的左格选择“磁盘管理”管理单元来查看系统的磁盘配置。
如果系统只有一个硬盘,那么建议应该尽可能为系统配置额外的驱动器。
这是因为:
Windows2000最多可以支持在多个驱动器上分布的16个独立的分页文件。
为系统配置多个分页文件可以实现对不同磁盘I/O请求的并行处理,这将大大提高I/O请求的分页文件性能。
请在表4-5中记录:
表4-5实验记录
卷
布局
类型
文件系统
容量
状态
C:
磁盘分区
基本
FAT32
48.82G
状态良好(系统)
D:
磁盘分区
基本
FAT32
24.50G
状态良好(页面文件)
LENEVO_PART
磁盘分区
基本
FAT32
305MB
状态良好(EISA配置)
步骤6:
计算分页文件的大小。
要想更改分页文件的位置或大小配置参数,可按以下步骤进行:
1)右键单击桌面上的“我的电脑”图标并选定“属性”。
2)在“高级”选项卡上单击“性能选项”按钮。
3)单击对话框中的“虚拟内存”区域中的“更改”按钮。
请记录:
所选驱动器(C:
)的页面文件大小:
驱动器:
_C:
[WINXP]_
可用空间:
23298MB
初始大小(MB):
1524
最大值(MB):
3048
所选驱动器(D:
)的页面文件大小:
(如果有的话)
驱动器:
D:
[SOFTTWARE]
可用空间:
12925MB
所有驱动器页面文件大小的总数:
允许的最小值:
2MB
推荐:
1522MB
当前已分配:
1524MB
4)要想将另一个分页文件添加到现有配置,在“虚拟内存”对话框中选定一个还没有分页文件的驱动器,然后指定分页文件的初始值和最大值(以兆字节表示),单击“设置”,然后单击“确定”。
5)要想更改现有分页文件的最大值和最小值,可选定分页文件所在的驱动器。
然后指定分页文件的初始值和最大值,单击“设置”按钮,然后单击“确定”按钮。
6)在“性能选项”对话框中单击“确定”按钮。
7)单击“确定”按钮以关闭“系统特性”对话框。
步骤7:
使用任务管理器。
可以使用“任务管理器”来简单地检查分页文件是否配置了正确容量。
这样可以实时提供系统正在使用分页文件的方式以及其他重要系统信息的准确描述。
通过右键单击任务栏运行“任务管理器”,选定“性能”选项卡查看实时的系统统计数据。
与分页文件大小最有关的信息位于“认可用量”区域。
这一区域显示了认可“峰值”是否达到或超过了认可“限制”,以及它是否超过了系统上的物理内存数量。
认可“峰值”是指系统迄今为止向进程分配的最大物理内存和虚拟内存数量。
请记录:
物理内存(K)
总数:
1039724
可用数:
517644
系统缓存:
501940
认可用量(K)
总数:
859572
限制:
2500780
峰值:
1238956
当系统遇到分页活动增加的情况时,提交的内存数量(“认可总数”)就会增加。
一旦它达到了“认可限制”值,系统就需要扩展分页文件。
“认可限制”值指出在不必扩展分页文件的情况下可以向内存提交的虚拟内存数量。
因为目标是避免扩展分页文件,所以必须保持“认可总数”和“认可限制”值相差较大。
如果这两个值接近了,那么系统必须动态增加分页文件的大小。
“任务管理器”的“认可用量”区域显示的信息还说明了系统的主内存是否足以满足系统执行的任务。
如果认可“总数”值经常超过系统中的内存数量,那么系统的物理内存可能不足。
(2)了解和检测进程的虚拟内存空间。
步骤1:
创建一个“Win32ConsolApplication”工程,然后拷贝清单4-1中的程序,编译成可执行文件。
步骤2:
在VC的工具栏单击“ExecuteProgram”(执行程序)按钮,或者按Ctrl+F5键,或者在“命令提示符”窗口运行步骤1中生成的可执行文件。
范例:
E:
\课程\os课\os实验\程序\os11\debug>os41
(假设编译生成的可执行文件是os41.exe)
步骤3:
根据运行结果,回答下列问题
虚拟内存每页容量为:
4.00KB
最小应用地址:
0x00010000
最大应用地址:
0x7ffeffff_
当前可供应用程序使用的内存空间为:
1.99GB
当前计算机的实际内存大小为:
0.99GB
理论上每个Windows应用程序可以独占的最大存储空间是:
0.99GB
提示:
可供应用程序使用的内存空间实际上已经减去了开头与结尾两个64KB的保护区。
虚拟内存空间中的64KB保护区是防止编程错误的一种Windows方式。
任何对内存中这一区域的访问(读、写、执行)都将引发一个错误陷阱,从而导致错误并终止程序的执行。
按committed、reserved、free等三种虚拟地址空间分别记录实验数据。
其中“描述”是指对该组数据的简单描述,例如,对下列一组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安徽 工业大学 操作系统 实验 报告 汇编
![提示](https://static.bdocx.com/images/bang_tan.gif)