操作系统--精髓与设计原理(第八版)第五章复习题答案

操作系统--精髓与设计原理(第八版)第五章复习题答案

5.1 列出与并发相关的4个设计问题。

  1. 操作系统必须能够跟踪不同的进程,这可使用进程控制块来实现。
  2. 操作系统必须为每个活动进程分配和释放各种资源。有时,多个进程想访问相同的资源。这些资源包括:
    • 处理器时间: 这是调度功能。
    • 存储器: 大多数操作系统使用虚存方案。
    • 文件。
    • I/O设备。
  3. 操作系统必须保护每个进程的数据和物理资源,避免其他进程的无意干扰,这涉及与存储器、文件和I/O设备相关的技术。
  4. 一个进程的功能和输出结果必须与执行速度无关(相对于其他并发进程的执行速度)。

5.2 产生并发的三种上下文是什么?

  • 多应用程序:多道程序设计技术允许在多个活动的应用程序间动态共享处理器时间。
  • 结构化应用程序:作为模块化设计和结构化程序设计的扩展,一些应用程序可被有效地设计成一组并发进程。。
  • 操作系统结构:同样的结构化程序设计优点适用于系统程序,且我们已知操作系统自身常常作为一组进程或线程实现。

5.3 执行并发进程的最基本要求是什么?

​ 最基本要求是增加进程间的互斥能力。

5.4 列出进程间的三种互相知道的程度,并简要给出各自的定义。

  • 进程之间相互不知道对方的存在:这是一些独立的进程,它们不会一起工作。关于这种情况的最好例子是多个独立进程的多道程序设计,可以是批处理作业,也可以是交互式会话,或者是两者的混合。尽管这些进程不会一-起工作, 但操作系统需要知道它们对资源的竞争情况(competition)。例如,两个无关的应用程序可能都想访问同一个磁盘、文件或打印机。操作系统必须控制对它们的访问。
  • 进程间接知道对方的存在:这些进程并不需要知道对方的进程ID,但它们共享某些对象,如一个I/O缓冲区。这类进程在共享同-一个对象时会表现出合作行为(cooperation)。
  • 进程直接知道对方的存在:这些进程可通过进程ID互相通信,以合作完成某些活动。同样,这类进程表现出合作行为。

5.5 竞争进程和合作进程间有何区别?
竞争进程需要同时访问相同的资源,像磁盘,文件或打印机。合作进程要么共享访问一个共有的资源,像一个内存访问区,要么就与其他进程相互通信,在一些应用程序或活动上进行合作。
5.6 列出与竞争进程相关的三个控制问题,并简要给出各自的定义。

  • 互斥(mutual exclusion): 假设两个或更多的进程需要访问一个不可共享的资源,如打印机。在执行过程中,每个进程都给该I/O设备发命令,接收状态信息,发送数据和接收数据。我们把这类资源称为临界资源(critical resource),使用临界资源的那部分程序称为程序的临界区Ccritical section)。一次只允许有一 一个程序在临界区中,这一点非常重要。
  • 死锁(deadlock):考虑两个进程P1和P2,以及两个资源R1和R2,假设每个进程为执行部分功能都需要访问这两个资源,那么就有可能出现下列情况:操作系统把R1分配给P2,把R2分配给P1,每个进程都在等待另一个资源,且在获得其他资源并完成功能前,谁都不会释放自己已拥有的资源,此时这两个进程就会发生死锁。
  • 饥饿(starvation):假设有三个进程(P1、P2 和P3),每个进程都周期性地访问资源R。考虑这种情况,即P1拥有资源,P2和P3都被延迟,等待这个资源。当P1退出其临界区时,P2和P3都允许访问R,假设操作系统把访问权授予P3,并在P3退出临界区之前P1又要访问该临界区,若在P3结束后操作系统又把访问权授予P1,且接下来把访问权轮流授予P1和P3,那么即使没有死锁,P2也可能被无限地拒绝访问资源。

5.7 列出对互斥的要求。

要提供对互斥的支持,必须满足以下要求:
1. 必须强制实施互斥:在与相同资源或共享对象的临界区有关的所有进程中,一次只允许一个进程进入临界区。
2. 一个在非临界区停止的进程不能干涉其他进程。
3. 绝不允许出现需要访问临界区的进程被无限延迟的情况,即不会死锁或饥饿。
4. 没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入。
5. 对相关进程的执行速度和处理器的数量没有任何要求和限制。
6. 一个进程驻留在临界区中的时间必须是有限的。

5.8 在信号量上可以执行什么操作?

为达到预期效果,可把信号量视为-一个值为整数的变量,整数值上定义了三个操作:

  1. 一个信号量可以初始化成非负数。
  2. semWait 操作使信号量减1。若值变成负数,则阻塞执行semWait的进程,否则进程继续执行。
  3. semSignal 操作使信号量加1。若值小于等于零,则被semwait操作阻塞的进程解除阳塞。

5.9 二元信号量和一般信号量有何区别?

  1. 二元信号量可以初始化为0或1。
  2. semWaitB 操作检查信号的值。若值为0,则进程执行semWaitB就会受阻。若值为1,则将值改为0,并继续执行该进程。
  3. semSignalB 操作检查是否有任何进程在该信号上受阻。若有进程受阻,则通过semWaitB操作,受阻的进程会被唤醒;若没有进程受阻,则值设置为1。

5.10 强信号量和弱信号量有何区别?

强信号量要求在信号量上等待的进程按照先进先出的规则从队列中移出。弱信号量没有此规则。

5.11 什么是管程?

管程是由一个或多个过程,一个初始化序列和局部数据组成的软件模块,其主要特定如下:

  • 局部数据变量只能被管程的过程访问,任何外部过程都不能访问。
  • 一个进程通过调用管程的一个过程进入管程。
  • 在任何时候,只能有一个进程在管程中执行,调用管程的任何其他进程都被阻塞,以等待管程可用。

5.12 关于消息,阻塞和无阻塞有何区别?

发送者和接收者任一方阻塞则消息传递需要等待,都无阻塞则不需要等待。

5.13 与读者/写者问题相关的条件通常有哪些?

​ 存在一个多个进程共享的数据区,该数据区可以是一个文件,一块内存等;有些进程(reader)只能读取这个数据区中的数据,有些进程(writer)直往数据区中写数据。此外,还必须满足以下条件:

  1. 任意数量的读进程可以同时读这个文件。
  2. 一次只有一个写进程可以写文件。
  3. 若一次写进程正在写文件,则禁止任何读进程读文件。
posted @ 2021-01-08 16:45  浩楠honer  阅读(2079)  评论(0编辑  收藏  举报