可以使用 who 命令验证有 3 个 stu 用户登录;
可以经常性使用 ps –l 命令来查看另外两个窗口中的进程的状态
9.切换到 writer 窗口(第 2 个窗口),通过对 writer 的问题回答“2”,退出 writer。切
换到 reader 窗口(第 1 个窗口),通过 Ctrl+C 终止 reader 进程。
五、实验项目的设置与内容提要
1. 同样的源程序,reader 和 writer 进程是怎样各自找到自己的定位的?
2. reader 和 writer 是怎样通过信号量(semphore)实现同步的?writer 是如何得知这
一对信号量的 id 的?
3. 数据是如何从 writer 传递到 reader 的?
4. writer 是如何得知共享内存的 id 的?
5. 在 reader 中,是如何捕获 Ctrl-C 信号(signal)的?捕获后是如何处理的?
6. 一般来说,在 Linux 中使用共享内存(shared memory)的流程应该怎样?使用哪
些系统调用?
7. 一般来说,在 Linux 中使用信号量(semaphore)的流程应该怎样?使用哪些系统
调用?
8. 这里的共享内存,和使用带 CLONE_VM 标志的 clone()系统调用创建的两个
task 之间共享的内存,有什么异同?
序
号
实验项目名称
实验
时数
每组
人数
实验
类型
实验
要求
实验
类别
内容提要
1
(1)进程间通信机
制(共享内存)
4 1
基础 必修 技术
基础
学习并掌握分布式系统中
的进程间通信机制:共享内存。
2
(2)进程间通信机
制(信号量)
4 1
设计 必修 技术
基础
学习并掌握分布式系统中的进
程间通信机制:信号量。
六、考核方式
(1)每次任务完成后由指导老师逐个的检查实验内容、结果并评分,不符合要求的重做。
(2)上机考勤登记,以及根据各次实验情况和报告完成质量综合评分。
附录 1
共享内存的使用
共享内存共有 4 个系统调用:shmget,shmat,shmdt,shmctl
int shmget(key_t key, int size, int shmflg);
典型的创建共享内存的用法