进程的同步与互斥

现代操作系统采用多道程序设计机制,多个进程可以并发执行,CPU在进程之间来回切换,共享某些资源,提高了资源的利用率,但这也使得处理并发执行的多个进程之间的冲突和相互制约关系成为了一道难题。如果对并发进程的调度不当,则可能会出现运行结果与切换时间有关的情况,令结果不可再现,影响系统的效率和正确性,严重时还会使系统直接崩溃。


多进程的系统中避免不了进程间的相互关系。进程间的关系主要有两种:同步互斥


一、同步


同步关系,也成为直接制约关系。指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。这些线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。


一个很典型的例子就是公共汽车上司机和售票员直接的关系,如下所示:


再例如,输入进程A通过单缓冲向进程B提供数据。当该缓冲区空时,进程B不能获得所需数据而阻塞,一旦进程A将数据送入缓冲区,进程B被唤醒。反之,当缓冲区满时,进程A被阻塞,仅当进程B取走缓冲数据时,才唤醒进程A。



二、互斥

互斥关系,也称为间接制约关系。由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥。


一个很典型的例子就是系统的不同的进程同时要求使用打印机,如下图所示。



三、同步和互斥的特点比较


四、临界资源和临界区

1)临界资源

一次只能被一个进程所占用的资源就是所谓的临界资源。比如:打印机。

2)临界区

访问临界资源的那段代码称为临界区。多个进程的临界区成为相关临界区。


为了保证临界资源的正确使用,可以把临界资源的访问过程分成四个部分:

①进入区。为了进入临界区使用临界资源,在进入区要检查可否进入临界区,如果可以进入临界区,则应设置正在访问临界区的标志,以阻止其他进程同时进入临界区。

②临界区。进程中访问临界资源的那段代码,又称临界段。

③退出区。将正在访问临界区的标志清除。

④剩余区。代码中的其余部分。


使用临界区时必须遵守的规则:

①空闲让进:临界资源空闲时一定要让进程进入,不发生“互斥礼让”行为。

②忙则等待:临界资源正在使用时外面的进程等待。

③有限等待:进程等待进入临界区的时间是有限的,不会发生“饿死”的情况。

④让权等待:进程等待进入临界区是应该放弃CPU的使用。


参考资料:

http://www.eygle.com/digest/2004/12/osprocess_lock_latchs_emaphores.html

http://c.biancheng.net/cpp/html/2596.html

http://blog.jobbole.com/86709/

http://www.cnblogs.com/CareySon/archive/2012/04/14/Process-SynAndmutex.html




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

缓存击穿/穿透/雪崩

缓存击穿/穿透/雪崩Intro使用缓存需要了解几个缓存问题,缓存击穿、缓存穿透以及缓存雪崩,需要了解它们产生的原因以及怎么避免,尤其是当你打算设计自己的缓存框架的时候需要考虑如何处理这些问题。缓存击穿一般的缓存系统,都是按照…

99%的人不知道搜索引擎的6个技巧

点击上方“dotNET全栈开发”,“设为星标”加“星标★”,每天11.50,好文必达全文约900字,预计阅读时间1分钟今天看了一期seo优化的视频,其中就有这么一篇关于百度搜索的几个小技巧,这里整理出来,…

用信号量解决进程的同步与互斥

转自:http://www.cnblogs.com/whatbeg/p/4435286.html 现代操作系统采用多道程序设计机制,多个进程可以并发执行,CPU在进程之间来回切换,共享某些资源,提高了资源的利用率,但这也使得处理并发执行的多个进程…

扎心了,程序员2017到2019经历了什么?

刷爆朋友圈的2017-2019到底是什么梗?只剩下33天了,就到2020年了最后一批90后,马上就要30了?一到年底,就会陷入回忆和比较中近几日,网友开始将2017年和2019年进行对比,不少人晒出了自己在17年和1…

【.NETCore 3】Ids4 ║ 统一角色管理(上)

前言书接上文,咱们在上周,通过一篇《思考》 性质的文章,和很多小伙伴简单的讨论了下,如何统一同步处理角色的问题,众说纷纭,这个我一会儿会在下文详细说到,而且我最终也定稿方案了。所以今天咱们…

.NET Core 3.0 使用Nswag生成Api文档和客户端代码

摘要在前后端分离、Restful API盛行的年代,完美的接口文档,成了交流的纽带。在项目中引入Swagger (也称为OpenAPI),是种不错的选择,它可以让接口数据可视化。下文将会演示利用Nswag如何生成Api文档利用NSwa…

