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

26考研——进程与线程_同步和互斥_同步与互斥的基本概念(2)

408答疑


文章目录

  • 五、同步和互斥
    • 同步与互斥的基本概念
      • 为什么要引入同步和互斥?
      • 临界资源和临界区
      • 同步(协同完成一项任务)
        • 定义
        • 同步进程的协调
        • 示例
      • 互斥(竞争同一资源而发生相互制约)
        • 定义
        • 进程互斥的特点
        • 资源共享关系
        • 示例
      • 进程同步机制应遵循的原则
  • 七、参考资料
    • 鲍鱼科技课件
    • 26王道考研书


五、同步和互斥

同步与互斥的基本概念

为什么要引入同步和互斥?

在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,引入了进程同步的概念。

  • 例如,让系统计算 1 + 2 × 3 1 + 2 \times 3 1+2×3,假设系统产生两个进程:一个是加法进程,一个是乘法进程。
  • 要让计算结果是正确的,一定要让加法进程发生在乘法进程之后,但实际上操作系统具有异步性,若不加以制约,加法进程发生在乘法进程之前是绝对有可能的。
  • 因此要制定一定的机制去约束加法进程,让它在乘法进程完成之后才发生,而这种机制就是本节要讨论的内容。

临界资源和临界区

  • 虽然多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程所用,我们将一次仅允许一个进程使用的资源称为临界资源。
  • 许多物理设备都属于临界资源,如打印机等。此外,还有许多变量、数据等都可以被若干进程共享,也属于临界资源。
  • 对临界资源的访问,必须互斥地进行,在每个进程中,访问临界资源的那段代码称为临界区。
  • 为了保证临界资源的正确使用,可将临界资源的访问过程分成 4 个部分:
    while(true) {entry section;        // 进入区critical section;     // 临界区exit section;         // 退出区remainder section;    // 剩余区
    }
    
    1. 进入区:为了进入临界区使用临界资源,在进入区要检查可否进入临界区,若能进入临界区,则应设置正在访问临界区的标志,以阻止其他进程同时进入临界区。
    2. 临界区:进程中访问临界资源的那段代码,又称临界段。
    3. 退出区:将正在访问临界区的标志清除。
    4. 剩余区:代码中的其余部分。

同步(协同完成一项任务)

定义
  • 同步亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要协调它们的运行次序而等待、传递信息所产生的制约关系。
  • 同步关系源于进程之间的相互合作。
同步进程的协调
  • 共享资源:同步进程通过共享资源来协调活动,在执行时间的次序上有一定约束。
  • 相互合作:虽然彼此不直接知道对方的名字,但知道对方的存在和作用。
  • 任务完成:在协调动作的情况下,多个进程可以共同完成一项任务。
示例
  • 输入进程 A 通过单缓冲向进程 B 提供数据
  • 当该缓冲区空时,进程 B 不能获得所需数据而阻塞,一旦进程 A 将数据送入缓冲区,进程 B 就被唤醒。
  • 反之,当缓冲区满时,进程 A 被阻塞,仅当进程 B 取走缓冲数据时,才唤醒进程 A。

互斥(竞争同一资源而发生相互制约)

定义
  • 进程互斥是指当一个进程进入临界区使用临界资源时,另一个进程必须等待。
  • 当占用临界资源的进程退出临界区后,另一个进程才被允许使用临界资源。
进程互斥的特点
  • 独立进程的制约:在逻辑上这两个进程本来完全独立,毫无关系,只是由于竞争同一个物理资源而相互制约。
  • 无时间次序特征:它们的运行不具有时间次序的特征。
资源共享关系
  • 访问控制:多个进程需要访问共同的资源,即当一个进程访问共享资源时,访问该共享资源的其他进程必须等待。
  • 互斥访问:当这个进程使用完后,其他进程才能使用。这时要求进程应互斥地访问共享资源。
示例
  • 在仅有一台打印机的系统中,有两个进程 A 和进程 B
  • 若当进程 A 需要打印时,系统已将打印机分配给进程 B,则进程 A 必须阻塞。
  • 一旦进程 B 将打印机释放,系统便将进程 A 唤醒,并将其由阻塞态变为就绪态。

进程同步机制应遵循的原则

为禁止两个进程同时进入临界区,同步机制应遵循以下准则:

  • 空闲让进(单独进入):当无进程处于临界区时,临界资源处于空闲状态,可以允许一个请求进入临界区的进程进入自己的临界区,有效地使用临界资源。

  • 忙则等待(独占临界区):当已有进程进入自己的临界区时,意味着临界资源正被访问,因而其他试图进入临界区的进程必须等待,以保证进程互斥地使用临界资源。

  • 有限等待(限时退出):对要求访问临界资源的进程,应保证该进程在有效的时间内进入自己的临界区,以免陷入 “死等” 状态。

  • 让权等待(原则上应该遵循,但非必须):当进程不能进入自己的临界区时,应立即释放处理器,以免陷入 “忙等”。

进程交互关系与控制问题对照表
知道程度关系对其他进程的影响潜在的控制问题
进程之间不知道对方竞争(进程互斥) 1. 一个进程的结果与其它进程的活动无关

2. 进程的分时可能会受到影响
• 互斥
• 死锁
• 饿死
进程间接知道对方
(如共享对象)
通过共享合作(进程同步) 1. 一个进程的结果可能依赖于从其他进程获得的信息

2. 进程的分时可能会受到影响
• 互斥
• 死锁
• 饿死
• 数据一致性
进程直接知道对方
(有可用通信原语)
通过通信合作(进程通信) 1. 一个进程的结果可能依赖于从其他进程获得的信息

2. 进程的分时可能会受到影响
• 死锁
• 饿死

七、参考资料

鲍鱼科技课件

b站免费王道课后题讲解:
在这里插入图片描述

网课全程班:
在这里插入图片描述

26王道考研书

http://www.xdnf.cn/news/7104.html

相关文章:

  • 【深度学习新浪潮】大模型在哪些垂域已经有比较好的落地?
  • 基于labview的声音采集、存储、处理
  • 创业分析平台Web端-三大前端核心语言详解-首页index
  • 如何在 Windows 11 或 10 家庭版上安装 Windows 沙盒
  • 用DeepSeek辅助法律文件起草
  • 整数的定义和带余除法
  • 【爬虫】DrissionPage-7
  • c/c++数据类型转换.
  • Java 线程池性能优化与监控全攻略
  • 【C++】string的使用【下】
  • 基于 Zookeeper 部署 Kafka 集群
  • 拓展运算符与数组解构赋值的区别
  • 牛客网NC276110题解:小红的数组重排
  • NY337NY340美光固态颗粒NC010NC012
  • 46、什么是Windows服务,它的⽣命周期与标准的EXE程序有什么不同?
  • 网络编程-select(二)
  • SQL脚本规范
  • STM32H562----------启动时钟分析
  • C#中的成员常量:编译时的静态魔法
  • 静态网站部署:如何通过GitHub免费部署一个静态网站
  • 【提高+/省选−】洛谷P1495 —— 【模板】中国剩余定理(CRT)/ 曹冲养猪
  • 【聚类】 K-means
  • 前端获取用户的公网 IP 地址
  • 08 Nginx模块
  • AI:OpenAI论坛分享—《AI重塑未来:技术、经济与战略》
  • 二:操作系统之进程通信(IPC)
  • WRFOUT投影转换——兰伯特转等经纬度
  • 学习黑客HTTP 请求头
  • LangGraph Platform 快速入门
  • 如何设置 MySQL 的 root 密码:详细指南