1.解释并发与并行,并说明两者关系。
并发和并行都是完成多任务更加有效率的方式,但还是有一些区别的,并发,并行,可见他们的确是有区别的。
并发是指原本按照事先安排好的顺序执行,当有更重要的事情是,会先执行重要的事情,交替做不同事情。举一个简单的例子,有三个同学需要一个老师对其进行作业辅导,老师先给A同学讲完思路后,然后让A自己去完成,在A自己完成的过程中老师给B同学讲思路,让B自己去完成,在B完成的过程中老师给C讲思路。这就是并发。而并行呢,是指几个进程同时进行。就例如老师同时给ABC三名同学讲解思路,然后他们自己完成作业。这就是并行。
2.进程间有哪几种关系?分别要采取什么策略?
在多道程序环境下,当程序并发执行时,由于资源共享和进程合作,使处于同一个系统中的诸多进程之间可能存在着以下两种形式的制约关系:(1)、间接相互制约关系。所谓间接相互制约源于资源共享;(2)、直接相互制约关系。这种制约主要源于进程间的合作。
同步是因合作进程之间协调彼此的工作而控制自己的执行速度,即因相互合作,相互等待而产生的制约关系。而互斥是进程之间竞争临界资源而禁止两个以上的进程同时进入临界区所发生的制约关系。
3.为什么说进程的互斥也是一种同步?
互斥指的是某种资源一次只允许一个进程使用,即你在使用的时候我不使用,我在使用的时候你不使用,这就是一种协调,一种“步伐”上的一致,因而也就是一种同步。但是,为了求解实际问题,将“同步”与“互斥”加以区别是有好处的,因为这两种问题的求解方法是不同的。
4.解释死锁与“饥饿”,并说明两者关系。
死锁是一个进程集合中的每个进程都在等待只能有此集合中的其他进程才能引发的事件,而无限陷入僵持的局面。假如双方都拥有部分资源(P1拥有A,P2拥有B,且A,B均只有一个),但这时P1还需要B,P2还需要A,于是P1与P2都会处在无限等待状态,发生了死锁。
饥饿时指系统不能保证某个进程的等待时间上界,从而使该进程长时间等待,当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿。当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。
由于饥饿和饿死与资源分配策略有关,因而解决饥饿与饿死问题可从资源分配策略的公平性考虑,确保所有进程不被忽视。如时间片轮转算法(RR)。它将CPU的处理时间分成一个个时间片,就绪队列中的诸进程轮流运行一个时间片,当时间片结束时,就强迫运行程序让出CPU,该进程进入就绪队列,等待下一次调度。同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。如此方式轮流调度。这样就可以在不考虑其他系统开销的情况下解决饥饿的问题。
5.什么叫做临界区?如何解决进程对临界资源的访问冲突?
每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进
入后不允许其他进程进入。
任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则
其它所有试图进入临界区的进程必须等待。 任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。