一、进程互斥的定义

所谓进程互斥,指的是对某个系统资源,一个进程正在使用它,另外一个想用它的进程就必须等待,而不能同时使用 。
进程互斥是多道程序系统中进程间存在的一种源于资源共享的制约关系,也称间接制约关系,主要是由被共享资源的使用性质所决定的。

二、互斥访问的划分

三、进程互斥遵循的原则

空则让进:当无进程在互斥区时,任何有权使用互斥区的进程可进入。
忙则等待:不允许两个以上的进程同时进入互斥区,当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
等则有限:对请求访问的进程,应该保证能在有限时间内进入临界区(保证不会饥饿)。
等则让权:当进程不能进入临界区时,应立即释放处理机,避免进程忙等待。

四、实现进程互斥的软件方法

单标志法:

双标志先检查法:

双标志后检查法:

Peterson算法

进入区:

1主动争取

2主动谦让

3检查对方是否也想使用,且最后一次是不是自己说了“客气话”。

王道考研老师举了一个这样的例子:

如果是按照①②③的顺序:

香香想要用马桶,并且表示可以谦让臭臭,但是臭臭并不想用马桶,于是香香去使用马桶了。

 

如果是按照①⑥②⑦⑧的顺序,香香想要使用马桶,臭臭也想要使用马桶,香香表示可以先让臭臭来使用马桶,臭臭表示可以先让香香来使用马桶,但最后一次谦让的客气话是臭臭说的,所以臭臭要等待香香先去使用马桶。

总结

其实对于所有解决进程互斥算法的分析,都可以采用一个相同的思路:

先区分出那一个是进入区,在进入区都做了哪些事情,再把进入区这些操作并发会产生的不同顺序依次执行,验证有可能会导致什么样的问题出现。

五、实现进程互斥的硬件方法

中断屏蔽法:

TestAndSet指令:

刚开始lock是false,TSL使得lock变为true,并且返回的old值为false,while循环条件不足,跳出循环进入临界区,若这时候又有一个进程要访问临界区,但此时的lock为ture,执行TSL之后old返回ture,while一直循环直到上一个进程访问完临界区在退出去进行“解锁”。

Swap指令:

刚开始lock是false,Swap使得lock与old交换变为true,old值变为false,while循环条件不足,跳出循环进入临界区,若这时候又有一个进程要访问临界区,但此时的lock为ture,执行Swap之后old交换为ure,while一直循环直到上一个进程访问完临界区在退出去进行“解锁”。

总结:

转载于:https://www.cnblogs.com/wkfvawl/p/11518628.html

操作系统——互斥的定义及实现相关推荐

  1. 操作系统——进程的定义、组成、组织方式、特征

    目录 1.进程描述 1.1 进程的定义 1.1.1 单道程序阶段 1.1.2 多道程序阶段 1.1.3 进程实体 1.2 进程的组织 1.2.1 链接方式 1.2.2 索引方式 1.3 进程的特点 1 ...

  2. 【操作系统①】——操作系统的定义和功能、操作系统的四大特征【并发 共享 虚拟 异步】

    因为我们的课程里面有用 C/C++ 来写代码,所以我会综合我们的课程和其他优质资料来写文章. 争取这学期把<操作系统>这一系列文章好好做完. 文章目录 一.操作系统简介: 一.操作系统的定 ...

  3. 操作系统—概念与定义

    操作系统的概念和定义 1.1 操作系统的层次结构 操作系统OS(Operating System)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,提供用户和其他 ...

  4. 操作系统接口的定义与实现

    一.什么是操作系统接口 做为计算机的使用者,一般情况下我们有三种方式来操作计算机: 1.命令行:即通过命令程序,linux系统中常用此种方式 2.图形化界面:通过鼠标点击等操作实现对计算机的操控.wi ...

  5. 操作系统-互斥实现的硬件方法

    为了解决进程互斥进入临界区的问题,需要采取有效措施.利用硬件实现互斥的方法有禁止中断和专用机器指令两种方法. 1.禁止中断 在单处理机环境中,并发执行的进程不能在CPU上同时执行,只能交替执行.另外, ...

  6. 操作系统—数组的定义和存储结构

    建议将思维导图保存下来观看,或者点击这里在线观看

  7. 操作系统—进程的定义、组成和组织方式(思维导图)

    这段时间将介绍进程相关的内容,今天先开个头,整理下进程这一部分的基本概念. 建议将思维导图保存下来观看,或者点击这里在线观看

  8. Intel8086处理器使用NASM汇编语言实现操作系统15-段的定义section/vstart和align语法

    vstart用法 如果一个程序有a,b两个段,那么如下的程序,最后2个字节存放的是b_label距离程序起始位置段a中mov ax,1的偏移量 section a ;NASM汇编中使用section关 ...

  9. 操作系统(5) 并发控制(1)线程的互斥

    操作系统(5) 并发控制(1)线程的互斥 关键并发术语: **临界区(critical section)**是访问共享资源的一段代码,资源通常是一个变量或者数据结构 **竞态条件(race condi ...

最新文章

  1. java foreach 删除_为什么java不要在foreach循环里进行元素的remove/add操作
  2. StarUML启动报RPC服务器不可用错误
  3. .NET Core部署中你不了解的框架依赖与独立部署
  4. 调整和改编赛车游戏——游戏屏幕
  5. 最优化学习笔记(十八)——拟牛顿法(4)DFP算法
  6. Java 几种常用 JSON 库性能比较
  7. 为什么下载mysql找不到installer文件呀_PythonMySQL系列1(安装Mysql)
  8. java wsimport 调用_webService----wsimport调用方式
  9. 转:: 刺鸟:用python来开发webgame服务端(4)
  10. c语言验证费马大定理,数论概论 第四章 高次幂之和与费马大定理 习题解答(宋二娃的BLOG)...
  11. 【Python报错】MemoryError
  12. python字符串格式化是什么意思_python字符串格式化什么意思
  13. 通过实例学Python爬虫(一)——认识HTML网页与爬虫基础框架
  14. python求梅森尼数_梅森尼数 - 寂寞暴走伤的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. Java里面bean是什么意思_bean是什么意思?javaBean是什么?
  16. 31省市自治区农村居民消费价格指数(2010-2020年)
  17. 阿里天池:Airbnb短租房数据集分析
  18. iPad----------教你如何查询ipad型号
  19. 他励直流电动机matlab,直流他励电机为什么不能直接启动
  20. gogs搭建git服务教程

热门文章

  1. Scala 惰性求值
  2. 雅克比矩阵 matlab,Matlab - jacobian函数
  3. 被中国市场打脸,苹果业绩预期大幅下调
  4. 《漫画线性代数》读书笔记 序
  5. 蘑菇代理调用函数,可以申请试用,给你个url,然后直接用我写好的函数
  6. 【JavaScript】关于eval#40;(+result+#41;)的认识
  7. _vsnprintf函数的简介和用法
  8. 教你用最简单的方法做布丁动画
  9. jQuery 移除元素的事件
  10. macos休眠以后自动关机如何解决