【面试练习题】进程间通信方式的区别

【1】管道

  • 亲缘关系(父子、兄弟)

  • 单向通信,如果需要双工通信,则需要建立两个管道

  • 管道缓冲区大小受限制(由操作系统内核设定)

  • 管道传输的是无格式的字节流,需要输入输出双方事先约定好数据的格式

  • 是一个只存在在内存中的文件

 

【2】有名管道(又叫FIFO)

  • 有名 + 非亲缘

  • 可以一个服务器接收多个客户端的管道。比如客户先把自己的进程号告诉服务器,然后管道用自己的进程号命名。

 

【3】消息队列

  • 相比于FIFO,消息对垒可以独立于发送和接收进程存在,消除了命名管道打开和关闭的时候可能带来的困难(比如一方要发送消息了,但是管道由另一方建立还没有建立?)。

  • 双工的,可以同时收发消息

  • 可以通过消息类型有选择地接受数据,而不是默认接收

  • 但在逐渐被淘汰,可以用流管道或者套接字来取代它。

 

【4】共享内存

  • 优点:操作方便,接口简单,数据不用传送、效率高。

  • 缺点:没有实现同步机制,需要借助其他的手段(比如信号量)进行同步

PS:共享内存的同步除了使用POSIX或者SYSTEM V 信号量,还可以使用信号(signal)。

 

【5】信号量

  • 辅助进程间同步(一般进程间是system V信号量,线程间是POXIS信号量)(比如PV操作时)

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 面试中经常会问到线程和进程区别进程是指一个运行中的程序,它在计算机中拥有独立的内存空和系统资源,可以进行通信、同步和竞争,并在某些情况下可能出现死锁。而线程是进程中的执行上下文或执行序列,它是为了实现在CPU上同时执行多个任务而引入的概念。与进程不同的是,线程共享进程的内存空,可以方便地进行通信。\[3\]进程与线程的区别还可以从内存结构、通信方式等方面进行深入探讨。进程进程不能共享内存,而线程可以共享进程的内存空进程通信相对不方便,而线程之通信更加方便。进程通信方式包括管道、消息队列、共享内存等,而线程之通信可以直接通过共享内存进行。不同的通信方式有各自的优劣点,需要根据具体的场景来选择合适的方式。\[2\]了解这些内容可以帮助你更好地回答面试中关于线程和进程区别的问题。 #### 引用[.reference_title] - *1* *2* *3* [面试高频题:线程与进程区别](https://blog.csdn.net/J_avaSmallWhite/article/details/111320085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值