新闻详情

新闻详情

首页 / 资讯中心 / 详情

进程互斥和进程同步

发布时间:2026/9/3 8:54:43来源:尧图网络
进程互斥和进程同步
一、进程互斥由于进程具有独立性和异步性等并发特征计算机的资源有限导致了进程之间的资源竞争和共享也导致了对进程执行过程的制约。1、临界资源和临界区临界部分临界资源一次只能供一个进程访问的资源。临界区把不允许多个并发进程交叉执行的一段程序称为临界区critical region或临界部分critical section。临界区是由属于不同并发进程的程序段共享公用数据或公用数据变量而引起的临界区不可能用增加硬件的方法来解决。因此临界区也可以被称为访问公用数据的那段程序。当一个进程使用该临界资源时其他需要访问该资源的进程必须阻塞直到占用者释放该资源。2、间接制约把这种由于共享某一公有资源而引起的在临界区内不允许并发进程交叉执行的现象称为由共享公有资源而造成的对并发进程执行速度的间接制约。这里的“间接”二字主要是指各并发进程的速度受公有资源的制约而非进程之间的直接制约。3、互斥互斥一组并发进程中的一个或多个程序段因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。也就是说不允许两个以上的共享该资源的并发进程同时进入临界区。一般情况下作为程序段的一个过程不允许多个进程同时访问它。但如果该过程是纯过程则各并发进程可以同时访问它。纯过程是指在执行过程中不改变过程自身代码的一类过程。进程同步方法1、临界区Critical Section:通过对多线程的串行化来访问公共资源或一段代码速度快适合控制数据访问。优点保证在某一时刻只有一个线程能访问数据的简便办法缺点虽然临界区同步速度很快但却只能用来同步本进程内的线程而不可用来同步多个进程中的线程。2、互斥量Mutex:为协调共同对一个共享资源的单独访问而设计的。互斥量跟临界区很相似比临界区复杂互斥对象只有一个只有拥有互斥对象的线程才具有访问资源的权限。优点使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享而且可以在不同应用程序的线程之间实现对资源的安全共享。缺点①互斥量是可以命名的也就是说它可以跨越进程使用所以创建互斥量需要的资源更多所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用量。因为互斥量是跨进程的互斥量一旦被创建就可以通过名字打开它。通过互斥量可以指定资源被独占的方式使用但如果有下面一种情况通过互斥量就无法处理比如现在一位用户购买了一份三个并发访问许可的数据库系统可以根据用户购买的访问许可数量来决定有多少个线程/进程能同时进行数据库操作这时候如果利用互斥量就没有办法完成这个要求信号量对象可以说是一种资源计数器。3、信号量Semaphore:为控制一个具有有限数量用户资源而设计。它允许多个线程在同一时刻访问同一资源但是需要限制在同一时刻访问此资源的最大线程数目。互斥量是信号量的一种特殊情况当信号量的最大资源数1就是互斥量了。优点适用于对Socket套接字程序中线程的同步。例如网络上的HTTP服务器要对同一时间内访问同一页面的用户数加以限制只有不大于设定的最大用户数目的线程能够进行访问而其他的访问企图则被挂起只有在有用户退出对此页面的访问后才有可能进入。缺点①信号量机制必须有公共内存不能用于分布式操作系统这是它最大的弱点②信号量机制功能强大但使用时对信号量的操作分散 而且难以控制读写和维护都很困难加重了程序员的编码负担③核心操作P-V分散在各用户程序的代码中不易控制和管理一旦错误后果严重且不易发现和纠正。4、事件Event: 用来通知线程有一些事件已发生从而启动后继任务的开始。优点事件对象通过通知操作的方式来保持线程的同步并且可以实现不同进程中的线程同步操作。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于MATLAB GUI的教室人数统计系统:从图像处理到算法实现 2026/9/3 8:53:34

基于MATLAB GUI的教室人数统计系统:从图像处理到算法实现

简介:本资源是一套面向MATLAB初学者与图像处理实践者的教室人数统计完整解决方案,聚焦GUI交互设计、实时人数识别与学术论文写作三重能力训练。资源共11个文件,含6张实测场景图像(jpg)、3个核心MATLAB函数脚本&#xf…

阅读更多 →
从零实现机械臂阻抗控制:Matlab/Simulink仿真全解析与工程实践 2026/9/3 8:53:34

从零实现机械臂阻抗控制:Matlab/Simulink仿真全解析与工程实践

简介:本资源是一套面向计算机、电子信息工程及数学等专业本科生的机械臂阻抗控制仿真实践材料,适用于课程设计、期末大作业或毕业设计阶段的算法验证与系统建模需求。压缩包共17个文件,含6个核心MATLAB脚本(如impedance_control.m…

阅读更多 →
亲子编程启蒙:用Python turtle和三个小项目接住孩子的创意 2026/9/3 8:53:34

亲子编程启蒙:用Python turtle和三个小项目接住孩子的创意

如果孩子出去玩了一圈,回家没有第一时间要平板,而是默默递给你一个自己做的小东西,脸上还带着“你快看看”的表情,这多半不是普通日常,而是一个很值得抓住的编程启蒙信号。很多人把“沉浸式投喂”理解成刷短视频、看动…

阅读更多 →
Milvus bootcamp 实操拆解:从安装部署到向量检索用例完整跑通 2026/9/3 8:53:34

Milvus bootcamp 实操拆解:从安装部署到向量检索用例完整跑通

Milvus-io/bootcamp 这个仓库,表面上看只是 Milvus 官方做示例教程的地方,但对刚接触 Milvus 向量数据库的人来说,它比一堆源码更有价值。很多人在搜索里真正想问的其实是:milvus 怎么安装,milvus etcd 是干嘛的&#…

阅读更多 →
OpenScreen 时间轴剪辑完整指南:剪掉废话片段,突出关键操作 2026/9/3 8:53:34

OpenScreen 时间轴剪辑完整指南:剪掉废话片段,突出关键操作

OpenScreen 时间轴剪辑完整指南:剪掉废话片段,突出关键操作 【免费下载链接】openscreen Create stunning demos for free. Open-source, no subscriptions, no watermarks, and free for commercial use. An alternative to Screen Studio. 项目地址:…

阅读更多 →
基于STM32F103的四足机器人步态控制:从原理到完整代码实现 2026/9/3 8:50:34

基于STM32F103的四足机器人步态控制:从原理到完整代码实现

简介:本资源是一套面向嵌入式初学者与机器人爱好者设计的四足机器人步态控制实战代码,基于STM32F103ZGT6主控芯片,使用Keil5开发环境,完整实现小跑、行走、左右转弯、横移及后退等六种基础步态,解决四足机器人底层运动…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