《操作系统--精髓与设计原理》第四章复习题

第4章    线程

1、对于多线程系统,进程控制块中的典型元素中的哪些可能属于线程控制块,哪些可能属于进程控制块?

这对于不同的系统来说通常是不同的,但一般来说,进程是资源的所有者,而每个线程都有它自己的执行状态。

进程标识:进程必须被标识,而进程中的每一个线程也必须有自己的ID。处理器状态信息:这些信息通常只与进程有关。进程控制信息:调度和状态信息主要处于线程级;数据结构在两级都可出现;进程间通信和线程间通信都可以得到支持;特权在两级都可以存在;存储管理通常在进程级;资源信息也在进程级。

2、请给出线程间的模式切换比进程间的模式切换开销更低的原因。

因为线程包含的状态信息更少,且所有线程都驻留在同一块地址空间中,并可访问相同的数据。

3、在进程概念中体现出的两个独立且无关的特点是什么?

资源所有权和调度/执行

4、给出在单用户多处理系统中使用线程的4个例子。

  1. 前台和后台工作:例如,在电子表格程序中,一个线程可以显示菜单并读取用户输入,而另一个线程执行用户命令并更新表格。这种方案允许程序在前一条命令完成前提示输入下一条命令,因而通常会使用户感到应用程序的响应速度有所提高。
  2. 异步处理:程序中的异步元素可用线程来实现。例如,为避免掉电带来的损失,往往把文字处理程序设计成每隔1分钟就把随机存储内存(RAM)缓冲区中的数据写入磁盘。可以创建一个任务是周期性地进行备份的线程,该线程由操作系统直接调度。这样,主程序中就不需要特别的代码来提供时间检查或协调输入和输出。
  3. 执行速度:多线程进程在计算一批数据时,可通过设备读取下一批数据。在多处理系统中,同一进程中的多个线程课同时执行。这样,既使一个线程在读取数据时被I/O操作阻塞,另一个线程仍然可以继续运行。
  4. 模块化程序结构:涉及多种活动或多种输入/输出源和目的的程序,更容易使用线程来设计和实现。

5、哪些资源通常被一个进程中的所有线程共享?

地址空间、文件资源、执行特权等

扫描二维码关注公众号,回复: 1522367 查看本文章

6、列出用户级线程相对于内核级线程的三个优点。

  1. 所有线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核模式特权,因此进程不需要为了管理线程而切换到内核模式,进而节省了两次状态转换(从用户模式到内核模式,以及从内核模式返回用户模式)的开销。
  2. 调度因应用程序的不同而不同。一个应用程序可能更适合简单的轮转调度算法,而另一个应用程序可能更适合基于优先级的调度算法。为了不要乱底层的操作系统调度程序,可以做到为操作系统量身定做调度算法。
  3. ULT可在任何操作系统中运行,不需要对底层内核进行修改以支持ULT。线程库是供所有应用程序共享的一组应用级函数。

7、列出用户级线程相对于内核级线程的两个缺点。

  1. 在典型的操作系统中,许多系统调用都会引起阻塞。因此,在ULT执行一个系统调用时,不仅会阻塞这个线程,也会阻塞进程中的所有线程。
  2. 在纯ULT策略中,多线程应用程序不能利用多处理技术。内核一次只把一个进程分配给一个处理器,因此一个进程中只有一个线程可以执行,这相当于在一个进程内实现了应用级多道程序设计。虽然多道程序设计可明显提高应用程序的速度,但同时执行部分代码更会使某些应用程序受益。

8、定义“套管”技术

套管(jacketing)的目标是把一个产生阻塞的系统转化为一个非阻塞的系统调用。例如,替代直接调用一个系统I/O例程,让线程调用一个应用级的I/O套管例程,这个套管例程中的代码用于检查并确定I/O设备是否忙。如果忙,该线程进入阻塞态并把控制权传送给另一个线程。这个线程重新获得控制权后,套管例程会再次检查I/O设备。


猜你喜欢

转载自blog.csdn.net/qq_36414798/article/details/80594706
今日推荐