1.表3.5列出了在一个没有线程的操作系统中进程控制块的基本元素。对于多线程系统,这些元素中哪些可能属于线程控制块,哪些可能属于进程控制块?
对于不同的系统来说通常是不同的,但一般来说,进程是资源的所有者,而每个线程有它自己的执行状态。关于表3.5中的每一项的一些结论如下:
- 进程标识:进程必须被标识,而进程中的每一个线程也必须有自己的ID。
- 进程处理器状态:这些信息通常只与进程有关。
- 进程控制信息:调度和状态信息主要处于线程级;数据结构在两级都可以出现;进程间通信和线程间通信都可以得到支持;特权在两级都可以存在;存储管理通常在进程级;资源信息通常也在进程级。
2.请列出线程间的模式切换比进程间的模式切换开销更低的原因。
包含的状态信息更少。
3.进程概念中体现出的两个独立且无关的概念是什么?
资源所有权和调度/执行
4.给出在单用户多处理系统中使用线程的四个例子?
- 前台和后台操作
- 异步处理
- 加速执行
- 模块化程序结构
5.哪些资源通常被一个进程中所有的线程共享?
地址空间、文件资源、执行特权等。
6.列出用户级线程优于内核级线程的三个优点。
- 由于所有线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核模式的特权,因此进程不需要为了线程管理而切换到内核模式,这节省了在两种模式之间进行切换的开销。
- 调用可以是应用程序专用的。一个应用程序可能倾向于简单的轮询调度算法,而另一个应用程序可能倾向于基于优先级的调度算法。调度算法可以去适应应用程序,而不会扰乱底层的操作系统。
- 用户级线程可以在任何操作系统中运行,不需要对底层内核进行修改以支持用户级线程。线程库是一组供所有应用程序共享的应用级软件包。
7.列出用户级线程相对内核级线程的两个缺点。
- 在典型的操作系统中,许多系统调用会引起阻塞。因此,当用户级线程执行一个系统调用时,不仅这个线程会被阻塞,进程中的所有线程都会被阻塞。
- 在纯粹的用户及进程策略中,一个多线程应用程序不能利用多处理器技术。内核一次只把一个进程分配给一个处理器,因此一次进程中只能有一个线程可以执行。
8.定义jacketing
Jacketing通过调用一个应用级的I/O例程来检查I/O设备的状态,从而将一个产生阻塞的系统调用转化为一个不产生阻塞的系统调用。
9.简单定义图4.8中列出的各种结构
- SIMD:单指令多数据流(Single Instruction Multiple Data),一种并行计算模型,其中多个处理单元同步执行同一条指令,但在不同的数据上操作,适用于向量处理和图像处理等场景;
- MIMD:多指令多数据流(Multiple Instruction Multiple Data),多个处理器独立运行不同的指令序列,并处理不同的数据,适用于通用并行计算。
- 主从结构:一种MIMD实现方式,操作系统内核固定运行在主处理器上,其他处理器作为从属执行用户程序或部分内核任务,调度权集中。
- SMP(对称多处理):所有处理器平等,内核可在任一处理器上执行,每个处理器独立调度进程或线程,资源共享、调度对称。
- 集群:由多台独立计算机组成,每台拥有自己的处理器和内存,通过网络协作完成任务,通常用于高可用性和高性能计算场景。
10.列出SMP操作系统的主要设计问题。
同时的并发进程或线程,调度,同步,存储器管理,可靠性和容错。
11.给出在典型的单体结构操作系统中可以找到且可能是微内核操作系统外部子系统中的服务和功能。
设备驱动程序,文件系统,虚存管理程序,窗口系统和安全服务。
12.列出并简单解释微内核设计相对于整体式设计的七个优点。
13解释微内核操作系统可能存在的性能缺点。