操作系统概念第四章部分作业题答案

mac2025-10-19  8

题目一: 在包含多线程的进程中,下列那些对象可能被线程所共享? 1.寄存器值 2.堆内存 3.全局变量 4.栈内存 5.局部变量 解答: 为了保证线程的独立运行,每个线程有独立的栈(4)和CPU寄存器(1)状态,这些是不能共享的。剩下的(堆内存,全局变量,局部变量)都能共享,属于进程资源。

题目二: 使用多线程解决方案,在多处理器系统中可以比在单处理器系统中获得更好的性能吗? 为什么? 解答: 一个多线程系统无法在多处理器系统上同时使用不同的处理器。操作系统智能看到一个单一的进程而不会调度在不同处理器上的不同进程的线程,因此多处理器系统执行多个用户线程是没有性能优势的。

题目三: 考虑在多处理器系统中采用多对多线程模式编写的多线程程序,使程序中用户级线程数比系统中处理器数多。讨论下列情形的性能影响: 1.分配给程序的内核线程数比处理器数少。 2.分配给程序的内核线程数与处理器数相等。 3.分配给程序的内核线程数比处理器数多,但少于用户线程数。 解答: 1、当内核线程的数量少于处理器的时候,一些处理器将处于空闲状态。因为调度途中只有内核线程的处理器,而不是用户线程的处理器。 2、当程序分配的内核线程的数量与处理器相同的时候,有可能所有处理器将同时调用。 3、当由程序分配的内核线程的数量大于处理器数量时,封锁一个内核线程并调出,换入另一个准备执行的内核线程。因此,增加多处理器系统的利用率。

题目四: 请谈谈你对阿姆达尔定律的理解,并说明如何提高系统的加速比。 解答: 阿姆达尔定律可以用如下公式表示: s( n ) 固定负载下,理论上的加速比。 B 串行工作部分所占比例,取值0~1, n 并行线程数、并行处理节点个数 以上公式说明: 加速比=没有改进前的算法耗时/改进后的算法耗时。 如果我们假定算法没有改进之前,执行总时间是1(假定为1个单元)。那么改进后的算法,其时间应该是串行工作部分的耗时(B)加上并行部分的耗时(1-B)/n,由于并行部分可以在多个cpu核上执行,所以并行部分实际的执行时间是(1-B)/n。 根据这个公式,如果并行线程数(我们可以理解为CPU处理器数量)趋于无穷,那么加速比与系统的串行工作部分的比例成反比,如果系统中有50%的代码串行执行,那么系统的最大加速比为2。也就是说,为了提高系统的速度,仅增加CPU处理器的数量不一定能起到有效的作用,需要提高系统内可并行化的模块比重,在此基础上合理增加并行处理器数量,才能以最小的投入得到最大的加速比。

最新回复(0)