进程间通信-信号量

消息队列(Message Queue)是一种在不同组件或进程间进行异步通信的机制,它允许应用程序以松耦合的方式交换消息。消息队列就像一个缓冲区,发送者将消息放入队列,接收者从队列中取出消息进行处理。以下为你详细介绍消息队列:

特点

  1. 异步通信:发送者和接收者无需同时在线,发送者将消息放入队列后可以继续执行其他任务,接收者在合适的时候从队列中获取消息。
  2. 解耦:发送者和接收者不需要直接交互,降低了系统间的耦合度,提高了系统的可维护性和可扩展性。
  3. 削峰填谷:在高并发场景下,消息队列可以作为缓冲区,缓解瞬间的流量压力,保证系统的稳定性。
  4. 顺序保证:部分消息队列能够保证消息的顺序性,确保消息按照发送的顺序被处理。

信号量:

基本概念

信号量本质上是一个计数器,它维护着一个整数值。这个整数值表示当前可用的资源数量。信号量支持两种基本操作:

  • P 操作(wait):也称为 “等待” 或 “获取” 操作。当一个线程或进程需要访问共享资源时,它会执行 P 操作。执行 P 操作时,信号量的值会减 1。如果减 1 后信号量的值小于 0,则线程或进程会被阻塞,直到有其他线程或进程释放资源。
  • V 操作(signal):也称为 “释放” 或 “通知” 操作。当一个线程或进程使用完共享资源后,它会执行 V 操作。执行 V 操作时,信号量的值会加 1。如果加 1 后信号量的值小于等于 0,说明有其他线程或进程正在等待资源,此时会唤醒一个等待的线程或进程。

关于信号量为什么是通信?

答案:就是因为通信不仅仅只有通信数据,进程之间的协同也是一种!

1.进程必须识别+能够处理信号----信号没有产生,也要具备处理信号的能力,属于进程内置功能的一部分。

2.进程即便是没有收到信号,也能知道那些信号该怎么处理。

3.当进程真的收到了一个具体的信号的时候,进程可能并不会立即处理这个信号,合适的时候才会处理。

4.一个进程必须当信号产生,到信号开始被处理,就一定会有时间窗口,进程具有临时保存那些信号已经发生了的能力。

键盘是基于中断给cpu发送信息的,而cpu记录数据其实是对cpu进行充放电的过程

用户输入命令,在shell下启动一个前台进程,用户按ctrl-c,这时键盘输入会产生一个硬件中断,被os捕获,从而把这个中断解释成为信号发送给目标前台进程,前台进程因为收到这个信号,进而引起进程退出!

信号与进程之间是异步通知的方式,称为软中断!

信号的产生:

  1. 键盘组合键:Ctrl+c 2、Ctrl+\3
  2. Kill命令:kill+signo
  3. 系统调用:

要知道OS是进程管理者,只有它有资格才能修改task_strcut内部属性!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值