上一篇文章讲述了进程之间的竞争条件:多个进程同时进入一个共享区域,导致了数据的不一致,本文主要介绍如何解决这个问题。

一、临界区介绍

解决这个问题就是阻止多个进程同时进入这个共享区域,换句话说,进程之间针对这块共享区域需要排他(Mutual Exclusion)。问题的根源是进程B在进程A没有从共享区域返回之前就进入了共享区域。

在大部分情况下两个进程之间是不会共享变量的,只会有一部分步骤会使用到共享变量,在程序设计中,可以把这部分访问共享变量程序单独设计出来,这部分程序叫做临界区(Critical Regions)。如果保证两个进程永远只有一个进程进入这块临界区域,那么进程之间的条件竞争也就迎刃而解。

达到上面的结果需要以下条件:

  • 没有两个进程同时进入临界区域
  • 对CPU的速度或者数量不做要求
  • 被Block在临界区域之外的等待的进程会block其他进程,比如,进程A在临界区域内,那么这个时候进程B来访问临界区,进程B就会被Block到临界区外,这个时候的进程B不应该Block其他进程
  • 没有进程会被永远Block到临界区之外

二、临界区演示

图示

  • 在T1时间Process A进入临界区域
  • T2时间,Process B尝试进入临界区域
  • 因为A在临界区域,所以B被Block
  • T3时间A离开临界区域,B进入临界区域时间
  • T4时间,B离开临界区域

使用临界区域的概念有什么好处呢?

  • 如果进程A和B在大部分时间内没有使用到共享资源,那么在这段时间内内A、B是可以并行执行的。
  • 只有针对临界区域的访问才不能并行。
  • 最大限度让进程并行工作,且高效的使用共享数据

三、总结

  • 抽象临界区域
  • 对临界区域进行排他
  • 如歌实现排他呢?下一篇文章进行介绍。

转载于:https://www.cnblogs.com/Brake/p/Operating_System_Interprocess_Communication_Critical_Regions.html

Operating System-进程/线程内部通信-临界区(Critical Regions)相关推荐

  1. Operating System-进程/线程内部通信-信号量和PV操作

    本文介绍操作系统进程管理的两个核心概念: 信号量 PV操作 一.信号量介绍 1.1 信号量引入 信号量(Semaphore)1965年由Dijkstra引入的.信号量一般由一个值是一个变量,其值有可能 ...

  2. [Operating.System.Concepts(9th,2012.12)].Abraham.Silberschatz.文字版(恐龙书——操作系统概念 原书第九版)课后习题 参考答案

    目录 Chap01 导论 Chap02 OS结构 Chap03 进程 Chap04 线程 Chap05 同步(Synchronization) Chap06 CPU调度 Chap07 死锁 Chap0 ...

  3. 操作系统(Operating System)

    一.计算机系统概述 什么是操作系统(操作系统的概念) ※ 操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配:以 ...

  4. [No000035]操作系统Operating System之OS Interface操作系统接口

    接口(Interface) 仍然从常识开始- 日常生活中有很多接口:电源插座:汽车油门- 那什么是接口? 连接两个东西.信号转换.屏蔽细节- Interface: electrical circuit ...

  5. 多线程(C++)临界区Critical Sections

    一 .Critical Sections(功能与Mutex相同,保证某一时刻只有一个线程能够访问共享资源,但是不是内核对象,所以访问速度比Mutex快,但是没有等待超时的功能,所以有可能导致死锁,使用 ...

  6. JUC本质解析+进程/线程

    JUC并发编程一:什么是JUC+进程/线程(Java) 1.什么是JUC JUC的意思就是java并发编程工具包,与JUC相关的有三个包:java.util.concurrent.java.util. ...

  7. linux 编程 调度,Linux的进程线程及调度

    搜索热词 本文为宋宝华<Linux的进程.线程以及调度>学习笔记. 1 进程概念 1.1 进程与线程的定义 操作系统中的经典定义: 进程:资源分配单位. 线程:调度单位. 操作系统中用PC ...

  8. 进程/线程同步的方式和机制,进程间通信

    一.进程/线程间同步机制. 临界区.互斥区.事件.信号量四种方式 临界区(Critical Section).互斥量(Mutex).信号量(Semaphore).事件(Event)的区别 1.临界区: ...

  9. 操作系统1(OS,operating system)

    目录 OS 概论 OS 目标 作用 OS 发展过程(基本类型) OS 结构设计演变 OS 基本特征.功能 OS 功能: 处理机管理: 存储器管理: 设备管理: 文件管理 友好的用户接口: 处理机管理 ...

最新文章

  1. 创建一个显示所有预定义WPF颜色的ListBox
  2. nas php.ini,php.ini 配置文件常用详解
  3. Windows 2003 系统管理 视频教程 http://www.91xueit.comm 下载
  4. [.NET] 建构子中传递子对象的对象
  5. PHP常用工具方法集...
  6. python爬虫实例手机_python爬虫实例详解
  7. Debit and Credit Memo
  8. 从16位到32位再到64位,为何16年过去,依然没有128位系统出现?
  9. android访问网络提示 服务不可用,Android系统服务不可用
  10. Go 语言高性能编程
  11. 云承软件和云溪哪个好_木工开料机使用什么软件好
  12. Ubuntu18.04下WizNote为知笔记源码编译安装
  13. 小米路由器青春版(R1CL)刷高恪软路由系统
  14. jdy ble sdk android,JDY-18蓝牙模块 连接blinker超时
  15. 简述主成分分析法的基本步骤_主成分分析的基本步骤
  16. p-mos,n-mos的导通条件
  17. 教你制作Linux系统的安装盘
  18. 手写HashMap,快手面试官直呼内行
  19. 面试时遇到『看门狗』脖子上挂着『时间轮』,我就问你怕不怕?
  20. VUE探索第二篇-手脚架(vue-cli)

热门文章

  1. 使用动态代理解决网站字符集编码问题:(之前通过拦截器)
  2. c# selenium chrome 文件下载_Selenium 框架原理以及环境安装
  3. mysql gtid深入_深入理解MySQL 5.7 GTID系列(四):mysql.gtid_executedPREVIOUS GTID EVENT
  4. 移动端html5广告的优势,h5手机端开发的优势都有哪些呢
  5. harmonyos sdk,HarmonyOS SDK对应的API版本跃迁引发的历史工程适配问题解决方案
  6. c语言统计数字字母个数,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  7. Leetcode-3 无重复字符的最长子串【c语言】
  8. c++ 不能分配给为0的数组_【嵌入式C】你有想过quot;数组下标quot;为何从0开始吗?...
  9. requirejs加载顺序_教你5分钟学会用requirejs(必看篇)
  10. chcon和semanage fcontext的坑