临界资源

更新时间:2023-02-10 19:29

多道程序系统中存在许多进程,它们共享各种资源,然而有很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如输入机、打印机、磁带机等。

简介

各进程采取互斥的方式,实现共享的资源称作临界资源。

属于临界资源的硬件有打印机、磁带机等,软件有消息缓冲队列、变量、数组、缓冲区等。 诸进程间应采取互斥方式,实现对这种资源的共享。

进程中用于实现进程互斥的那段代码称为临界区。显然,若能保证诸进程互斥地进入自己的临界区,便可实现诸进程对临界资源的互斥访问。为此,每个进程在进入临界区之前,应先对欲访问的临界资源进行检查,看它是否正被访问。如果此刻该临界资源未被访问,进程便可进入临界区对该资源进行访问,并设置它正被访问的标志;如果此刻该临界资源正被某进程访问,则本进程不能进入临界区。

在操作系统中,有临界区的概念。临界区内放的一般是被1个以上的进程或线程(以下只说进程)共用的数据。

临界区内的数据一次只能同时被一个进程使用,当一个进程使用临界区内的数据时,其他需要使用临界区数据的进程进入等待状态。

操作系统需要合理的分配临界区以达到多进程的同步和互斥关系,如果协调不好,就容易使系统处于不安全状态,甚至出现死锁现象。

事例

例如,打印机不可能同时打印多个进程的结果,若将一个进程的结果打印几行,再打印另一个进程的结果,这会使打印的结果变得无法使用。所以两个或两个以上进程由于不能同时使用同一临界资源,只能一个进程使用完了,另一进程才能使用。

除了物理设备外,还有很多软资源如变量、表格、队列等也都属于临界资源,如果同时使用,同样会引起与时间相关的错误。例如,有两个进程P1和P2共享一个变量count,P1或P2的功能是,每执行完某些操作后,将count的值取出加1,R1和R2是工作寄存器。当两个进程按下述顺序执行时:

P1:操作序列;

Rl=count;

R1=R1+1;

count=R1;

P2:操作序列;

R2=count;

R2=R2+1;

count=R2;

其结果使count的值增加了2;倘若P1和P2按另一种顺序执行,例如:

P1:R1=count;

P2:R2=count;

P1:Rl=Rl+1;count=Rl;

P2:R2=R2+1;count=R2;

按此执行序列,虽使P1和P2都各自对count做了加1操作,但最后的count值却只增加了1,即出现了结果不确定的错误。显然这种错误与执行顺序有关,又叫与时间相关的错误。之所以出现这种错误,是由于变量count是临界资源,P1和P2不能同时使用,即仅当进程P1对count进行修改并退出后,才允许进程P2访问和修改,那么就可以避免上述的错误结果。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}