操作系统--进程同步与死锁

本文详细探讨了操作系统中的进程同步概念,包括并发性、错误、同步与互斥,以及临界资源和临界区。介绍了硬件和软件实现进程互斥的方法,如禁止中断、TS指令、Swap指令等,并讨论了信号量机制解决进程同步问题。同时,通过生产者-消费者、读者-写者和哲学家进餐问题等经典案例,阐述了如何应用信号量解决同步问题。此外,文章还讨论了管程这一高级同步机制以及死锁的概念、预防和避免策略,如银行家算法。
摘要由CSDN通过智能技术生成

5 进程同步

5.1 进程同步的基本概念

5.1.1 并发性

    进程的并发性是操作系统的基本特征,并发可以改善操作系统资源的利用率,提高系统的吞吐量。所谓并发性,是指一组进程执行在时间点上相互交替,在时间段上互相重叠。

5.1.2 与时间相关的错误

    在多进程并发的情况下,进程共享某些变量或硬件资源,由于进程的执行具有不确定性,如果不对进程的执行加以制约,其执行结果往往是错误的。


    从以上的分析可以看出,相同的程序由于指令的交错执行,最终的结果也不尽相同。这就要求使用进程同步及互斥机制,实现对共享资源的互斥访问,保证程序执行的正确性。

5.1.3  进程的同步与互斥

1. 进程的同步

    进程同步,是指当进程运行到某一点时,若其他进程已完成了某种操作,使进程满足了继续运行的条件,进程才能够继续运行,否则必须停下来等待。通常将进程等待的那一点称为“同步点”,而将等待运行的条件称为“同步条件”。

    相互协作的进程间经常存在数据或变量等共享资源,进程受到特定条件的限制,各进程需要严格按照固定的顺序执行,否则将导致程序的执行错误。

2. 进程的互斥

    对系统中的某些进程来说,为保证程序的正确执行,必须相互协调共享资源的使用顺序。通常共享资源可分为互斥共享资源和可同时访问共享资源两类。互斥共享资源是指在某段时间内,只能有一个进程对该资源进行访问,其他进程若想访问该资源则必须停下来等待,直到该共享资源被前一个进程释放。可同时访问共享资源是指在某段时间内,可以有多进程同时对该资源进行访问,因而也不会存在进程互斥的问题。

5.1.4 临界资源和临界区

1. 临界资源

    将只允许一个进程访问的共享资源称为临界资源,许多物理设备都属于你临界资源,如打印机、绘图仪等。另外,有很多变量,数据能由若干进程共享,这些共享变量及数据也属于临界资源。

2. 临界区

    将程序中对临界资源访问的代码部分称为临界区。

    临界区访问准则:

1)空闲让进:没有进程在临界区时,想进入临界区的进程可进入

2)忙则等待:任何时候,处于临界区内的进程不可多于一个,当已有进程在临界区时,其他欲进入的进程必须等待

3)有限等待:进入临界区的进程要在有限时间内完成并退出临界区,不能让其他进程无限等待

4)让权等待:如果进程不能进入自己的临界区,则应停止运行,让出处理器,避免进程出现“忙等”现象

5.2 互斥实现方法

5.2.1 硬件方法

1. 禁止中断

    由于处理器只能在发生中断引起进程切换,因此关闭中断就能保证当前运行的进程将临界区代码执行完,从而保证了对临界区资源的互斥访问。

    这种方法的优点是简单、方便,缺点是不适用于多处理器;不适用于用户程序;如果对临界区的访问时间较长,关中断的时间就会较长,从而限制了处理器并发能力。

2. TS(Test-and-Set)指令

    S指令的功能是检查指定标志后把该标志置位,可以将TS指令看作一个不可中断的函数,该函数以一个测试标志为参数。当测试标志位时函数返回0,表示资源被占用,否则函数返回1,表示资源可被占用,同时将测试标志位置位。可描述为如下形式:

TS(key){
	if(key==1){
		return 0;
	}else{
		key=1;
		return 1;
	}
}

    可使用如下TS指令实现临界区互斥:

while(!TS(key));	//测试标志位并置位,加锁
临界区;
key=0;	//清标志位,解锁

    进程在执行时首先检查标志位是否被置位,若未被置位则进入临界区,否则将循环进行测试。在进程访问完临界资源后,会将标志位清除,以保证其他进程可以进入临界区。

3.  Swap指令

    Swap对换指令的功能是交换两个字节的内容,该指令可用函数描述为如下形式。

Swap(a,b){
	temp=a;
	a=b;
	b=a;
}

    可使用如下Swap指令实现临界区互斥:

x=1;
while(x!=0) swap(&key,&x);	//加锁
临界区;
key=0;

    标志位key的初值被置为0,表示临界资源未被使用。进程在进入临界区时将使用Swap指令将key与x的值互换,若x值变为0,则表示临界资源可被占用,进程可进入临界区,否则将循环进行测试。在进程访问完临界资源后,通过将key置为0来释放其所占用的资源。

    使用硬件方法管理临界区优点:

1)适用范围广。

2)方法简单。

3)支持多个临界区

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值