进出互斥与同步

1.解释并发与并行,并说明两者关系。

   并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。

  并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。
  并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,
  具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。
 
2.进程间有哪几种关系?分别要采取什么策略?
  进程之间存在直接制约关系(即同步问题)和间接制约关系(即互斥问题);同步问题是存在逻辑关系的进程之间相互等待所产生的制约关系,
  互斥问题是相互逻辑关系的进程竞争使用资源所发生的制约关系。
 
 3.为什么说进程的互斥也是一种同步?

  在操作系统中,当某一进程正在访问某一存储区域时,就不允许其他进程进行读写或者修改该存储区的内容,否则就会发生后果无法估计的错误。进程之间的这种相互制约的关系成为进程互斥。

  并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为进程同步。

  实际上进程互斥也是一种同步,他协调多个进程互斥进入同一个临界资源对应的临界区。

4.解释死锁与“饥饿”,并说明两者关系。

死锁

  产生死锁的原因主要有两个,一是竞争资源,系统提供的资源数量有限,不能满足每个进程的需求;二是多道程序运行时,进程推进顺序不合理。由此可见,发生死锁时死锁进程的个数至少是两个。我们可以举一个最简单的例子来了解一下死锁:

  假如双方都拥有部分资源(P1拥有A,P2拥有B,且A,B均只有一个),但这时P1还需要B,P2还需要A,于是P1与P2都会处在无限等待状态,发生了死锁。

饥饿

  产生饥饿的主要原因是:在一个动态系统中,对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序。有时资源分配策略可能是不公平的,即不能保证等待时间上界的存在 。在这种情况下,即使系统没有发生死锁,某些进程也可能会长时间等待.当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿,当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。举个例子,当有多个进程需要打印文件时,如果系统分配打印机的策略是最短文件优先,那么长文件的打印任务将由于短文件的源源不断到来而被无限期推迟,导致最终的饥饿甚至饿死。

死锁和饥饿的异同

  相同点:二者都是由于竞争资源而引起的。

  不同点:

  1. 从进程状态考虑,死锁进程都处于等待状态,忙等待(处于运行或就绪状态)的进程并非处于等待状态,但却可能被饿死;
  2. 死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己的资源,表现为等待时限没有上界(排队等待或忙式等待);
  3. 死锁一定发生了循环等待,而饿死则不然。这也表明通过资源分配图可以检测死锁存在与否,但却不能检测是否有进程饿死;
  4. 死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。
  5. 在饥饿的情形下,系统中有至少一个进程能正常运行,只是饥饿进程得不到执行机会。而死锁则可能会最终使整个系统陷入死锁并崩溃。

5.什么叫做临界区?如何解决进程对临界资源的访问冲突?

  临界区:每个进程中访问临界资源的那段程序叫做临界区。进程对临界区的访问必须互斥,每次只允许一个进程进去临界区,其他进程等待。
  临界资源:指每次只允许一个进程访问的资源,分硬件临界资源、软件临界资源。

6.信号量的物理意义是什么?

  信号量的物理意义是当信号量值大于零时表示可用资源的数目;当信号量值小于零时;其绝对值为因请求该资源而被阻塞的进程数目。

猜你喜欢

转载自www.cnblogs.com/wscblog/p/10773836.html