实验二进程管理
2.4 进程的共享存储区通信
1.实验目的
(1) 通过编写共享存储区的通信程序,理解Linux共享存储区机制。
(2) 掌握进程共享存储区通信相关系统调用。
(3) 理解系统调用和用户命令的区别。
2.实验类型:验证型
3.实验学时:2
4.实验原理和知识点
(1) 实验原理:并发运行的进程之间,可以通过共享存储机制进行通信。
(2) 知识点:共享存储的创建、附接和断接
5.实验环境(硬件环境、软件环境):
(1)硬件环境:Intel Pentium III 以上CPU,128MB以上内存,2GB以上硬盘
(2)软件环境:linux操作系统。
6. 预备知识
(1) 共享存储区
共享存储区机制直接通过共享虚拟存储空间进行通信。通信时,进程首先提出申请,系统为之分配存储空间并返回共享区标示符。这时,进程把它附加到自己的虚拟存储空间中。通信的进程对共享区的访问要互斥地进行。
(2) shmget()系统调用:
头文件 #include <sys/shm.h>
函数原型 int shmget(key_t key, int size, int flag);
功能:申请一个共享存储区。成功返回共享内存标识符,失败则返回-1。
参数:key是共享存储区关键字。size是存储区大小。flag访问权限和控制标志。
(3) shmat()系统调用:
头文件 #include <sys/shm.h>
函数原型 int shmat(int id, char *addr, int flag);
功能:将一个共享存储区附接到进程的虚地址空间。成功返回起始地址,失败则返回-1。 数:id是共享存储区标识符。addr是附接的虚地址。flag访问权限和控制标志。
(4) shmdt()系统调用:
头文件 #include <sys/shm.h>
函数原型 int shmdt(char *addr);
功能:一个共享存储区与指定进程的断开。
(5) shmctl()系统调用:
头文件 #include <sys/shm.h>
函数原型 int shmctl(int id, int cmd, struct_ds* buf;
功能:共享存储区的控制操作。成功返回0,失败则返回-1。
参数:id是共享存储区标识符。cmd为IPC_STAT共享存储的区的控制信息块读入buf。cmd为IPC_SET则共享存储区的控制信息块读入buf。cmd 为IPC_RMID则删除shmid指示的共享内存。
7.实验内容及步骤:
【任务】
www.99jianzhu.com/包含内容:建筑图纸、PDF/word/ppt 流程,表格,案例,最新,免费下载,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。