预览加载中,请您耐心等待几秒...
1/2
2/2

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统实验指导题1、创建进程及进程通信(4学时)要求:创建进程,实现消息通信和共享内存通信。示例程序:ProcessA.exeProcessB.exe简要说明:本例用三种方法实现进程通信,仅用于示例目的,没有进行功能优化。在进程A中输入一些字符,点“利用SendMessage发送消息”按钮可将消息发到进程B。在进程A中输入一些字符,点“写数据到内存映像文件”按钮,然后在进程B中点“从内存映像文件读数据”按钮可收到消息。先在进程B中点“创建管道并接收数据”按钮,然后在进程A中输入一些字符,点“写数据到管道文件”按钮可将消息发到进程B。(重复第3步每次可发一条消息)参考源代码(非示例程序的源代码):参见“创建进程”和“通过消息传递数据”两个文件夹及SendMessage.txt。共享内存通信可参考MemFile.txt。注:有兴趣的同学可以自己查找资料实现管道通信(参见pipe.txt)题2、创建线程及线程通信(4学时)要求:创建线程,利用互斥实现线程共享变量通信。示例程序:Thread.exe简要说明:点“创建线程”按钮,创建两个线程,一个线程不断对一个变量加1,结果显示在第一个文本框中。另一个线程不断对另一个变量减1,结果显示在第二个文本框中。这两个线程之间没有交互,仅用于演示线程的创建。演示线程互斥,点“线程互斥”按钮,创建两个线程,一个线程不断循环,每次循环对共享变量x做100次加1操作(这100次加1操作作为一个临界区CSa),另一个线程不断循环,每次循环对共享变量x做100次减1操作(这100次减1操作作为一个临界区CSb),结果显示在第三个文本框中。可以看到结果是从0到100,然后又从100回到0。可见CSa和CSb两个临界区是互斥的。除了没有互斥,其它同2,结果显示在第四个文本框中。可见CSa和CSb两个临界区的执行是有交叉的,CSa的执行可能被CSb打断,CSb的执行也可能被CSa打断。参考源代码(非示例程序的源代码)参见“线程同步”和ThreadMutex两个文件夹。注:有兴趣的同学可以用不同的方法实现线程互斥