操作系统之进程同步:硬件同步机制、信号量、管程

本文介绍了操作系统中进程同步的概念,包括制约关系、临界资源、同步机制的规则。详细讨论了硬件同步机制如关中断、Test-and-Set及Swap指令实现互斥,以及信号量机制的整型、记录型、AND型和信号量集。最后提到了管程机制,作为解决共享资源互斥使用问题的一种方法。
摘要由CSDN通过智能技术生成

前提:通过单处理机系统中的进程同步机制,保证程序执行的可再现性

基本概念

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

制约关系

进程共享系统中的资源,或为完成某一任务而相互合作,它们之间可能存在以下两种形式的制约关系。
由于制约关系的存在,进程以什么样的速度运行,并不是由进程自身控制,这也是进程的异步性

  1. 间接相互制约关系:多个程序在并发执行时,需要使用如打印机的临界资源,必须保证多个进程间只能互斥的访问,因此多个进程间就形成了对该类资源共享的间接相互制约关系。对于系统中这类资源,必须由系统统一分配,即用户在使用之前要提出申请,不能直接使用。
  2. 直接相互制约关系:某些进程为了完成同一项任务相互合作,这些进程间就有直接制约关系,是一种相互协作的关系。

临界资源

  • 进程间应该采用互斥方式共享的资源。比如打印机。
  • 不论是硬件临界资源还是软件临界资源,多个进程必须互斥地对它进行访问。

临界区

  • 进程中访问临界资源的那段代码,称为临界区。
  • 若能保证进程互斥地进入自己的临界区,便可实现进程对临界资源的互斥访问。因此,在临界区前面加一段检查临界资源状态(是否被访问)的检查代码,这段代码称为进入区;相应的临界区后面也有恢复临界资源状态,称为退出区。
    while(TRUE) {
         
    	...
    	进入区
    	临界区
    	退出区
    	...
    }
    

同步机制应遵循的规则

  1. 空闲让进:若无进程在临界区,表明临界资源处于空闲状态,应该允许一个进程的请求进入临界区。
  2. 忙则等待:当有进程在临界区,表明临界资源正在被访问,因此其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。
  3. 有限等待:对要求访问临界资源的进程,应该保证在有限时间内能进入自己的临界区,以免陷入“死等”的状态。
  4. 让权等待:当进程不能进入自己的临界区,应立即释放处理机,以免进程陷入“忙等”的状态。

硬件同步机制

实际上,对临界区的管理,可以将标志看成一个锁。锁开进入,锁关等待,初始时锁是打开的。每个进入临界区的进程必须要对锁先进行测试,当锁未开则必须等待至锁开;反之,锁开应立即关锁。为了防止多个进程同时测试到锁开的情况,测试和关锁的操作应该是连续的,不允许分开。(以下的ts指令和swap指令,都是为了保证在测试锁状态的同时,也关锁)

关中断

工作原理:在进入锁测试前关闭中断,直到完成锁测试并上锁之后才能打开中断,这样进程在临界区执行期间,计算机不响应中断,也不会引发进程调度,就不会发生进程或线程切换。
缺点:关中断时间如果过长,会影响系统效率;只能用于单处理机系统,因为只能防止当前进程所在的CPU不会发生调度,如果是多CPU系统其他CPU不可控;关闭中断可能导致严重后果。

利用Test-and-Set指令实现互斥

TS指令的一般性描述如下:该执行过程不可分割,是一条原语。

boolean TS (boolean *lock) {
   	// 将锁测试和关锁操作在ts中执行完
	boolean old;	// 存储原先锁状态
	old=*lock;
	*lock=TRUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值