2010操作系统实验及其参考答案(完整版) - 图文

可以正常运行

步骤6:在工具栏单击“Execute program”按钮,执行4-1.exe程序。

运行结果(如果运行不成功,原因是什么?):

阅读和分析4-2的程序,请回答下列问题: 1)使用了哪个系统API函数来创建线程实例? 使用了CreateThread系统API函数来创建线程实例

2)文件的读和写操作分别使用了哪个API函数?

文件的读和写操作分别使用了ReadFile()和WriteFile()API函数

3)在程序中,重置文件使用了哪一个函数? 在程序中,重置文件使用了CloseHandle()函数

2. 文件映射对象

在线程间使用的由页式文件支持的文件映射对象,从中可以看出利用内存映射文件比使用驻留在磁盘上的文件对象更为简单,其中的进程还使用了互斥信号量,以使公平地访问文件映射对象,然后,当每个线程都释放时,程序将文件的视图映射到文件上并增加数据的值。

步骤1:在工具栏单击“新建”按钮,编写代码保存为4-2.cpp。 实现功能:演示使用映射文件的内存交换数据的线程

参考类与函数:windows.h、iostream、WaitForSingleObject()、MapViewOfFile()、UnmapViewOfFile()、 ReleaseMutex()、MakeSharedFile()、CreateFileMapping()、ZeroMemory()。

步骤2:单击“Build”菜单中的“Compile 4-2.cpp”命令,再单击“是”按钮确认,系统对4-2.cpp进行编译。

步骤3:编译完成后,单击“Build”菜单中的“Build 4-2.exe”命

令,建立4-2.exe可执行文件。

操作能否正常进行,如果不行,原因是什么? 可以正常运行

步骤4:在工具栏单击“Execute program”按钮,执行4-2.exe程序。

运行结果(如果不成功,原因是什么?):

请回答:

1)程序中用来创建一个文件映射对象的系统API函数是什么? 创建一个文件映射对象的系统API函数是CreateFileMapping()

2)在文件映射上创建和关闭文件视图分别使用了哪一个系统函数?

a. MapViewOfFile()

b. UnmapViewOfFile()

3)填空:

通过(CreateFileMapping())函数创建一个小型的文件映射对象

(hMapping),接着,使系统API函数(CreateMutex())再创建一个保护其应用的互斥信号量(g_hMutexMapping)。然后,应用程序创建100个线程,每个都允许进行同样的进程,即:通过互体获得访问权,这个操作是由语句:

:: WaitForSingleObject(g_hMutexMapping, INFINITE) ; 实现的。再通过函数(MapViewOfFile())操作将视图映射到文件,将高32位看作有符号整数,将该数值增加(即命令:

++ (* pnData) ; ),再将新数值显示在控制台上,每个线程清除文件的视图并在退出之前释放互斥信号量的语句是:

:: ReleaseMutex(g_hMutexMapping); ,当线程完成时,应用程序关闭并退出。

4.5 实验总结

1.了解了运用CreateFil

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@)