进程同步要解决什么问题?

在OS中引入进程后,如果不进行妥善的管理,必然会因为这些进程对系统资源的无序争夺而给系统造成混乱。致使每次处理的结果存在不确定性,即程序运行结果的不可再现性。为保证多个进程能有条不紊地运行,在多道程序系统中,必须引入进程同步机制。


一、进程同步机制的主要任务

进程同步机制的主要任务,是对多个相关进程在执行次序上的协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,并能很好地合作,从而使程序的执行具有可再现性。

二、进程之间两种形式的制约关系

1. 间接相互制约关系(互斥关系)

是指由于共享系统资源,如CPU、I/O设备等,致使这些并发执行的进程形成的相互制约关系。

2. 直接相互制约关系(同步关系)

一个程序为了完成某任务而建立了多个进程,这些进程需要相互合作。直接制约关系就是源于它们的相互合作,比如需要共享缓冲区等。

三、临界资源

(1)定义: 一次仅允许一个进程使用的资源称为临界资源。

(2)包括: 慢速设备(打印机、磁带机等)、共享的变量、数据结构、缓冲区等。

(3)结论: 诸进程间应采用互斥方式,实现对这些资源的共享。

eg 1. 多道系统中,像这种两个或多个进程并发地读写一个共享数据, 共享数据的值取决于最后访问它的进程的执行结果,这种情况称为 竞态条件(Race condition),要保证对临界资源的互斥使用。


eg 2. 生产者——消费者问题,是一个经典的进程同步问题。
所有的生产者和消费者进程都是以异步方式运行的,但它们之间必须保持同步:既不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满产品的缓冲区投放产品。

四、临界区

(1)定义: 每个进程中访问临界资源的那段代码 称为临界区(critical section)

(2) 可以把访问临界资源的循环进程描述如下:


进入区: 用于对欲访问的临界资源进行检查,看它是否正被访问。是的话,则本进程不能进入临界区,否的话,就可以访问,并要设置访问标志。

退出区: 用于将临界区正被访问的标志恢复为未访问的标志。

剩余区: 进程中除了进入区、临界区、退出区以外的代码都称为剩余区。

五、所有同步机制必须遵循的原则

1 和 2 就是很简单的互斥原则;

1. 空闲让进

当没有进程处于临界区时,应允许一个请求进入临界区的进程立即进入。

2. 忙则等待

当已有进程进入临界区时,其它试图进入的进程必须等待。

3. 有限等待

应保证每一个进程在有限时间内能进入自己的临界区,避免陷入“死等”状态。(可以通过限制其它进程进入临界区的次数来实现)

4. 让权等待

当进程不能进入自己的临界区时,应立即释放处理机。(也就是此时进程没啥工作可做了,只能等到临界区允许进入才能继续下去,所以占着CPU也没啥意义了,让出CPU的使用权,继续等待资源,就这意思)

【OS笔记 14】进程同步篇——基本概念相关推荐

  1. 【操作系统/OS笔记17】文件系统基本概念、文件描述符、文件系统访问、文件别名、文件系统种类

    本次笔记内容: 12.1 文件系统:总体介绍 12.2 基本概念 12.3 基本概念--文件系统和文件 12.4 基本概念--文件系统的功能 12.5 基本概念--文件和块 12.6 基本概念--文件 ...

  2. 【操作系统/OS笔记18】虚拟文件系统概念

    本次笔记内容: 12.10 虚拟文件系统 文章目录 虚拟文件系统抽象 虚拟文件系统的目的与功能 虚拟文件系统基本结构 虚拟文件系统如何保存 虚拟文件系统抽象 如上图,虚拟文件系统就是,将复杂系统抽象, ...

  3. 【操作系统/OS笔记14】经典同步问题:读者-写者问题、哲学家就餐问题

    本次笔记内容: 10.6 经典同步问题-1 10.7 经典同步问题-2 10.8 经典同步问题-3 10.9 经典同步问题-4 10.10 经典同步问题-5 10.11 经典同步问题-6 文章目录 读 ...

  4. 【学习笔记】 科目一之概念篇

    [学习笔记] 科目一之概念篇 概念题方法 1)抓重点:科目一设计知识范围太广,不要妄想所有知识点都复习到,这是不可能的,我们的目标是45分几个而不是考高分,复习时间有限,所以要学会抓重点,比如法律条文 ...

  5. 深度学习word2vec笔记之算法篇

    本文转载自<深度学习word2vec笔记之算法篇>对排版和内容作了部分调整,感谢大佬分享. PDF版本关注微信公众号:[终南樵],回复:[word2vec基础]获取 1. 声明 该博文是G ...

  6. H5直播站点运维笔记一 服务器篇

    H5直播站点运维笔记一 服务器 服务器篇 一.CentOS6基础操作 1. 查看服务器版本 2. 查看服务器性能 3. 文件查找 4. 软件查找 5. 用户系统 6. 远程登录工具 二.FTP ( V ...

  7. 读书笔记之 sed 篇

    Sed&awk笔记之sed篇:简单介绍 最近在阅读<sed & awk(第二版)>,这本书是sed和awk相关书籍中比较经典的一本.我在读书的时候有一个习惯,就是会作一些笔 ...

  8. 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录

    一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...

  9. ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 第7章)

    上一篇:ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 1~6章) 7.       CLS 7.1   介绍 CLS是一套倾向于提高语言互操作性的一套规则.我们应当遵循这些规则.11章 ...

最新文章

  1. SpringSecurity安全验证中文乱码问题
  2. 一个红 - 黑树的具体描述
  3. VMware Workstation PRO 15 (已永久性激活)
  4. Matlab常用函数流水账
  5. js中直接对字符串转义-用于solr ulr 关键词转义
  6. python每天定时9点执行_[求助]关于twisted框架,如何每天定时执行一个scrapy爬虫...
  7. Spring 的下载、安装和使用
  8. oracle连接eclipse的包,【求助】eclipse导入了Oracle的驱动包连不上Oracle
  9. 计算机用户名不显示,Windows10中设置不显示最后用户名的方法
  10. Php 类似coffeescript,有什么东西像CoffeeScript for PHP吗?
  11. 十张图深度剖析供应链金融业务模式
  12. 群晖 android软件,Synology Moments下载-Synology Moments app下载v1.3.2安卓版-西西软件下载...
  13. Python数据分析实战 —— 天猫订单数据分析
  14. 每日一课 | 详解数据分析最爱用的估算法
  15. iOS CoreAnimation专题——实战篇(四)基于拖动手势的视图3D旋转效果
  16. Django 开发MVT-模型
  17. 很抱歉,此功能看似已中断,并需要修复。请使用Windows控制面板中的“程序和功能”选项修复Microsoft Office。
  18. 流越多,带宽利用率越低?
  19. MATLAB 模拟三体运动教程
  20. C语言模拟实现职工信息管理系统

热门文章

  1. 使用BND工具把普通JAR变成OSGI插件
  2. java比较日期先后大小
  3. JS判断时间先后顺序
  4. 电子战技术基础知识简介
  5. 记账开始,记录个时间,免得偷懒2018年2月26日11:20:33
  6. vivado 亚稳态_【DNN Weaver FPGA实现】Vivado BRAM资源使用
  7. mybatis是否支持延迟加载?延迟加载的原理是什么
  8. 暑假在富士康打工 50 天后,我决定奋发图强
  9. elementUi——适合于Vue的UI框架
  10. lcms质谱仪_岛津三重四极杆液相色谱质谱联用仪LCMS-8050