linux 进程通信

1.linux进程间通信的目的是什么?

1.数据传输,一个进程将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。

2.共享数据,多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程立刻看到。

3.通知事件,一个进程通知另一个或一组进程发生了某件事。

4.资源共享,多个进程之间共享同样的资源。需要内核提供锁和同步机制。

5.进程控制,有些进程希望完全控制另一个进程的执行,控制进程希望能够拦截另一个进程的信息和异常。


2.何为管道?

管道是进程间通信中最古老的方式,它包括无名管道有名管道两种,前者用于父进程和子进程间的通信,后者用于运行于同一台机器上的任意两个进程间的通信。


3.管道通信的特点是什么

1.管道是半双工的,数据只能向一个方向流动,需要双方通信时,需要建立两个管道。

2.只能同于父子进程或兄弟进程之间

3.单独构成一种文件系统,管道对于两端的进程而言,就是一个文件,但他不是普通的文件,不属于某种文件系统,而是自立门户,并且只存在于内存中。

4.数据的读入和写入,一个进程写的内容被另一端的进程读出,写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓存区的头部读出数据。

 

4.有名管道与普通管道的区别优缺点

管道只能用于具有亲缘关系的进程间通信,在有名管道提出后,该限制可以突破,FIFO不同于管道之处在于,它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中,这样,即使与FIFO的创建进程不存在血缘关系的进程,只要可以访问该路劲,就能彼此通过FIFO相互通信,因此,不相关的进程也能通过FIFO交互数据,FIFO严格遵循先进先出,对管道及FIFO的读总是从开始处返回数据的,对它们的写则把数据添加到末尾,不支持lseek等文件定位操作。


5..消息队列与管道、有名管道相比的优缺点

消息队列具有更大的灵活性,首先它提供格式字节流,有利于减少开发人员的工作量,其次消息具有类型,在实际应用中,可以作为优先级使用,这两点是管道和有名管道所不能比的。同样,消息队列可以在几个进程间复用,而不管这几个进程是否具有血缘关系,这一点与有名管道相似,但消息队列是随内核持续的,与有名管道相比(随进程持续),生命力更强,应用空间更大。

 

6.信号灯与其他通信方式的不同之处

信号灯主要提供对进程间共享资源访问控制机制,相当于内存中的标志,进程可以根据它判断是否能够访问某些共享资源,同时,进程也可以修改该标志,除了用于访问控制外,还可以用于进程同步。


7.什么叫共享内存

共享内存是最有用的进程间通信方式,也是最快的IPC形式,两个不同进程AB共享内存的意思是,同一块物理内存被映射到进程A,B个字的进程地址空间,进程A可以即时看到进程B对共享内存中数据的更新,反之亦然,由于多个进程共享同一块内存区域,必须要某种同步机制,互斥锁和信号量都可以

8. 信道常用于哪些方面?

  shell中时常会用到管道(作为输入输出的重定向),在这种应用方式下,管道的创建对于用户来说是透明的。

  用于具有亲缘关系的进程间通信,用户自己创建管道,并完成读写操作。

 

 

9. 信号的本质是什么?

  信号实在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。

 

 

10. 信号来源是什么?

  硬件来源(按下键盘或其他硬件故障);

  软件来源与一些非法运算等操作。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值