进程互斥和同步
1.解释并发与并行,并说明两者关系。
并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
简单来说就是,并发强调的是一起出发,并行强调的是一起执行。
2.进程间有哪几种关系?分别要采取什么策略?
两种关系:竞争关系与协作关系
策略:首先对于竞争关系来说呢,资源竞争会引发两个控制问题:死锁和饥饿,而解决死锁最简单的策略是FCFS资源分配策略,向并发进程提供锁机制,在使用共享资源之前表达互斥要求,系统需要保证诸进程能互斥地访问共享资源,既要解决死锁问题,又要解决饥饿问题。进程互斥是知若干进程因为相互争夺独占型资源而产生的竞争制约关系。其次对于协作关系来说,协作进程之间需要排定执行先后次序的协调关系是直接制约关系,这就是进程同步。进程同步是协作进程之间相互等待对方消息或信号的协调关系,进程互斥也是一种特殊的进程同步关系,即逐次使用进程互斥关系资源,也是对进程使用资源的次序的一种协调。
3.为什么说进程的互斥也是一种同步?
进程互斥也是一种特殊的进程同步关系,即逐次使用进程互斥关系资源,也是对进程使用资源的次序的一种协调。在操作系统中,信号量、锁、管理、消息及其他软硬件机制都可被看做由进程和线程请求与释放的资源,多数同步机制主要用于内核层,有些同步机制也可用于更高层及应用程序。
4.解释死锁与“饥饿”,并说明两者关系。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
饥饿是指由于别的并发的激活的进程持久占有所需资源,使某个异步进程程在可预测的时间内不能被激活。
二者都是由于资源竞争引起的,在饥饿的情形下,系统中有至少一个进程能正常运行,只是饥饿进程得不到执行机会。而死锁则可能会最终使整个系统陷入死锁并崩溃。
5.什么叫做临界区?如何解决进程对临界资源的访问冲突?
临界区是指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。即并发进程中与共享变量有关的程序段。
解决:
(1)一次至多只有一个进程进入临界区内执行。
(2)如果已有进程在临界区中,试图进入此临界区的其他进程等待。
(3)进入临界区内的进程应在有限时间内退出,以便等待队列中的一个进程进入。
6.信号量的物理意义是什么?
(1) 若信号量s为正值,则该值等于在封锁进程之前对信号量s可施行的P操作数,亦即等于s所代表的实际使用的物理资源个数。
(2) 若信号量s为负值,则其绝对值等于登记排列在该信号量s队列之中等待进程的个数,亦即恰好等于对信号量s实施P操作而被封锁起来并进入信号量s队列的进程数。
(3) 通常P操作意味着请求一个资源,V操作意味着释放一个资源.在一定条件下,P操作代表挂起进程操作,而V操作代表唤醒被挂起进程的操作。
7.理解五个哲学家吃面问题,并能盲写出伪代码。
8.一个超市有n个顾客购物,只有一个收银员,试用信号量P、V操作描述顾客进程和收银员之间的关系。写伪代码。