1、解释并发与并行,并说明两者关系。
并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,担任一个时刻点上只有一个程序在处理机上运行。
并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行。
并发是多个事件在同一时间段执行,而并行是多个事件在同一时间点执行。
2、进程间有哪几种关系?分别要采取什么策略?
有竞争关系和协助关系。
竞争关系:批处理系统中建立多个批处理进程,分时系统中建立多个交互式进程,他们共享一套计算机系统资源,使得原本不存在逻辑关系的诸进程因共享资源而产生交互和制约关系,这是间接制约关系,又称互斥关系,操作系统必须协调进程对共享资源的争用。
协作关系:为了完成共同的任务需要分工协作,由于每个进程都独立地以不可预知的速度推进,在执行的先后次序上就要有约束,需要相互协作的进程在某些关键点上协调各自的工作。当其中的一个进程到达关键点后,在尚未得到其伙伴进程发来的消息或信号之前应阻塞自己,等待协作者发来信号或消息后方被唤醒并继续执行。这种协作进程之间需要排定执行先后次序的协调关系是直接制约关系,称为进程同步。
3、为什么说进程的互斥也是一种同步?
在操作系统中,当某一进程正在访问某一存储区域时,就不允许其他进程进行读写或者修改该存储区的内容,否则就会发生后果无法估计的错误。进程之间的这种相互制约的关系成为进程互斥。
并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为进程同步。
实际上进程互斥也是一种同步,他协调多个进程互斥进入同一个临界资源对应的临界区。
4、解释死锁与“饥饿”,并说明两者关系。
死锁是因进程竞争资源或推进顺序不当而有可能造成的一种僵局,即系统中两个或多个进程无限期地等待永远不会发生的条件,这些进程都不能向前推进,这就叫死锁。
“饥饿”是指系统中的每个资源占用者都在有限的时间内释放它所占用的资源,但是仍然存在申请者永远得不到资源的现象。
死锁和“饥饿”二者都是由于竞争资源而引起的。
5、什么叫做临界区?如何解决进程对临界资源的访问冲突?
临界区:指的是一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用,例如:semaphore。只能被单一线程访问的设备,例如:打印机。
为禁止两个进程同时进入临界区,同步机制应遵循以下准则:
空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
有限等待。对请求访问的进程,应保证能在有限时间内进入临界区。
让权等待。当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。
6、信号量的物理意义是什么?
信号量:有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。