进程同步与通信

简介: 进程同步与通信

进程同步与通信

进程同步与互斥

  • 并发带来的问题
  • 全局变量的更新变得危险
  • 操作系统管理、分配资源困难
  • 定位程序的错误很困难
  • 进程的交互
  • 互斥(同一资源不能同时被不同进程访问)
  • 同步(多个进程必须按照某种顺序来执行才能完成某项任务)
  • 通信(进程间消息传递)
  • 临界资源与临界区
  • 临界资源:某段时间只允许一个进程访问的资源
  • 临界区:进程中访问临界资源的那段代码称为临界区
  • 进程访问临界区的结构

graph TB

A(进入区)-->B(临界区)

B-->D(退出区)

D-->E(剩余区)

  • 临界区进入准则
  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待
  • 互斥实现的硬件方法
  • 禁止中断
  • 专用机器指令
  • 互斥实现的软件方法
  • 基本思路:进程在进入区检查和设置一些标志,如果进程已在临界区,则在进入去循环等待;在退出区修改标志。
  • 信号量以及PV操作
  • 最初定义的信号量包括一个整型值s以及等待队列s.queue。信号量通过两个原语P、V操作来访问它
  • 信号量的物理意义:
  • 信号量的初值表示某种资源的数目
  • P操作代表请求资源
  • V操作代表释放资源
  • 当s.value<0时,|s.value|表示等待队列的进程数
  • AND信号量
  • 对于单PV操作可能引发的死锁问题。引发出了AND信号量的产生,继而发展到信号量集。
  • 其思想是把进程运行过程中需要的所有临界资源一次性全部分配给进程
  • 管程: 信号量实现进程间的互斥、同步。但是需要使用许多信号量,多次PV操作,且次序不能更改。为了解决这些问题,出现了另一高级同步工具-----管程
  • 同步互斥实例
  • 自旋锁
  • 任何进程获取CPU都需要取状态值,状态值符号要求才准许进入临界区
  • 读写锁
  • 读写锁用户保护经常访问但通常是只读访问的数据
  • 十字转门锁
  • 第一个阻塞某个互斥对象的线程的的十字转门成为对象的十字转门,以后所有阻塞于该锁上的线程将增加到该十字转门中。
  • 进程通信
  • 进程通信类型
  • 共享存储系统
  • 消息传递系统
  • 管道通信
目录
相关文章
|
14天前
|
存储 Unix Linux
进程间通信方式-----管道通信
【10月更文挑战第29天】管道通信是一种重要的进程间通信机制,它为进程间的数据传输和同步提供了一种简单有效的方法。通过合理地使用管道通信,可以实现不同进程之间的协作,提高系统的整体性能和效率。
|
14天前
|
消息中间件 存储 供应链
进程间通信方式-----消息队列通信
【10月更文挑战第29天】消息队列通信是一种强大而灵活的进程间通信机制,它通过异步通信、解耦和缓冲等特性,为分布式系统和多进程应用提供了高效的通信方式。在实际应用中,需要根据具体的需求和场景,合理地选择和使用消息队列,以充分发挥其优势,同时注意其可能带来的复杂性和性能开销等问题。
|
18天前
|
Python
多进程同步之文件锁
【10月更文挑战第16天】文件锁是一种常用的多进程同步机制,它可以用于确保多个进程在访问共享资源时的互斥性。在使用文件锁时,需要注意锁的粒度、释放、竞争和性能等问题。通过合理使用文件锁,可以提高多进程程序的正确性和性能
|
1月前
|
存储 Python
Python中的多进程通信实践指南
Python中的多进程通信实践指南
20 0
|
2月前
|
Java Android开发 数据安全/隐私保护
Android中多进程通信有几种方式?需要注意哪些问题?
本文介绍了Android中的多进程通信(IPC),探讨了IPC的重要性及其实现方式,如Intent、Binder、AIDL等,并通过一个使用Binder机制的示例详细说明了其实现过程。
311 4
|
3月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
3月前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
3月前
|
消息中间件 存储 安全
python多进程并发编程之互斥锁与进程间的通信
python多进程并发编程之互斥锁与进程间的通信
|
3月前
|
Python
Python IPC深度探索:解锁跨进程通信的无限可能,以管道与队列为翼,让你的应用跨越边界,无缝协作,震撼登场
【8月更文挑战第3天】Python IPC大揭秘:解锁进程间通信新姿势,让你的应用无界连接
26 0
|
4月前
|
Python
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。

热门文章

最新文章

相关实验场景

更多