通信-----管道

为啥要进行进程之间的通信,因为进程是独立资源分配的单元,但不同的进程之间需要进行信息交互,与状态的传递

linux下IPC机制的分类:管道、信号、共享内存、消息队列、信号量、套接字

 

命名管道: 

1.如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。2.命名管道是一种特殊类型的文件

命名管道与匿名管道之间的唯一区别就是创建与打开的方式不同,匿名管道用pipe函数进行创建并打开,命名管道用fifo函数进行创建,open函数打开.

fd[2]用于保存文件描述符    fd[0] 为读端 fd[1]为写端

 

 

共享内存:所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。

 

SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并Core Dump

什么是core dump:  当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存在磁盘上,文件名通常是core,这叫做Core Dump

信号的产生:

1.通过终端按键产生

 

 

阻塞信号:

被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作

每个信号都有两个标志位分别表示阻塞(block)和未决(pending),还有一个函数指针表示处理动作。信号
产生时,内核在进程控制块中设置该信号的未决标志,直到信号递达才清除该标志。在上图的例子
中,SIGHUP信号未阻塞也未产生过,当它递达时执行默认处理动作。
SIGINT信号产生过,但正在被阻塞,所以暂时不能递达。虽然它的处理动作是忽略,但在没有解除阻塞之前
不能忽略这个信号,因为进程仍有机会改变处理动作之后再解除阻塞。

 

线程拥有的自己的数据:线程id 一组寄存器   栈    error    信号屏蔽字    调度优先级

 

互斥(0/1)决定进程是否可以访问临界资源,同步{同步计算的数是资源的数量}(可以>1也可以小于0,小于0代表着有几个进程在等待队列中)决定进程是否加入等待队列.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值