【操作系统·考研】同步与互斥

本文详细探讨了临界资源的概念、访问过程以及与共享资源的区别,介绍了同步/直接制约和互斥/间接制约关系,涵盖了软件和硬件实现临界区互斥的方法,包括单标志法、双标志法、Peterson算法,以及互斥锁、信号量和管程在并发控制中的应用。同时分析了经典的同步问题如生产者-消费者问题、读者-写者问题和哲学家进餐问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

1.1 临界资源

1.1.1 概述

一次仅允许一个进程使用的资源称为临界资源
许多物理设备属于临界资源,许多变量、数据等也可以被多个进程共享使用,因此也属于临界资源。
3488497749-b3e89fbb714f9ffc_fix732.webp

1.1.2 临界资源的访问过程

  1. 进入区。在进入区需要检查是否能够进入临界区(Critical Section),若能,则设置正在访问临界区的标志,以阻止其他进程同时进入该临界区。
  2. 临界区/临界段。进程中访问临界资源的那段代码。
  3. 退出区。清除正在访问临界区的标志。
  4. 剩余区。代码中的其余部分。
do{
   

    entry section; // 进入区
    critical section; // 临界区
    exit section; // 退出区
    remainer section; // 剩余区

}while(true)

临界资源与共享资源的区别在于,临界资源在一个时间段内只允许一个进程访问,而共享资源则可以允许多个(并发使用)。

临界资源有:公用队列、打印机、共享变量、共享缓冲区…
非临界资源有:非共享数据、私用数据、磁盘存储介质、可重入的程序代码…

银行家算法是死锁避免的算法,不能用来解决临界区问题。

1.2 同步/直接制约关系

1.2.1 概述

是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。

要对并发进程进行同步的原因是:并发进程是异步的。

1.3 互斥\间接制约关系

1.3.1 概述

当一个进程进入临界区使用临界资源时,另一个进程必须等待其占用完并退出临界区后,才被允许进入临界区使用临界资源。

1.3.2 临界区的同步准则

  1. 空闲让进。临界区空闲时,可允许一个请求进入临界区使用临界资源。
  2. 忙则等待。当已经有一个进程处在临界区时,其他试图进入临界区的进程必须等待。
  3. 有限等待。对于请求进入临界区的进程,应保证能在有限时间内进入临界区。
  4. 让权等待。当进程不能进入临界区时,应立即释放处理机,避免进程处于忙等待状态。(非必需实现,如Peterson算法)

2.实现临界区互斥的基本方法

2.1 软件实现方法

在进入区中设置并检查一些标志来表明是否有进程在临界区中,若已有进程在临界区中,则进入区通过循环检查进行等待。进程离开临界区后则在退出区修改标志。

2.1.1 单标志法

2.1.1.1 概述

该算法只设置一个公用整型变量turn,用于指示被允许进入临界区的进程编号,即若 turn = 0,则P0进程允许进入。该算法可确保每次只允许一个进程进入临界区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程旧事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值