文档介绍:Operating System
Lecture Four
Multi-Threads
School of Software
Nanjing University
1
本主题教学目标
掌握多线程环境下进程和线程的概念
掌握线程的实现模型
了解并行处理环境,掌握SMP
了解微内核结构
了解Windows的进程和线程管理
掌握Solaris的进程和线程管理模型
2
Multi-Threads
Processes and Threads
Symmetric Multiprocessing (SMP)
Microkernels
Solaris Thread and SMP Management
Windows Threads and SMP Management
3
单线程结构进程给并发程序设计效率带来问题
•进程切换开销大,频繁的进程调度将耗费大量处理器时间,要为每个进程分配存储空间限制了操作系统中进程的总数。
•进程通信代价大,每次通信均要涉及通信进程之间或通信进程与操作系统之间的信息传递。
•进程之间的并发性粒度较粗,并发度不高,过多的进程切换和通信延迟使得细粒度的并发得不偿失。
•不适合并行计算和分布式计算的要求,进程之间大量频繁的通信和切换,会大大降低并行度。
•不适合客户/服务器计算的要求,对于C/S结构来说,那些需要频繁输入输出并同时大量计算的服务器进程(如数据库服务器、事务监督程序)很难体现效率。
4
Multi-Threads
动机
网页浏览器, 有一个线程显示图像或文本, 另一个线程从网络接收数据。
字处理器可能有一个线程显示图形, 另一个线程用以读入用户的键盘输入, 还有第三个线程在后台进行拼写和语法检查。
一个文件服务器
一个网页服务器
自适应软件系统
……
5
进程与线程
操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率,
操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。
6
进程与线程
资源所有权:
一个进程包括一个存放程序映像的虚拟地址空间;进程映像是程序、数据、栈和进程控制块中定义的属性的集合。
一个进程时常拥有对资源的控制或所有权,这些资源包括主存、I/O通道、I/O设备和文件等。操作系统执行保护功能,以防止进程之间发生不必要的与资源相关的冲突。
调度/执行:
一个进程沿着通过一个或多个程序的一条执行路径(轨迹)执行,其执行过程可能与其他进程的执行过程交替进行。
因此,一个具有执行状态(运行态、就绪态等)和分派了优先级的进程是一个被操作系统调度并分派的实体。
7
进程与线程
在传统的OS中, 拥有资源的基本单位和独立调度/执行的基本单位都是进程。
而在引入线程的OS中,
把线程作为调度/执行的基本单位,
把进程作为资源拥有的基本单位,
使传统的进程的两个属性分开,线程便能够轻装运行(轻量级进程, LightWeight Process),从而可显著地提高系统的并发程度。
线程运行在进程的上下文中,并使用进程的资源和环境。在同一进程中,线程的切换不会引起进程的切换,在由一个进程中的线程切换到另一个进程的线程时,将会引起进程切换。
8
线程的主要特性
并发性:同一进程的多个线程可在一个/多个处理器上并发或并行地执行,而进程之间的并发执行演变为不同进程的线程之间的并发执行。
共享性:同一个进程中的所有线程共享但不拥有进程的状态和资源,且驻留在进程的同一个主存地址空间中,可以访问相同的数据。所以,需要有线程之间的通信和同步机制,但通信和同步的实现十分方便。
9
线程的主要特性
动态性:线程是程序在相应数据集上的一次执行过程,由创建而产生,至撤销而消亡,有其生命周期,经历各种状态的变化。每个进程被创建时,至少同时为其创建一个线程,需要时线程可以再创建其他线程。
结构性:线程是操作系统中的基本调度和分派单位,因此,它具有唯一的标识符和线程控制块,其中应包含调度所需的一切信息。
10