全球旧事资料 分类
操作系统第三次实验
张焓1实验名称:
进程间的信息通信
2实验目的:
了解和熟悉Li
ux支持的通信机制、共享存储区机制及信号量机制。
3实验方法
1在shmdatah中编写共享的内存区域存放的数据的结构;
2编写P2c,首先声明一些标识符与将会用到的地址:
3继续编写P2c,我们开始在P2c中创建共享内存,注意这里创建的贡献内存key_t为1234,在P1c中我们需要用到这一个key,以使得两程序可以通过共享内存进行通信:
4继续编写P2c,将共享内存连接到当前进程的地址空间中:
5继续编写P2c,读取共享内存中缓存的数据,并将该数据输出显示于屏幕;并且在检测到输入”e
d”前重复输出在P1c中输入的存入共享的内存缓冲区中的数据:
f6继续编写P2c,在所有执行操作已经结束(即输入了”e
d”后)对共享的内存缓冲区进行清理:
7编写完成后编译P2c生成可执行文件P2
8在P1c中首先利用fork函数创建一个子进程,在子进程中使用execlp调用可执行文件P2:
9在子程序创建成功、并已对必要参数进行预处理后,我们创建一个共享内存,用到
f了第3步中的key_t:1234:
10将共享内存地址连接到当前进程的地址空间:
11设置共享内存,在这里P1c不停的在屏幕中提示用户输入字符,在用户输入过后P1将输入的内容放进共享的内存缓冲区,P1进入等待状态,当子程序P2就绪后由P2提取共享的内存缓冲区中的数据并显示在屏幕上,在P2成功输出后将共享内存中的数据中的writte
项修改,以此告诉P1已经处理完毕:
12直到用户输入了”e
d”后,P1才停止继续调用P2程序:
13在整个程序结束前,我们切断P1与共享的内存缓冲区的连接:
14最后将P1c编译后运行:
f4实验步骤
1启动计算机并运行li
ux系统;2打开终端进行程序书写P1c,P2c;3根据Li
ux系统的gcc自带编译器进行运行编译;4分析运行出现的问题;5观察运行结果,并思考;6退出终端并写出实验报告;
5主要结论
通过这次实验,我对Li
ux支持的消息通讯机制,共享存储区信息量机制以及相应同步互斥有了更好的了解;
6分析和讨论
由于保护的缘故,通常一个进程不能直接访问另一个进程的资源,也就是说,进程之间互相封闭。但在一个复杂的应用系统中,使用多个相关的进程来共同完成一项任务是时常发生的,因此进程之间通信是必须的,进程通过通信来共享资源和信息,一个操作系统内核必须提供进程间的通信机制。而在这次实验中主要就用到了C语言库sysshmh中的三个函数使得在主程序和子程序中创建了一r
好听全球资料 返回顶部