进程互斥与同步
1.解释并发与并行,并说明两者关系。
并发:你玩手机玩到一半,老师走下来了,你放下手机看书,老师走后你继续玩手机,这就是并发。支持多个任务同时存在,而不要求同时执行。
并行:你玩手机玩到一半,老师走下来了,你边玩手机边装作看书,这就是并行。支持多个任务同时执行。
二者区别在于是否同时。
2.进程间有哪几种关系?分别要采取什么策略?
(1)关系:竞争关系(间接制约关系)和协作关系(直接制约关系)
(2)策略:竞争关系中最简单的策略是FCFS资源发配策略,而协作关系的多使用进程互斥。
3.为什么说进程的互斥也是一种同步?
当多个进程试图读取同一个资源时,可能因为A进程读取完修改了这个值,而B进程与A进程同时读取了修改前的值,但B进程想要读取的是修改后的值。所有进程间的互斥,在有些时候是一种同步,能够让资源的状态得到及时的更新。
4.解释死锁与“饥饿”,并说明两者关系。
死锁是某些条件造成了进程永远不会向前推进的死循环,而饥饿是有进程在一直正常运行,而有的进程却一直得不到资源。
这两者情况一般都是由于资源竞争引起的。
5.什么叫做临界区?如何解决进程对临界资源的访问冲突?
临界区是指一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问的特性。
解决方法:可以让进程一个个进入,执行有序退出。
6.信号量的物理意义是什么?
让临界区同一时间只有一个线程在访问它,也就是说信号量是用来协调进程对共享资源的访问的。
7.理解五个哲学家吃面问题,并能盲写出伪代码。
没筷子等待()
拿筷子()
放筷子()
8.一个超市有n个顾客购物,只有一个收银员,试用信号量P、V操作描述顾客进程和收银员之间的关系。写伪代码。
S=0,C=0 ,M=N
收银员P(S)
收银V(C)
顾客P(M)
开始购物
V(S)
P(C)
V(M)