进程同步与通信

简介: 进程同步与通信

进程同步与通信

进程同步与互斥

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

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都需要取状态值,状态值符号要求才准许进入临界区
  • 读写锁
  • 读写锁用户保护经常访问但通常是只读访问的数据
  • 十字转门锁
  • 第一个阻塞某个互斥对象的线程的的十字转门成为对象的十字转门,以后所有阻塞于该锁上的线程将增加到该十字转门中。
  • 进程通信
  • 进程通信类型
  • 共享存储系统
  • 消息传递系统
  • 管道通信
目录
相关文章
|
1天前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
1天前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
17天前
|
Python
Python IPC深度探索:解锁跨进程通信的无限可能,以管道与队列为翼,让你的应用跨越边界,无缝协作,震撼登场
【8月更文挑战第3天】Python IPC大揭秘:解锁进程间通信新姿势,让你的应用无界连接
13 0
|
1月前
|
消息中间件 分布式计算 网络协议
从管道路由到共享内存:进程间通信的演变(内附通信方式经典面试题及详解)
进程间通信(Inter-Process Communication, IPC)是计算机科学中的一个重要概念,指的是运行在同一系统或不同系统上的多个进程之间互相发送和接收信息的能力。IPC机制允许进程间共享数据、协调执行流程,是实现分布式系统、多任务操作系统和并发编程的基础。
从管道路由到共享内存:进程间通信的演变(内附通信方式经典面试题及详解)
|
2月前
|
数据挖掘 调度 开发者
Python并发编程的艺术:掌握线程、进程与协程的同步技巧
并发编程在Python中涵盖线程、进程和协程,用于优化IO操作和响应速度。`threading`模块支持线程,`multiprocessing`处理进程,而`asyncio`则用于协程。线程通过Lock和Condition Objects同步,进程使用Queue和Pipe通信。协程利用异步事件循环避免上下文切换。了解并发模型及同步技术是提升Python应用性能的关键。
51 5
|
1月前
|
Python
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
|
1月前
|
安全 API Python
`multiprocessing`是Python的一个标准库,用于支持生成进程,并通过管道和队列、信号量、锁和条件变量等同步原语进行进程间通信(IPC)。
`multiprocessing`是Python的一个标准库,用于支持生成进程,并通过管道和队列、信号量、锁和条件变量等同步原语进行进程间通信(IPC)。
|
1月前
|
安全 Linux 数据格式
【Linux】进程通信----管道通信(下)
【Linux】进程通信----管道通信(下)
21 0
|
1月前
|
Unix Linux
【Linux】进程通信----管道通信(上)
【Linux】进程通信----管道通信(上)
32 0