操作系统入门 -- 进程的同步与互斥

操作系统入门 – 进程的同步与互斥

在之前的文章中,我们了解了进程是如何被调度的。但在调度之前,进程需要获得资源。而获得这些资源则可能让进程之间陷入冲突。为了高效且平等地调度线程,需要引入同步功能。


1.临界资源

1.1 临界资源的描述

在操作系统中进程占用的最小资源(线程仅访问所在进程的资源,因此线程并不占资源)。但某些资源在同一时刻只能被一个进程占用,类似这样的进程为临界资源。例如打印机、存在内存或硬盘中被多个进程共享的一些变量或数据等。

1.2 临界资源的性质

对临界资源访问的方式为互斥,即当一个进程持有该资源时,其他进程无法访问,只有当该持有资源的进程释放后才能被其他进程访问。其访问方式如下

  • 进入区:查看临界区是否可以访问,若可以则进行下一步,否则为阻塞。
  • 临界区:在临界区操作。
  • 退出区:清除临界区被占用的标志。
  • 剩余区:进程与临界区不相关部分的代码。

2.同步与互斥

2.1进程同步

进程同步是进程之间的制约关系,其目的是为了完成某个任务而建立的两个或多个线程。这些线程将会在某些位置上协调进程之间的工作次序、传递信息。

  • 例子:如图所示,进程B需要在缓冲区读取到进程A产生的信息才能执行,否则将处于阻塞状态。

alt text

2.2进程互斥

同理,互斥也是进程间的一种制约关系。当存在两个进程需要请求临界资源时,得到临界资源的进程将开始执行,另一个为得到临界资源的进程进入阻塞。只有当前一个进程释放资源后,后一个进程才能解除阻塞。

  • 例子:如图所示,A、B两个进程都要请求打印机资源,此时A先获得打印机资源,因此A执行,B阻塞。当A执行完毕后再执行B

alt text


3.实现临界区互斥的基本方法

3.1 软件方法

Dekker算法和peterson算法

3.2 硬件方法

通过硬件实现临界区的办法就是使用CPU中断。CPU进程切换是通过中断实现的,当把中断屏蔽后,当前进程就可以顺利将临界区代码执行完毕,从而实现互斥。具体步骤为:屏蔽中断->执行临界区->开中断。但这样运行的缺点是大大限制了处理器交替执行任务的能力。接下来将讲解另一种实现方法。

3.3 信号量实现

在上述硬件实现临界区互斥的方法可以了解到效率并不高,因此可以设置一个表示资源个数的信号量S,通过S的P(占有)和V(释放)操作实现。其中P、V操作为系统原语,意味着这两个操作为原子操作(原子操作指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集)。


P操作首先减少信号量,表示有一个进程将占用或等待资源,之后检查S是否小于0,若小于0则阻塞,大于0则占有资源执行。


V操作与P操作相反,首先增加信号量,表示占用或等待资源的进程减少了1个,然后检测S是否小于0,如果小于0则唤醒等待使用S资源的其它进程。

4.利用信号量实现同步的经典问题

4.1 生产者-消费者问题

在该作业中,要求设计在同一个进程地址空间内执行的两个线程。生产者线程生产物品,并放置在一个空的缓冲区供消费者线程使用。消费者线程从缓冲区中获得物品,并释放缓冲区。当缓冲区再无可用空间时,生产者线程会开始等待,当消费者线程释放缓冲区后,生产者线程才会继续生产。当缓冲区为空时,消费者线程也会进入阻塞状态,直到生产者线程产生物品。


这里生产者和消费者是既同步又互斥的关系,首先只有生产者生产了,消费着才能消费,这里是同步的关系。但他们对于临界区的访问又是互斥的关系。

4.2 读者-写者问题

问题描述:一个数据文件或记录,统称数据对象,可被多个进程共享,其中有些进程只要求读称为”读者”,而另一些进程要求写或修改称为”写者”。


规定:允许多个读者同时读一个共享对象,但禁止读者、写者同时访问一个共享对象,也禁止多个写者访问一个共享对象,否则将违反Bernstein并发执行条件。


从上述题目中可以了解到,读者和写者是互斥的,不同写者之间也是互斥的。因此我们可以设置3个变量,一个用来统计读者的数量,另外两个分别用于对读者数量读写的互斥,读者和读者写者和写者的互斥。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI 克隆声音,只需 3 分钟(附最全教程)

作者:寒斜 继生成式文本大模型 Chatgpt,生成式图片 Stablediffusion 之后生成式语音 Text To Speech 在开源社区也出现了一匹黑马,就是 GPT-Sovits [ 1] 。 之所以说他是黑马,让人觉得惊艳,是因为在语音效果克隆上做…

之所以选择天津工业大学,因为它是双一流、报考难度适宜,性价比高!天津工业大学计算机考研考情分析!

天津工业大学(Tiangong University),简称“天工大”,位于天津市,是教育部与天津市共建高校、国家国防科技工业局和天津市共建的天津市重点建设高校、国家“双一流”建设高校、天津市高水平特色大学建设高校、中国研究生…

引领未来建筑潮流:轻空间设计团队打造“淄博珍珠”

作为国内单体最大的气膜会展场馆,“淄博珍珠”自四年前启用以来,已成为淄博市的重要地标和经济引擎。该场馆首次亮相于第二十届中国(淄博)国际陶瓷博览会,凭借其独特的设计和先进的建筑理念,吸引了社会各界…

AD层次原理图绘制

一、在原理图中添加端口 二、添加层次图 三、更新层次图 四、也可以先画层次图,再绘制原理图,这里就不做演示了

电影美学复古胶片特效视频转场模板 | Premiere Pro 项目工程文件

