目录
一、 实验题目:Windows进程管理 3
二、实验目的 3
三、实验内容 3
3.1实验内容和步骤 3
(1)编写基本的 Win32 Consol Application 3
(2) 创建进程 3
(3) 父子进程的简单通信及终止进程 4
3.2关键代码 4
3.3程序流程图 5
四、 实验结果与分析 6
(1)编写基本的 Win32 Consol Application 6
(2) 创建进程 6
(3) 父子进程的简单通信及终止进程 7
五、小结与心得体会 8
一、实验题目:Linux进程控制 8
二、实验目的 8
三、实验内容 8
3.1 运用的理论知识 8
3.2实验内容和步骤 9
(1)进程的创建: 9
(2) 子进程执行新任务: 9
3.3关键代码 9
3.4流程图 10
四、实验结果与分析 12
(1)进程的创建: 12
(2)子进程执行新任务: 12
五、小结与心得体会 12
一、实验题目:Linux进程间通信 13
二、实验目的 13
三、实验内容 13
3.1背景知识 13
3.2实验内容和步骤 13
3.3关键代码 14
3.4流程图 15
四、实验结果与分析 15
五、小结与心得体会 15
一、实验题目:Windows线程的互斥与同步 16
二、实验目的 16
三、实验内容 16
3.1实验内容和步骤: 16
3.2 关键代码 16
3.3程序流程图 17
四、实验结果与分析 18
五、小结与心得体会 19
一、实验题目:银行家算法的模拟与实现 20
二、实验目的 20
三、总体设计 20
3.1基本原理与算法 20
3.2模块介绍 20
3.3设计步骤 20
四、详细设计(含主要的数据结构、程序流程图、关键代码等) 20
4.1主要的数据结构 20
4.2程序流程图 21
4.3关键代码 21
五、 实验结果与分析 22
六、 小结与心得体会 23
一、 实验题目:磁盘调度算法的模拟与实现 24
二、实验目的 24
三、总体设计 24
3.1基本原理与算法 24
3.2模块介绍S 24
四、 详细设计 24
4.1程序流程图 24
4.2关键代码 25
五、 实验结果与分析 26
5.1实验结果 26
5.2分析 26
六、小结与心得体会 26
一、实验题目:虚拟内存系统的页面置换算法模拟 27
二、实验目的 27
三、总体设计(含背景知识或基本原理与算法、或模块介绍、设计步骤等) 27
3.1基本原理与算法 27
3.2模块介绍 27
四、 详细设计(含主要的数据结构、程序流程图、关键代码等) 27
4.1数据结构 27
4.2程序流程图 28
4.3关键代码 28
五、 实验结果与分析 30
5.1实验结果 30
5.2分析 30
六、 小结与心得体会 30
一、实验题目:基于信号量机制的并发程序设计 31
二、实验目的 31
三、总体设计 31
3.1基本原理与算法 31
3.2模块介绍 31
3.3设计步骤 31
四、详细设计(含主要的数据结构、程序流程图、关键代码等) 32
4.1数据结构 32
4.2程序流程图 32
4.3关键代码 33
五、实验结果与分析 34
5.1实验结果 34
5.2分析 34
六、小结与心得体会 34
实验一
一、实验题目:Windows进程管理
二、实验目的
(1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序)。
(2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操
作系统的进程概念,理解 Windows 进程的“一生”。
(3)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基
本程序设计方法。
三、实验内容
3.1实验内容和步骤
(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:将清单 2-1 所示的程序清单复制到新创建的 C/C++源程序中。编译成可执行文件。
步骤 5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入 Windows“命令提示符”窗口,然后进入工程目录中的 debug 子目录,执行编译好的可执行程序,列出运行结果 (如果运行不成功,则可能的原因是什么?)
(2) 创建进程
本实验显示了创建子进程的基本框架。该程序只是再一次地启动自身,显示它的系统进程 ID和它在进程列表中的位置。
步骤 1:创建一个“Win32 Consol Application”工程,然后拷贝清单 2-2 中的程序,编译成可执行文件。
步骤 2:在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。按下 ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。
步骤 3:在“命令提示符”窗口加入参数重新运行生成的可执行文件,列出运行结果。按下ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。
步骤 4:修改清单 2-2 中的程序,将 nClone 的定义和初始化方法按程序注释中的修改方法进行修改,编译成可执行文件(执行前请先保存已经完成的工作)。再按步骤 2 中的方式运行,看看结果会有什么不一样。列出行结果。从中你可以得出什么结论?说明 nClone 的作用。变量的定义和初始化方法(位置)对程序的执行结果有影响吗?为什么?
(3) 父子进程的简单通信及终止进程
步骤 1:创建一个“Win32 Consol Application”工程,然后拷贝清单 2-3 中的程序,编译成可执行文件。
步骤 2:在 VC 的工具栏单击“Execute Program”(执行程序) 按钮,或者按 Ctrl + F5 键,或者在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。
步骤 3:按源程序中注释中的提示,修改源程序 2-3,编译执行(执行前请先保存已经完成的工作),列出运行结果。在程序中加入跟踪语句,或调试运行程序,同时参考 MSDN 中的帮助文件
CreateProcess()的使用方法,理解父子进程如何传递参数。给出程序执行过程的大概描述。
步骤 4:按源程序中注释中的提示,修改源程序 2-3,编译执行,列出运行结果。
步 骤 5 : 参 考 MSDN 中 的 帮 助 文 件 CreateMutex()、 OpenMutex()、 ReleaseMutex()和WaitForSingleObject()的使用方法,理解父子进程如何利用互斥体进行同步的。给出父子进程同步过程的一个大概描述