进程间相互作用
在多进程的并发系统中,进程间有些可能逻辑上无关,而有些可能逻辑上相关,但由于, 它们之间的并行运行,它们之间都直接或间接的发生关系。
进程之间无论是否存在逻辑上的关系,由于它们都要共享或竞争一个计算机系统中的资源所以不可避免地会互相发生作用。
在逻辑上没有任何联系的进程称为无关进程
这种错误的结果又往往是与时间有关的, 所以,把它称为“与时间有关的错误”。
进程的同步与互斥
临界资源可以实现互斥的共享,但不允许多个进程同时访问
临界资源是一次只允许一个进程使用的共享资源,故临界资源是共享资源,而且由于一次只能够一个进程使用,故该采用互斥访问的方式实现共享
设有6个进程共享一互斥段, 若最多允许3个进程进入临界区,则所采用的互斥信号灯的初值为3
进程间的基本关系为同步与互斥
同步(直接制约) :因合作进程之间协调彼此的工作而控制自己的执行速度,即因相互合作,相互等待而产生的制约关系
互斥(间接制约) :进程之间竞争临界资源而禁止两个以上的进程同时进入临界区所发生的制约关系
进程间的同步与互斥,分别表示了各进程间的协调与竞争
两个进程合作完成一个任务, 在并发执行中,一个进程要等待其合作伙伴发来信息,或者建立某个条件后再向前执行,这种关系是进程间的同步关系
一段时间内只允许一个进程访问的资源,称为临界资源,程序代码中访问这类的代码称为临界区
在操作系统中,要对并发进程进行同步的原因是:并发进程是异步的
进程之间的同步是指进程之间的一种直接的协调工作关系,一些进程相互合作,共同完成一项任务。
对若干个并发进程共享某一变量的相关临界区的管理有三个要求: (1)一次至多一个进程能够进入临界区;(2)不能让一个进程无限制地在临界区执行; (3)不能强迫一个进程无限制地等待进入 它的临界区
在计算机系统中,对资源的共享方式分为同时共享和互斥共享。属于互斥共享的资源是磁带机
系统对相关临界区的调度使用原则有空让进、无空等待;多种择一、有限等待、 让权等待
进程的同步和互斥反映了进程间直接制约和间接制约的关系。
什么是进程的互斥与同步?
互斥:在逻辑上本来完全独立的若干进程,由于竞争同一个资源而产生的相互制约关系。
同步:进程间共同完成一项任务时直接发生相互作用的关系,在执行时间次序上必须遵循确定的规律。
信号量及P、V操作
V操作的物理含义是回收释放的一个资源,
P操作意味着申请一个资源,
若信号量S的初值为2,当前值为-1, 则表示有() 个等待进程?信号量表示可用的资源数,s初值为2表示有2个可用资源。而当前值为-1表示有一个进程没有分到资源而在等待,所以有1个等待进程。
在操作系统中,对信号量S的P原语操作定义中,使进程进入相应阻塞队列等待的条件是S<0
P原语操作的动作是: (1)sem减1; (2)sem减1后仍大于或等于零,则进程继续执行; (3)若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。
因为系统中有6个进程共享一个互斥段, 如果最多允许3个进程同时进入互斥段,则信号量S的初值应设为3。
信号量是一个整型的特殊变量,只有初始化和PV操作才能改变其值。通常,信号量分为互斥量和资源量,互斥量的初值一般为1,表示临界区只允许一个进程进入, 从而实现互斥。当互斥量等于0时,表示临界区已经有一个进程进入,临界区外尚无进程等待;当互斥量小于0时,表示临界区中有一个进程, 互斥量的绝对值表示在临界区外等待进入的进程数。同样的道理,资源信号量初值可以是任意整数,表示可用的资源数,当资源量为0时,表示所有资源已经全部用完,而且还有进程正在等待使用该资源,等待的进程数就是资源量的绝对值。
P操作即wait操作,表示等待某种资源直到可用。若这种资源暂时不可用,则进程进入阻塞状态。
用V操作唤醒一个等待进程时, 被唤醒进程的变为就绪状态
私用信号量。当某线程需利用信号量实现同一进程中各线程之间的同步时, 才使用
公用信号量。公用信号量是为实现不同进程间或不同进程中各线程之间的同步,才使用;如果先操作公有信号,再操作私有信号,极易发生“占有且等待”,容易产生死锁,所以先私后公。
在利用信号量解决进程同步问题中,如果同时出现私有信号量和公有信号量那么这两类信号量的P操作顺序一定是先私后公
在利用信号量解决进程同步问题中,如果同时出现私有信号量和公有信号量那么这两类信号量的 V 操作顺序一定是任意顺序
经典同步问题中,对信号量的P、V操作可以出现在一个进程中, 也可以在不同进程,但必须成对出现。
在非剥夺调度方式下,运行进程执行V原语之后,其状态不变
当对信号量进行V原操作之后,当S<=0,要唤醒一个等待进程
进程的互斥和同步都能用P/V原语实现、用户程序中执行系统调用命令时,处理机的状态字将发生改变、设备独立性是指用户在编程时,所使用的设备与实际设备无关
进程不仅要释放PCB结构,也要释放它所占有的所有资源;
V原语的顺序可以颠倒,而P原语的顺序不能随便颠倒,如果颠倒了,可能会引起进程发生死锁。
正在运行的进程在信号量s上作P操作之后,当S=0时,该进程保持运行状态
有m个进程共享一临界资源, 若使用信号量机制实现临界资源的互斥访间,则该信号量的最小取值是1-m
在操作系统中,P、V操作是一种进程同步原语
利用信号量的P、V操作可以交换交换少量信息
操作系统中信号的值与相应资源的使用情况有关,它的值仅能由P、V操作来改变。
每执行一次V操作,信号量的数值S加1。若(S>0) ,则该进程继续执行;否则,从对应的等待队列中移出一个进程并将就绪状态赋予该进程。
每执行次P操作,信号量的值S减1。若S>=0,则该进程继续执行;若S<0,则该进程阻塞,并把它插入该信号量对应的阻塞(等待)队列中。
利用信号量实现进程的(互斥),应为临界区设置一个信号 量mutex,初值为1,示该资源尚未使用,临界区应置于P(mutex)和V(mutex)原语之间。
在操作系统中,信号量是表示资源的物理实体,它是一个与队列有关的整型变量,其值仅能由P,V原语来改变。
经典的进程同步问题
Djkstra把同步问题抽象成一种"生产者和消费者关系”。 生产者一消费者问题是计算机中各种实际的同步、 所问题的一个抽象模型。
单缓冲的生产者——消费者问题中,有两类进程。他们之间存在同步关系,需要设置私有信号量控制他们的这种关系。
多进程共享缓冲池的经典生产者消费者问题中,有两类进程。他们之间存在互斥和同步关系,需要设置两类信号分别进行控制。
在多进程共享n个缓冲区的缓冲池这个经典生产者消费者问题中,mutex为互斥信号量,所控制的临界资源为缓冲池,初值为 1.Empty为私有信号量,表示"空”缓冲区的数量,初值为n。Full为私有信号量,示“满”缓冲区的数量,初值为0
管程
在非剥夺方式下,运行进程执行signal(Ctrl+C 组合键)操作后,其状态不变,
一个管程由管程名称、共享数据说明、对数据进行操作的一组过程和对共享数据赋初值的语句四个部分组成。
管程定义了一个共享变量的数据结构,以及在该数据结构上所执行的一组操作
进程通信
消息缓冲机制中,发送进程和接收进程之间存在有用来存放被传送消息的缓冲区,所以,它们之间存在对临界资源的使用问题。
进程高级通信原语的是共享内存、消息机制、管道通信
为了实现进程间的通信,可以设立一个通信机构信箱, 以发送信件以及接收回答信件为进程间通信的基本方式。
采用共享文件解决进程间大量信息交换的通信式是管道通信
评论: