1.线程和进程数量的关系
1:1 执行的线程是唯一的进程 有自己的地址空间和资源
M:1 一个进程定义了一个地址空间和动态资源所有权 可以在进程中创建执行多个线程
1:M 一个线程可从进程转到另一个进程
2.实例分析 主程序可产生I/O子程序
主程序可能产生一个新进程去处理I/O 然后执行
当主程序之后的步骤在等待I/O程序的结果时2 主程序就要等待I/O程序结束
实现方法(1)整个程序在一个进程中运行 但是可能会占用较大内存空间 主程序和子程序作为同一进程的两个线程
(2)主程序和子程序作为不同的进程 但是带来创建辅助程序的开销
(3)主程序和子程序作为不同地址空间的线程 线程可以在两个地址空间之间移动
3.多核系统的软件性能
加速比=1/(1 -f) + f/N
f: 并行的代码
1-f : 串行的代码
4.进程控制块的典型元素 表3.5中哪些属于进程控制块 哪些属于线程控制块
(1) 进程控制块:标识符 处理器状态信息 数据结构 进程间通信 特权 存储管理 资源所有权和使用情况
(2) 线程控制块:标识符 调度和状态信息 数据结构 进程间通信 特权
5.线程切换比进程切换开销低的原因 : 包含的信息少
6.进程与线程相比体现出的两个独立且无关的特点是: 资源所有权 调度/执行
7.给出单处理器多线程的例子
前后台工作 异步处理 加速执行 模块化程序结构
8.线程会共享哪些资源: 文件 地址空间 执行特权
9.ULT 优于KLT :
(1) 不需要切换内核模式来实现切换 节省时间
(2)调度算法可以根据应用程序定制
(3)不需要修改底层内核 可以在任何系统上运行
缺点:
(1) 一个系统调用产生的阻塞会影响所有线程
(2)不能使用多道程序设计结构
10.jacketing 套管技术
通过调用一个应用级的I/O例程来检查I/O状态 从而将一个产生阻塞的系统调用转变为一个不产生阻塞的系统调用