- 操作系统教程
- 操作系统 - 首页
- 操作系统 - 需求
- 操作系统 - 概述
- 操作系统 - 历史
- 操作系统 - 组件
- 操作系统 - 结构
- 操作系统 - 架构
- 操作系统 - 服务
- 操作系统 - 属性
- 操作系统 - 周转时间 & 带权周转时间
- 操作系统进程
- 操作系统 - 进程
- 操作系统 - 进程调度
- 操作系统 - 调度算法
- 先来先服务调度算法
- 最短作业优先调度算法
- 循环轮询调度算法
- 最高响应比优先调度算法
- 优先级调度算法
- 多级队列调度
- 上下文切换
- 进程操作
- 彩票进程调度
- 预测突发时间最短作业优先调度
- 竞争条件漏洞
- 临界区同步
- 互斥同步
- 进程控制块
- 进程间通信
- 抢占式和非抢占式调度
- 操作系统同步
- 进程同步
- 操作系统内存管理
- 操作系统 - 内存管理
- 操作系统 - 虚拟内存
- 操作系统存储管理
- 操作系统 - 文件系统
- 操作系统类型
- 操作系统 - 类型
- 操作系统杂项
- 操作系统 - 多线程
- 操作系统 - I/O 硬件
- 操作系统 - I/O 软件
- 操作系统 - 安全
- 操作系统 - Linux
- 考试题目答案
- 考试题目答案
- 操作系统有用资源
- 操作系统 - 快速指南
- 操作系统 - 有用资源
- 操作系统 - 讨论
同步中的互斥
什么是互斥?
互斥意味着在任何时间只有一个进程可以处于临界区。如果其他进程需要在其临界区执行,则必须等待直到临界区空闲。
当多个进程想要访问或更新共享资源,即进入其临界区时,如果它们同时执行,则可能发生竞争条件,从而导致不一致的结果。为了避免竞争条件,进程同步技术应满足互斥标准。
解释
进程通常需要执行诸如访问或更新共享资源(如公共变量、索引表或共享文件)之类的操作。当进程这样做时,据说它正在其临界区执行。在临界区,如果正在执行的进程被另一个以不同方式更新共享资源的进程中断,则会发生竞争条件,并且共享资源的值将变得无效。
同步机制是确保进程以某种方式执行的技术,以便系统状态和公共数据结构始终保持一致。为了避免竞争条件,同步技术确保临界区中操作的指令以单个单元(即原子方式)执行。原子性通过互斥来保证,通过互斥,在特定时间只有一个进程可以在临界区执行。
互斥的先决条件
- 在任何特定时间,只有一个进程可以进入其临界区。
- 进程只有在其临界区执行有限的时间才被允许。
- 任何进程(不在其临界区)都不能阻止另一个进程进入其临界区。
- 任何进程都不应无限期地等待进入其临界区。
同步中互斥的技术
互斥可以通过多种策略实现,例如以下策略:
锁 / 互斥量
称为锁或互斥量(mutual exclusion 的简称)的同步原语用于维护共享资源的值或状态的一致性。锁有两种可能的状态:锁定和解锁。操作系统或过程必须在能够使用共享资源之前获得锁。如果锁已被另一个线程锁定,则请求的线程将被阻止,直到锁被释放。
信号量
信号量是一种高级同步工具。它使用两个原子操作,“wait()”和“signal()”。wait() 指令用于入口段以获取对临界区的访问权限,而 signal() 操作用于释放对共享资源的控制。信号量可以分为两种类型:二进制信号量和计数信号量。在计数信号量中,当线程需要进入临界区时,信号量跟踪一个计数器并将其递减。如果计数器递减,则正在运行的线程将被阻塞,这表示临界区已在使用中。
原子操作
在不使用锁或信号量的情况下,某些处理器提供可以用来保证互斥的原子操作。原子操作对于修改共享参数很有用,因为它们是不可中断的,并且不能被阻止。例如,仅当变量的值与预期值一致时,才能使用原子比较并交换 (CAS) 过程更改变量的属性。
基于软件的技术
互斥可以使用各种基于软件的算法和策略来实现,包括 Peterson 算法、Dekker 算法或 Lamport 面包店算法。这些技术通过结合标志、标志和忙等待来保证一次只有一个线程能够使用关键组件。
同步中互斥的实际实例
一些在现实生活中可能发生的同步中互斥的实例:
打印机后台打印
在具有多个用户的操作系统中,多个进程或用户可能同时请求打印文档。互斥用于确保一次只有一个进程可以访问打印机。锁或信号量用于提供对打印机的受限访问、避免冲突并确保打印作业按正确的顺序处理。
银行账户交易
在电子银行系统中,许多人可能同时尝试访问和修改其财务账户。需要互斥以避免诸如超载或账户不一致等问题。锁或其他同步原语允许一次只有一个事务访问特定银行账户,从而维护信息的机密性和避免冲突。
交通信号控制
人行横道处的交通信号必须协调以安全地管理车辆的通行。使用互斥来避免来自竞争通信的多个信号同时显示。互斥规则允许一次只显示一个信号,从而促进高效和有序的交通流程。
共享数据库中的资源分配
在数据库系统中,多个进程或事务并发访问共享数据时,互斥对于维护数据一致性至关重要。例如,互斥机制确保一次只有一个事务能够修改相同的数据,从而在两个单独的操作尝试同时修改相同数据时,防止冲突并维护数据完整性。
在实时系统中访问共享内存
在实时系统中,操作或过程需要共享内存来促进交互或协作时,需要互斥。使用锁或信号量等同步基本功能来保护重要的共享内存区域,确保一次只有一个任务能够使用和修改共享内存区域。