赞
踩
信号量的值为-1,这表示等待进入临界区的进程数是1。信号量是一个特殊的整型变量,只有初始化和PV操作才能改变其值。通常,信号量分为互斥量和资源量,互斥量的初值一般为1,表示临界区只允许一个进程进入,从而实现互斥。当互斥量等于0时,表示临界区已有一个进程进入,临界区外尚无进程等待;当互斥量小于0时,表示临界区有1个进程,互斥量的绝对值表示在临界区外等待进入的进程数。资源信号量也是这么个情况。
临界资源是一次仅允许一个进程使用的资源,比如很多物理设备,如打印机。
进入区:为了进入临界区使用临界资源,在进入区要检查是否可进入临界区,若能进入临界区,则应设置正在访问临界区的标志,以阻止其他进程同时进入临界区。
临界区:进程中访问临界资源的那部分代码,又称临界段。
退出区:将正在访问临界区的标志清除。
剩余区:代码中的其他部分。
临界资源与共享资源的区别在于,在一段时间内能否允许被多个进程访问(并发使用),显然磁盘属于共享设备。共用队列可供多个进程使用,但一次只可供一个进程使用,试想若多个进程同时使用共用队列,势必造成队列中的数据混乱而无法使用。可重入的代码程序一次可供多个进程使用。# 4进程A和进程B共享缓冲区协作完成数据处理,进程A负责生产数据并放入缓冲区,进程B从缓冲区读数据并输出。进程A与B的关系是互斥和同步关系。其实这道题很坑啊!进程A要先放入数据,B才能取出来,这是很明显的同步机制。然后共享的缓冲区一定是互斥访问的,所以它们也有互斥关系。
这是因为执行P操作时的进程处于运行态,如果说时间片消耗完了倒是可以从运行态转到就绪态,但是没取到资源就只能进入阻塞态,取到资源了进程还是运行态。
当共享资源用共享数据结构表示时,资源管理程序可用对该数据结构进行操作的一组过程来表示,如资源的请求和释放过程request和release。把这样一组相关的数据结构和过程一并归为管程。
管程由3部分组成:
(1)局部于管程的共享变量说明。
(2)该数据结构进行操作的一组过程
(3)对局部于管程的数据设置初始值得语句;此外,还需为该管程赋予一个名字。
管程的引入是为了解决临界区分散所带来的管理和控制问题。在没有管程之前,对临界区的访问分散在各个进程之中,不易发现和纠正分散在用户程序中的不正确使用P,V操作等问题。管程将这些分散在各进程中的临界区集中起来,并加以控制和管理,管程一次只允许一个进程进入管程内,从而既便于系统管理共享资源,又能保证互斥。
因为系统中原来存在等待进入临界区的进程,mutx<=-1,因此在执行V(mutex)操作后,mutex<=0。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。