这个Premiere Pro项目工程文件是一个电影美学胶片特效视频转场模板,每个过渡效果都散发出一种有机的怀旧魅力,让人回忆起经典电影卷轴和模拟摄影的独特美感。 项目特点: 胶片烧伤过渡效果:包括从微妙的闪烁到大胆的爆发&#xff…

第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分

遗憾没有进复赛,只是第41名。先贴个A榜的成绩。A榜的前三十名晋级,个个都是99分的大佬,但是B榜的成绩就有点低了,应该是数据不同源的问题,第一名0.78分。官网链接:语音深度鉴伪识别 官方baselin:https://g…

Centos7.9安装Python3.8.16解决yum无法使用问题

Centos7.9安装Python3.8.16解决yum无法使用问题 文章目录 前言一、前期准备1.下载到新建目录2.安装依赖 二、编译1.解压2.编译安装3.建立命令软链接3-1.查看默认的python及新安装的python3都安装在哪?3-2.修改python3的软链接3-3.修改pip的软链接 三、修复yum1.查看…

SolidWorks科研版更快地开发产品创意

在当今竞争激烈的市场环境中,产品创新的速度和质量直接决定了企业的生死存亡。对于科研人员和设计师来说,如何能够快速、准确地实现产品创意的转化,是摆在面前的一大挑战。SolidWorks科研版作为一款功能强大的三维设计软件,为科研…

金鸣识别系统:PDF转Excel的高效利器

在日常办公中,我们经常需要将PDF文档转换为Excel表格以便进行数据分析。然而,当有些PDF转换过程可能会变得复杂,因为许多转换工具无法完美处理图片元素,导致转换后的准确率不高或排版错乱。幸运的是,金鸣识别系统以其卓…

引领潮流!Xinstall创新技术让App免填邀请码成为可能,轻松吸引海量用户!

在快速变化的互联网环境下,App推广和运营面临着诸多挑战。如何迅速搭建起满足用户需求的运营体系,提高获客转化的效率和用户留存,成为了众多企业急待解决的问题。而邀请码作为App推广中常见的手段,其繁琐的填写过程常常让用户望而…

【启明智显产品介绍】工业级HMI芯片Model3芯片详解(二)图像显示

Model3芯片是一款集大容量存储、宽温操作范围及多功能接口于一身的MCU,配备了 2D 图像加速引擎和 PNG 解码/JPEG 编解码引擎,可以满足各类交互设计场景和多媒体互动需求,具有高可靠性、高安全性、高开放度的特点,可以面向于泛工业…

基于PHP+MySQL组合开发的知识付费小程序源码系统 带完整的源代码包+搭建部署教程

系统概述 随着互联网的快速发展,知识付费逐渐成为了一种新型的经济模式。越来越多的用户愿意为高质量的内容付费,而开发者们也在不断探索和创新,以提供更加便捷、高效的知识付费平台。本文将详细介绍一个基于PHPMySQL组合开发的知识付费小程…

中国500米分辨率年平均LAI数据集(2000-2020)

叶面积指数LAI(Leaf Area Index)是描述植被冠层几何结构的基本参数之一,被定义为单位地表面积上所有叶片面积的倍数,它控制着植被的许多生物物理过程,如光合作用、呼吸作用、蒸腾作用、碳循环和降水截获等,是陆面过程一个十分重要…

pytorch基础【4】梯度计算、链式法则、梯度清零

文章目录 梯度计算计算图(Computational Graph)梯度求导(Gradient Computation)函数与概念 示例代码更多细节梯度求导的过程梯度求导的基本步骤示例代码注意事项总结 链式法则是什么?链式法则的数学定义链式法则在深度…

从粉丝基础到带货数据:全方位解读TikTok带货达人的选择之道

在如今的数字营销时代,TikTok已成为品牌推广和产品销售的重要平台。通过与合适的TikTok带货达人合作,品牌可以迅速吸引大量的潜在客户,实现销售转化。然而,选择合适的TikTok达人需要慎重考虑多个因素。本文Nox聚星将和大家详细阐述…

Ceph入门到精通-ceph边缘集群你听说过嘛?

边缘集群是一种经济高效的对象存储配置解决方案。 Red Hat 支持以下 Red Hat Ceph Storage 集群的最低配置: 具有两个 SSD 副本的三节点集群。 具有三个 HDD 副本的四节点群集。 具有 EC 池的四节点集群,具有 2+2 配置。 对于较小的群集,由于使用量和复原能力的损失,利用率…

瓦罗兰特教你怎么玩低价区+超适配低价区的免费加速器

《无畏契约》(VALORANT)是一款款英雄为核心的5V5第一人称战术射击PC游戏。在瓦罗兰特游戏中,玩家完成每日任务即可以获得大量的经验升级,另外我们也可以多多完成主线和支线任务,来加快升级的速度。玩家通过挑战副本&am…

朋友圈新功能:实现定时发圈,自动跟圈

1.多号同时发圈 可以选择多个号同时发圈,提高工作效率。 2.定时发布 可以一次性设置完很多天的朋友圈,选好发送时间就可以解放双手。 3.一键转发 点击转发,可直接跳转到编辑页面。无需复制粘贴。 4.自动转发(跟圈) …

Ubuntu server 24 (Linux) 安装客户端(windows/linux) Zabbix 7.0 LTS Zabbix agent2

一 Ubuntu(linux)安装客户端 1 Ubuntu 24 安装Zabbix agent2 #安装agent库 sudo wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1ubuntu24.04_all.deb sudo dpkg -i zabbix-release_7.0-1ubuntu24.04_all.deb sudo apt u…