描述

互斥:同一时间,当只保证互斥,则可以保证临界资源访问不会造成临界资源数据的二义性,但是有可能占有临界资源的进程一直在占有,导致后面进程访问等待时间比较长
同步:保证对临界资源访问的合理性

1. 互斥
如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入,保证只能有一个进程访问临界资源
任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待
2. 同步
进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区
如果进程不能进入自己的临界区,则应让出 CPU,避免进程出现 “ 忙等 ” 现象

以管道举例:管道也要满足同步互斥的原则

当写端往管道当中写入数据的时候不超过 PIPE_BUF(一次性可读大小最大为4k,PIPE_SIZE管道大小为64k) 的时候,管道保证进程在读取数据时的原子性

概念

  1. 原子性:进程当前的操作不能被打断,即对管道的读写操作不能被打断,由于此特点,导致操作结果只有一个,要么完成,要么未完成,体现互斥同步思想

  2. 临界区:每个进程中访问临界资源(比如全局变量等公用资源)的代码称为临界区

  3. 临界资源:临界资源是一次仅允许一个进程使用的共享资源,如全局变量等),也称为临界段或互斥资源

二义性

每个进程都可以访问这个全局变量的代码,对于某一临界资源,对应的临界区具体来说有多个(多个进程都可以有)。

同一时间,当前的资源只能被一个进程所访问,由于不同的线程(进程),对资源的访问(读,写,修改),可能造成数据的二义性
用户对临界资源的访问 + 操作系统对进程的调度,有可能导致修改操作不是一步完成的,中途操作被打断,这会儿就有可能有其他的进程访问到上一个进程需要修改的资源,就会造成修改资源之后,数据的二义性,从而导致程序运行结果不正确
举个例:
有两个PCB(p1,p2)分别要对一个全局变量 val = 10 进行 – 的操作,正常情况下结果应该是 8 ,但在临界资源的访问 + 操作系统对进程的调度下,可能会导致 p1 先将数据进行寄存未修改,p2 就已经占用 CPU 进行数据寄存和修改 val 为 9,之后再进行 p1 的修改,p1根据上下文信息将未修改前的 val (10)进行修改,依旧得到 9

临界资源的同步与互斥,区分临界资源与临界区,二义性分析相关推荐

  1. (操作系统题目题型总结)第三章:同步与互斥

    费翔林课本习题 思考题 1.试述顺序程序设计的特点以及采用顺序程序设计的优缺点 [答案] 特点: 执行的顺序性:一个程序在处理器上是严格按序执行的,每个操作必须在下一个操作开始前结束 环境的封闭性:运 ...

  2. 写出记录型信号量中的wait操作代码_操作系统进程的同步与互斥及经典同步与互斥问题...

    概览 临界区临界区的引入 在系统当中,有些资源允许多个进程共享(磁盘),有些资源只允许进程单独使用(打印机,共享变量).为了让进程单独使用资源而不受其他进程干扰引入了临界区的概念. 临界区的概念 在一 ...

  3. 进程与线程(同步、互斥、通信方式等)

    一.并发 并行 同步 异步 多线程的区别(引用:https://blog.csdn.net/cqkxboy168/article/details/9026205) 1. 并发:在操作系统中,是指一个时 ...

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

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

  5. 【干货】同步与互斥的失败例子

    韦东山老师最新录制的驱动大全之<<同步与互斥>>收费视频已经在淘宝上架销售 ,一共7节,良心价29元,同时已经同步到CSDN , 51CTO , 电子发烧友,腾讯课堂等平台. ...

  6. 【操作系统】同步和互斥

    进程之间可能存在同步和互斥的制约关系. 同步指的是为了完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待.传递消息所产生的的制约关系. 互斥指的是一个进程进入临界 ...

  7. linux线程同步互斥说法,linux线程间的同步与互斥知识点总结

    在线程并发执行的时候,我们需要保证临界资源的安全访问,防止线程争抢资源,造成数据二义性. 线程同步: 条件变量 为什么使用条件变量? 对临界资源的时序可控性,条件满足会通知其他等待操作临界资源的线程, ...

  8. 线程安全、同步与互斥机制以及死锁的产生与实现

    线程安全:多个执行流对临界资源争抢访问,但是不会出现数据二义性. 线程安全的实现:              同步:通过条件判断保证对临界资源访问的合理性.              互斥:通过同一时 ...

  9. Linux 线程如何实现同步与互斥

    线程安全:多个执行流对临界资源的争抢访问,但是并不会造成数据的二义性 线程的安全主要是通过同步和互斥来实现的 同步:通过条件判断保证对临界资源访问的合理性 互斥:通过同一时间的唯一访问实现对临界资源访 ...

最新文章

  1. rocketmq集群安装部署过程(4.0.0版本)、安装中的常见问题举例
  2. mysql 中文字段名_MySQL全文索引怎么做?| 教程分享
  3. JS中遍历数组的两种方式
  4. Audio Offload
  5. 2018年NLP技术学习总结
  6. 自学it18大数据笔记-第一阶段Java-day16-day17-day18-day19--day20-day21-day22——会持续更新...
  7. 大型网站系统架构分析
  8. 怎样访问服务器系统盘,访问云服务器上的系统盘
  9. Cknife(中国菜刀) and AntSword(中国蚁剑)使用
  10. Android 源码查看网站分享
  11. eplan中断点编号_eplan中断点怎么关联
  12. python去马赛克
  13. 计算机专业考研的好学校排名2015,计算机类专业考研最好的学校排名
  14. Tomcat-Connector(连接器)
  15. matlab 三维图 输出,MATLAB三维曲线图绘制并输出到指定文件夹(突出几组不同数据)...
  16. 安装教程之Visual C++6.0的安装
  17. 乐华娱乐再度冲刺港股:业务高度依赖王一博 ​9个月经营利润降41%
  18. PTC Mathcad Prime7.0,简单易用的用户界面
  19. 【金九银十】大专生学java好找工作
  20. R语言统计学DOE实验设计:用平衡不完全区组设计(BIBD)分析纸飞机飞行时间实验数据...

热门文章

  1. 程序员对于35岁的担忧:未来真的没有什么好的前景吗?
  2. Memcached 简介
  3. MessageBox的几点用法
  4. Linux内核中的IPSEC实现(3) ---转载
  5. 用OutLook发手机短信
  6. 【算法系列】卡尔曼滤波算法
  7. 给找工作的同学一点参考
  8. BUUCTF Pwn warmup
  9. JetBrains出品,一款好用到爆的数据库工具
  10. 《JavaWeb视频教程》(p34)