下载此文档

进程间同步和通信-资料.ppt


文档分类:通信/电子 | 页数:约38页 举报非法文档有奖
1/38
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/38 下载此文档
文档列表 文档介绍
进程间同步和通信-资料
进程间通信
IPC,Inter-Process Communication
Unix系统提供的基本的IPC包括:
1、管道和FIFO(有名管道)
2、消息
3、信号量
4、共享内存区
5、套接字
xlatyp的消息
IPC_NOERROR:如果队列中满足条件的消息内容大于所请求的msgsz字节,则把该消息截断,截断部分将丢失。

16
Embedded Operating Systems
消息队列的其他操作
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
对由msqid标识的消息队列执行cmd操作:
IPC_STAT:获取消息队列信息,返回的信息存贮在buf中;
IPC_SET:设置消息队列的属性,要设置的属性存储在buf中;可设置属性包括:、、,同时,也影响msg_ctime成员。
IPC_RMID:删除消息队列

17
Embedded Operating Systems
3、信号量
Semphore,用来对资源进行并发控制访问
通常是一个计数器
如果资源可用,值>0
如果不可用,值<=0
当进程需要访问资源,但资源不可用时,将计数值-1,并阻塞
当进程释放资源,使得资源有资源可用时,就唤醒被阻塞的进程

18
Embedded Operating Systems
获得信号量集描述符
semop用来获取或释放信号量对应的资源

19
Embedded Operating Systems
对semop中sembuf结构的解释
sembuf中包含下列几个分量:
unsigned short sem_num; //要操作的信号量的序号
short sem_op; //要进行的操作
short sem_flg; //与操作相关的一些标记
其中,sem_flg可以是
IPC_NOWAIT:当期望的操作无法完成时,直接返回
和SEM_UNDO:自动释放标记
sem_op的值确定要进行的操作
>0:释放资源
=0:wait-for-zero
<0:申请资源

20
Embedded Operating Systems
Semctl对信号量进行控制,可以用来删除一个信号量
第4个参数可选,是一个union,其含义根据cmd进行解释
union semun {
int val;
struct semid_ds *buf;
unsigned short * array;
struct seminfo *__buf;
}

21
Embedded Operating Systems
对semctl中cmd等的解释
cmd可以是:
IPC_STAT,将信号量集的信息复制到第四个参 数所提示的空间中,此时第四个参数为:struct semid_ds *buf。此时第二个参数无用
IPC_SET,与上一个操作相反
IPC_RMID,删除信号量集,不使用第四个参数
GETALL/SETALL,使用第四个参数:unsigned short* array,获取/设置所有信号量的值
GETVAL/SETVAL,前者使用第4个参数:int val,获得/设置指定信号量的值
GETNCNT、GETPID、GETZCNT

22
Embedded Operating Systems
Cmd使用举例
union semun args;
=1;
semctl(sem_id,sem_no,SETVAL,args);
int i=semctl(sem_id,sem_no,GETVAL);
semctl(sem_id,sem_no,IPC_RMID);

23
Embedded Operating Systems
使用信号量互斥

注意:示例程序仅仅是为了说明进程之间的互斥

24
Embedded Operating Systems
4、共享内存
允许两个或多个进程通过把公共数据放入一个共享内存区来访问它们
获得或创建一个共享内存区的IPC标志符
将一个共享内存区“附加”到一个进程上,
使得

进程间同步和通信-资料 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数38
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小可爱
  • 文件大小2.57 MB
  • 时间2022-05-17