进程的共享存储区通信--带答案版

 

实验二进程管理

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图纸等内容。


TOP最近更新内容

    长城小学关爱留守儿童工作制度
    园林史名词解释
  • 上一篇:2001至2015年山东历年高考作文题
  • 下一篇:全面推进依法行政实施纲要