当前位置: 首页 > news >正文

考研408--操作系统--day4--进程同步互斥信息量机制

在这里插入图片描述
(以下内容全部来自上述课程)

目录

  • 同步、互斥问题
    • 1. 什么是进程同步
    • 2. 什么是进程互斥
    • 3. 小结
  • 进程互斥的软件实现方法
    • 1. 单标志法
    • 2. 双标志先检查法
    • 3. 双标志后检查法
    • 4. Peterson算法
    • 5. 小结
  • 进程互斥的硬件实现方法
    • 1. 中断屏蔽方法
    • 2. TestAndSet指令
    • 3. Swap指令
    • 4. 小结
  • 信息量机制(一)
    • 1. 整型信息量
    • 2. 记录型信号量
    • 3. 小结
  • 信息量机制(二)
    • 1. 实现进程互斥
    • 2. 实现进程同步
    • 3. 实现进程的前驱关系
    • 4. 小结

同步、互斥问题

请添加图片描述

1. 什么是进程同步

异步性:随机,自己没办法控制。
同步:就是解决异步性随机的问题,让进程变得可控。
请添加图片描述
异步:没办法控制写数据和读数据的顺序,可能写先读后,也可能读先写后。
同步:我们需要的是写先读后(毕竟不先写啥都读不到),就需要使进程可控,这个过程就是同步。
请添加图片描述

2. 什么是进程互斥

互斥:就是两个人上厕所用马桶,不可能一个人用马桶但是还没用完呢,另外一个人直接把马桶抢过来吧。
同时:这个东西可以这个人用了但是还没用完,另外一个人更急就可以让给他,从更宏观的时间来看可以算是同时。
请添加图片描述
进入区:看看临界资源区能不能用,有没有人占着用不了。
临界区:放临界资源的地方。(可以类比马桶啦其实)
退出区:自己用完了,告诉别人这个资源可以给别人用了。
剩余区:用完资源就去干别的事儿了呗。
请添加图片描述
空闲让进:马桶没人用的时候,可以让任何人用。
忙则等待:马桶有人用,自己就等着呗。
有限等待:这个坑自己等的时间太久了,就换一个坑呗。
让权等待:比如这个景区的厕所收费,有个人没拿钱用不了,就赶紧让他走,让别人上。
请添加图片描述

3. 小结

请添加图片描述

进程互斥的软件实现方法

请添加图片描述
请添加图片描述

1. 单标志法

while (turn != 0);:trun=0时不符合循环条件,就可以向下执行,可以访问临界区。
while (turn != 1);:turn=0时符合循环条件,就一直死循环,直到p0执行完turn=1时,才会跳出循环。
请添加图片描述
劣势:必须轮流,一个用完了才会轮到另外一个,所以前者一直不用,但是后者突然要用了,就只能等。
请添加图片描述

2. 双标志先检查法

问对方用不用–>对面不用自己再用。(过分谦让)
while(flag[1]);:如果falg[1]=true,符合条件就自己死循环让p1先访问,可惜flag[1]=false(初始赋值),不符合条件,就要自己访问了。
falg[0]=true;:给p0,也就是自己访问临界区了,给临界区上个锁不让别人进来。
以上p1同理。
请添加图片描述
假设流程:B没说想用马桶–>A没说想用马桶–>A以为B不用所以自己用–>B以为A不用所以自己也用–>一个马桶两个人用(蚌埠住了)
劣势:如果是异步的,可能造成两个人用一个马桶的奇怪情况,也就是没符合忙则等待。
请添加图片描述

3. 双标志后检查法

实际上就是把确认对方意愿的步骤往后放:先抢–>再问对方用不用。(过分缺德)
就是开抢,不管对面儿用不用
请添加图片描述
劣势:两边儿光顾着抢了,一个用上厕所的都没。
请添加图片描述

4. Peterson算法

融合之前的几种方法,改为了先询问再谦让的方法。(很礼貌了)
while(flag[1]&&turn==1):p1要是用(也就是flag[1]=true),并且turn=1(前面定义了,直接白给,就是你要用就用的意思)
请添加图片描述
谁最后谦让谁没主动权就是了。
请添加图片描述
请添加图片描述
请添加图片描述

5. 小结

请添加图片描述

进程互斥的硬件实现方法

请添加图片描述

1. 中断屏蔽方法

缺点:权限太高了,不可能让用户自己用,所以很有局限性。
请添加图片描述

2. TestAndSet指令

注意:都是用硬件实施的,代码只是为了让自己理解怎么实施的而已。
请添加图片描述

3. Swap指令

请添加图片描述

4. 小结

请添加图片描述

请添加图片描述
请添加图片描述

信息量机制(一)

请添加图片描述
信息量:剩下几个马桶or打印机,啥都行,剩下几个,信息量就是几。
wait(P):进入区。
signal(V):退出区。
请添加图片描述

1. 整型信息量

就是直接用具体数字表示数量。
请添加图片描述

2. 记录型信号量

因为不一定就一个机器,而且谁用谁不用数值来回变,所以干脆就赋个没被定义为具体数字的值,机器多几个少几个就不用像数字型的还得自己特意改一下。类似于全自动,解放双手(?)
请添加图片描述
请添加图片描述
请添加图片描述

3. 小结

请添加图片描述

信息量机制(二)

请添加图片描述

1. 实现进程互斥

初值为1:就是把临界区定义为机器了,一台机器(马桶)只能一个进程(人)访问,自然一个临界区只能一个进程进入。
请添加图片描述

2. 实现进程同步

前操作–>v(s)–>p(s)–>后操作
简单理解:后者执行的前提是前者里面的一条执行语句,也就是我想吃雪糕,但是吃雪糕(p)之前我必须先买雪糕(v)。
请添加图片描述

3. 实现进程的前驱关系

顺着一条线往下看,一个圆到下一个圆之间有一条路,必经之路,也就是必要条件。
请添加图片描述

4. 小结

请添加图片描述

http://www.dtcms.com/a/602006.html

相关文章:

  • 竹子建设网站河北城乡建设厅网站
  • Node.js 模块系统选择-学习 CommonJS 和 ESM
  • 手机网站模板wordpress图片粘贴插件
  • 解决报错net.sf.jsqlparser.statement.select.SelectBody
  • 模板网站如何建站app网站建设多少钱
  • 网站建设主机的功能广告中国
  • HashMap相关问题详解
  • 快站建站教程网站dns解析设置
  • java线程变量ThreadLocal用法篇v1.1
  • 变分自编码器VAE
  • K8s网络之Ingress
  • C语言编程实战:每日刷题 - day 1
  • 免费网站最新域名哈尔滨大型网站建设
  • Xcode编译C语言 | 使用Xcode进行C语言编程的技巧与优化
  • 免费网站设计网站制作方案大全
  • 南昌正规网站公司自己做网站需要啥
  • 项目实战Now in Android:App 模块代码结构分析
  • 企业网站制作 优帮云北京seo产品
  • Oracle 开启归档日志
  • element-ui 用户名密码相关的 input 避免自动填充的方法
  • CSS从0到1
  • 如何架设php网站设计邦
  • 做跨境网站注意事项怎样做外国石雕产品网站
  • 房地产爬虫实战:链家二手房数据抓取与深度分析
  • 核电厂执行器控制系统中的抗辐照MCU选型:为什么需要150krad(Si) TID指标?
  • 360度看C#编程语言
  • 卷积神经网络训练与参数调节全攻略:从数据到模型的实战优化
  • LangGraph 的**核心概念、基本使用步骤和实战示例**
  • 谢岗网站仿做wordpress 图片迁移
  • 网站关键词的分类wordpress 插件 销量