第六次小课
进程间通信
(下)
华软软件工程系
主要章节
进程间通信实验课主要内容
本周大课内容回顾
通过实验理解共享内存通信
通过实验理解Linux信号量
了解Linux信号量与消息缓冲通信、内存共享通信之间的差异
布置作业1
主要内容
第一部分
本周大课
内容回顾
进程间通信(下)
共享内存
Linux信号量
主要内容
Linux信号量
Linux中系统是通过何种数据结构管理信号量集的?
在sembuf结构中semop>0、semop<0、semop==0分别表示什么含义?
对信号量赋值和普通变量赋值有区别吗?
Linux共享内存通信
shmget(key,size,flag):创建或获取共享内存id
shmat(int shmid,char *shmaddr,int msgflg,ulong *raddr)
shmat(int shmid,int *shmaddr,int msgflg,ulong *raddr) :附接到共享内存
shmdt(viraddr):切断与共享内存的连接
shmctl(int shmid,int cmd,struct shmid_ds *buf):撤销共享内存
Linux信号量
主要系统调用函数:
创建或获取信号量集: int semget(key,nsems,semflg)
对信号量的P、V操作: int semop(semid,
struct sembuf *sops,nsops)
实例:只有1个元素的PV操作
struct sembuf P,V;
semop(semid,&P,1);
semop(semid,&V,1);
对信号量集的控制函数: semctl(semid,semnum,cmd,arg)
有关头文件: linux/
第二部分
进程间通信
实验
进程间通信(下)
共享内存
信号量
主要内容
进程间通信实验
利用信号量实现进程互斥
利用信号量实现父子进程对临界资源的互斥访问。每个进程进入该临界区3次。
父进程进入临界区后显示prnt in,出临界区则显示prnt out;
子进程进入临界区后显示chld in,出临界区则显示chld out;
目的:了解信号量实现进程互斥的编程实现
理解要点:
semget()、semop()、semctl()函数的使用
修改程序,若不使用信号量,观察结果与使用信号量有何区别
利用信号量实现进程互斥
导游服务案例分析 来自淘豆网m.daumloan.com转载请标明出处.