1 / 4
文档名称:

利用信号量机制解决进程同步和互斥问题.doc

格式:doc   大小:22KB   页数:4页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

利用信号量机制解决进程同步和互斥问题.doc

上传人:cjrl214 2019/6/17 文件大小:22 KB

下载得到文件列表

利用信号量机制解决进程同步和互斥问题.doc

文档介绍

文档介绍:在讨论如何用信号量机制解决这个问题之前,我们应该先了解进程同步和互斥间的一些概念。首先是进程间的两种关系:同步和互斥。所谓同步就是把异步环境下的一组并发进程,因直接制约而互相发送消息二进行互相合作、互相等待,使得各进程按一定的速度执行的过程。互斥是指不允许两个以上的共享该资源的并发进程同时进入临界区。其中直接制约是指一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程。由于共享某一共有资源而引起的在临界区内不允许并发进程交叉执行的现象,由共享共有资源而造成的对并发进程执行速度的间接制约简称为间接制约。受间接制约的类中各程序段在执行顺序上是任意的。我们将不允许多个并发进程交叉执行的一段程序称为临界区。临界区是由属于不同并发进程的程序段共享公用数据或公用数据变量而引起的。进程互斥是进程之间发生的一种间接性作用,由两个或两个以上的进程需要同时访问某个共享变量,因竞争共有资源而引起的间接制约带来的。两个进程不能同时进入临界区,否则就会导致数据的不一致,产生与时间有关的错误。进程的同步则是程序共享私有资源造成直接制约。所以为了增强计算机系统的处理能力和提高资源利用率所采取一种同时操作技术,即程序的并发执行。并发的实质是一个处理器在几个进程之间的多路复用,并发是对有限的物理资源强制行使多用户共享,并且充分发挥硬件的并行性,以提高系统资源的利用率。进程的并发性可以调度多个多道程序增加资源的利用率,同时给用户信息的及时响应。如何实现并发进程的互斥?一种可能的办法是对临界区加锁以实现互斥。当某个进程进入临界区之后,它将锁上临界区,直到它退出临界区时为止。不过这种实现方法不能够保证并发进程互斥执行所要求的忙则等待的原则。信号量是一种软件资源,是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作,每个信号量至少须记录两个信息:信号量的值和等待该信号量的进程队列。信号量机制的原理。在操作系统中,信号量sem是一整数。在sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数。显然,用于互斥的信号量sem初值应该大于零。信号量数值仅能由P,V原语操作改变。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S=0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。P,V原语成对出现,在互斥操作时,他们处于同一个进程,但在同步操作时,他们不处于一个进程内。私有信号量是指只与制约进程有关而不是与整组并发进程有关的信号量。利用P,V原语实现进程同步的方法分为三步:首先为各并发进程设置私用信号量,然后为私用信号量赋初值,最后利用P,V原语和使用信号量规定各进程的执行顺序。解决同步与互斥问题的一些案例:一个吃水果问题。问题描述:桌上有一只盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘里的桔子,女儿专等吃盘里的苹果。只要盘子空,则爸爸或妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,那么四人之间的同步关系是什么?如何实现四人正确活动的程序?