深入研究 Angular 和 ASP.NET Core 3.0

本文要点:可以把多个 Angular 应用程序集成到 ASP.NET 网站中把 Angular 代码打包成 Web 组件是引导 Angular 应用程序的好方法可以把用 Angular 编写的 Web 组件轻松地集成到 ASP.NET 视图中把 Angular 解决方案构造成 Angular 应用程序的集合以实现更好的代码重用…

操作系统内存管理--简单、页式、段式、段页式

一、内存管理的目的和功能 内存一直是计算机系统中宝贵而又紧俏的资源,内存能否被有效、合理地使用,将直接影响到操作系统的性能。此外,虽然物理内存的增长现在达到了N个GB,但比物理内存增长还快的是程序,所以无论物理…

网易裁员背后,芸芸众生,相煎何急

十一月初拖家带口去了上海,到了著名的城隍庙参观,无意中看到了一个仅出现在历史书上的古老物件“西洋镜”,仿佛跨越百年,来到那个如裹脚布般冗长而乏味的古老年代,看到了一群有一群卑微的小民在生活的裹挟之下&#xf…

.NET Core on K8S 学习与实践系列文章索引 (更新至20191126)

更新记录:-- 2019-11-26 增加Docker容器日志系列文章近期在学习Kubernetes,基于之前做笔记的习惯,已经写了一部分文章,因此给自己立一个flag:完成这个《.NET Core on K8S学习实践》系列文章!这个系列会持续…

ASP.NET Core gRPC 使用 Consul 服务注册发现

一. 前言gRPC 在当前最常见的应用就是在微服务场景中,所以不可避免的会有服务注册与发现问题,我们使用gRPC实现的服务可以使用 Consul 或者 etcd 作为服务注册与发现中心,本文主要介绍Consul。二. Consul 介绍Consul是一种服务网络解决方案&a…

Excel催化剂插件功能修复与更新汇总篇之十

在半年时间里,自己使用过程中,发现的一些小bug,更新了一下,也追加了一些自定义函数,不成系统,就单独放在修复与更新系列中。一、第24波-批量发送邮件并指点不同附件不同变量Excel催化剂功能第24波-批量发送…

OSI/RM 开放系统互联参考模型

开放式系统互联通信参考模型(即:Open System Interconnection Reference Model,简称为OSI模型,由国际标准化组织(ISO)提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。 OSI的七层体…

Http benchmarking 工具 wrk 基本使用

Http benchmarking 工具 wrk 基本使用Introwrk 是一款现代HTTP基准测试工具,能够在单个多核CPU上运行时产生显着负载。它将多线程设计与可扩展事件通知系统(如epoll和kqueue)结合在一起。官方描述:wrk is a modern HTTP benchmark…

TCP/IP 体系结构

TCP/IP体系结构又称为TCP/IP协议簇,是Transmission Control Protocol/Internet Protocol的简写,译为传输控制协议/因特网互联协议。 TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以…

黑客之道-解码Facebook的DevOps之路

内容来源:DevOps案例深度研究第3期 – Facebook DevOps实践研究战队(本文只展示部分PPT及研究成果,更多细节请关注案例分享会,及本公众号。)本案例内容贡献者:张楠(Topic Leader)、高…

IP地址与MAC地址的区别

IP地址是指互联网协议地址(Internet Protocol Address),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 MAC地址又称…

ping命令整个过程详解

转自:http://wanicy.blog.51cto.com/509018/335207/ 如果你想了解ping命令的原理,看了这篇文章,你会从对网络一窍不通,到豁然开朗。 先看拓朴图: 在这里讲ping的两情况:一种是同一网段内,一种…

ping某个域名的详细过程

在前一篇文章中,我们已经对ping命令的整个过程做了一个详解。但是,前一篇文章中所涉及到的两种ping命令使用情况,都是ping的IP,在这篇文章中,我们将要详细讲解ping某个域名的整个过程。 一、ICMP协议 在了解ping命令之…

Magicodes.IE之导入学生数据教程

基础教程之导入学生数据说明本教程主要说明如果使用Magicodes.IE.Excel完成学生数据的Excel导入。要点本教程使用Magicodes.IE.Excel来完成Excel数据导入需要通过创建Dto来完成导入Magicodes.IE.Excel可以根据Dto以及特性设置来自动生成导入的Excel模板,数据验证&am…