进程同步的多种解决办法
- 格式:docx
- 大小:156.25 KB
- 文档页数:6
XI`AN TECHNOLOGICAL UNIVERSITY 实验报告
进程同步的多种解决办法
摘要:简单介绍了进程同步的概念,分析了进程同步的多种解决办法,重点讨论了读者写者问题,更容易了解解决办法的具体机制。
关键词:进程同步;多进程;读者-写者
0 引言
Windows应用程序中消息有两种送出途径,直接和排队。Windows或某些运行的应用程序可直接发布消息给窗口过程,或消息可送达到消息列象连续不断地轮询消息队列的OS中当前执行的每一个进程都不是由事件的顺序来控制的,而是由事件的发生来控制的。在传统的操作系统中,为提高资源利用率和系统吞吐量,通常采用多道程序技术,将多个程序同时装入内存,并使之并发执行。
1 同步
在OS中引入进程后,一方面使系统中多道程序并发执行,这不仅使资源利用率改善,亦可显著提高系统吞吐量,但也使系统更为复杂,致使进程对系统资源的无序争夺,每次处理的结果存在不确定性,显现不可再现性。因此,在多道程序系统中,必须引入进程同步机制。在本文中将介绍如下几种进程同步机制——硬件同步机制,信号量机制,管程机制和Peri网。
2 进程同步解决办法
2.1 硬件同步机制
目前许多计算机已提供特殊的硬件指令,允许对一个字中的内容进行检测和改正或对两个字进行交换。可利用特殊指令解决临界的问题。对临界区管理时,可将标志看作一个锁,“锁开”进入,“锁关”等待,初始状态锁是开着的。
但当临界资源忙碌时,其他进程处于“忙等”状态,不符合“让权等待”原则,造成处理机时间的浪费,同时很难解决,解决复杂的进程同步问题。
2.2 信号量机制
信号量机制已得到广泛发展,由整形信号量经记录型信号量,发展到“信号量集机制”,已广泛应用于单处理机和多处理机系统以及计算机网络中。信号量机制通常包括整型信号量,记录型信号量,AND型信号量和信号量集。
2.2.1 整型信号量
除初始化外,仅能通过两个标准的原子操作wait(S)和signal(S)来访问。很长时间以来,这两个操作分别被称为P、V操作。wait和signal操作可描述如下:wait(S){
while(S<=0);/*do no-op*/
S--;
}
Signal(S)
{
S++;
}
原子操作不可中断,因此在执行时不可中断,即是当一个进程再修改某信号量时,没有其他进程可同时对该信号量进行修改。此外,在wait操作中,对S 值的测试和做S=S-1操作时,都不可中断。
在整型信号量机制中的wait操作,只要是信号量S<=0,就不断测试,因此,该机制并未遵循“让权等待”的准则,而是使进程处于“忙等”状态。记录型信号量则不存在“忙等”状态。
2.2.2 记录型信号量
采取“让权等待”的策略,但会出现多个进程访问同一临界资源的情况。为此,在信号量机制中除了一个需要用于代表资源数目的整型变量value外,还应增加一个进程链表指针list,用于链接上述所有的等待进程。记录型信号量由于它采用了记录型的数据结构而得名。
2.2.3 AND型信号量
AND同步机制的基本思想是:将进程在整个运行过程中需要的所有资源,一次性全部地分给进程,待进程使用完再一起释放。只要尚有一个进程未能分配给进程,其他所有可能为之分配的资源也不分配给它。亦即,对若干个临界资源的分配采取原子操作方式;要么把它所请求的资源全部分配到进程。要么一个也不分配。由死锁理论可知,这样就可以避免上述死锁情况的发生。为此,在wait 操作中增加了一个“AND”条件,故称为AND同步,或成为同时wait操作。2.2.4 信号量集
在上述的记录型信号量机制中,wait(S)或signal(S)操作仅能对信号量施加1或减一操作,意味着每次只能对某类资源进行一个单位的申请或者释放。当一次需要N个单位时,便要进行N次wait(S)操作,这显然是低效的,甚至会增加死锁的概率。此外,在有些情况下,为确保系统的安全性,当所申请的资源数量低于某一下限值时,还必须进行管制,不予以分配。因此,当进程中申请某类临界资源时,在每次分配之前,都必须测试资源的数量,判断是否大于可分配的下限值,决定是否予以分配。
基于上述两点,可以对AND信号量机制加以扩充,对进程所申请的所有资源以及每类资源不同的资源需求量,在一次P,V原语操作中完成申请或者释放。进程对信号量S1的测试值不再是一,而是该资源的分配下限值t1,即使要求Si>=ti,否则不予以分配。一旦允许分配,进程对该资源的需求值为di,即表示资源信号量,进行Si=Si-di操作,而不是简单的Si=Si-1。由此形成一般化的“信号量集”机制。
2.3 管程机制
系统中的各种硬件资源和软件资源均可用于数据结构抽象地描述其资源特性,即用少量信息和对该资源所执行的操作来表征该资源,而忽略它们的内部结构和实现细节。因此,可以利用共享资源所执行的操作来表征该资源,而忽略它们的内部结构和实现细节。因此,可以利用共享数据结构抽象地表示系统中的共享资源,并且将对该共享数据结构实施的特定操作定义为一组过程。进程对共享资源的申请、释放和其他操作必须通过这组过程,间接的对共享数据结构实现操作。对于请求访问共享资源的诸多并发进程,可以根据资源的情况接受或者阻塞,确保每次仅有一个进程进入管程。执行这组过程,使用共享资源,选择对共享资源所有访问的统一管理,有效实现进程互斥。
2.4 Petri网
Petri网是一种适于描述和分析异步并发系统的有力工具,Peri网是德国的C.A.Petri于1962年在他的博士论文中提到的,用以构造系统模型及动态特性分析。在计算机科学的许多领域,如并行计算,分布式数据库设计等,Petri网系统已经起到了越来越重要的作用。
Petri网结构元素的物理描述:①位置:描述可能的系统局部状态(条件或状态)。如:队列、资源等。②变迁:描述修改系统状态的事件。如:信息处理、发送、资源存取等操作。③弧:规定局部状态和事件之间的关系,连接位置和变