[关闭]
@740340735 2016-03-29T05:49:40.000000Z 字数 720 阅读 626

操作系统 作业四

操作系统

陆一洲 5140309557 of F1403020


4.1
举两个多线程程序设计的例子来说明多线程不比单线程方案提高性能。
  • 任何形式的顺序程序对线程来说都不是一个好的形式。例如一个计算个人报酬的程序。
  • 另外一个例子是一个“空壳”程序,如 C-shell 和 korn shell。这种程序必须密切检测其本身的工作空间。如打开的文件、环境变量和当前工作目录。

4.4
以下程序中的哪些组成部分在多线程程序中是被线程共享的?
a. 寄存值 b. 堆内存 c. 全局变量 d. 栈内存
一个线程程序的线程共享堆内存和全局变量,但每个线程都有属于自己的一组寄存值和栈内存。

4.5
一个采用多用户线程的多线程方案在多进程系统中能够取得比在单处理器系统中更好的性能吗?
一个包括多用户线程的多线程系统无法在多处理系统上同时使用不同的处理器。操作系统只能看到一个单一的进程且不会调度在不同处理器上的不同进程的线程。因此,多处理器系统执行多个用户线程是没有性能优势的。

4.8
考虑一个多处理器系统和用多线程对多线程模式编写的多线程程序。让程序中的用户线程数量多于系统中的处理器的数量,讨论下列情况下的性能意义:
a. 由程序分配的内核线程的数量比处理器少
b. 由程序分配的内核线程的数量与处理器相同
c. 由程序分配的内核线程的数量大于处理器数量但少于用户线程的数量
  • 当内核线程的数量少于处理器时,一些处理器将仍然处于空闲状态。因为,调度图中只有内核线程的处理器,而不是用户线程的处理器。
  • 当程序分配的内核线程的数量与处理器相同时,那么有可能所有处理器将同时使用。
  • 当由程序分配的内核线程的数量大于处理器数量时,封锁一个内核线程并调出,换入另一个准备执行的内核线程。因此,增加多处理器系统的利用率。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注