线程的引入
提高系统的并行性 硬件方面:流水线计算机、数据流计算机、并行处理器、流水存储器、多体交叉及多端口存储器等 操作系统方面:中断、通道、多道程序设计技术、并发程序技术 仅使用进程来解决并行性问题的缺点 经常性进程开关,系统开销很大(切换时资源浪费) 与进程运行有关的表格要改写 进程的地址空间要进行转换为新被调度的进程地址空间 两次模式开关的开销(用户模式-内核模式-用户模式)
进程再操作系统中担任的角色
进程是拥有自己资源的单元体 虚拟地址空间 控制其他为进程运行所需要的I/0资源 进程是被调度分派再处理器上运行的基本单位 第一个要点是关于拥有资源的主权(由进程来完成) 第二个要点是关于应用程序的执行(由线程来完成)
线程的引入
传统的进程概念由两个严重的局限性 许多应用想并发执行彼此间独立的任务,但又必须要共享一个公告的地址空间和其他资源,将这类应用中独立的任务串行化,效率很低 传统的进程不能很好的利用多处理器系统 (传统的单线程进程即使分配了多个处理器单元,也只能穿行的执行) (多线程可以并行的执行)
线程的模型


多线程机制的优点
在进程内创建多线程,可以提高系统的并行处理能力。 线程机制可显著提高程序执行的有效性,也可方便用户编程; 不但适用于多机系统(尤其是对称式多机系统),而且对大多数单CPU系统也同样有好处。
线程(thread)的概念
进程内的一个执行单元 进程内的一个可调度实体 线程是程序(或进程)中相对独立的一个控制流序列 线程是执行的上下文,即执行的现场数据和其他调度所需要的信息 线程是进程内一个相对的、可调度的执行单元 有些系统把线程称为轻质进程(lightweight process)
线程的性质
线程是进程内一个相对独立的可执行单元; 线程是操作系统中的基本调度单元,因此线程中应包含有调度所需要的必要信息; 每个进程在创建时,至少需要同时为该进程创建一个线程,即进程中至少要有一个或一个以上线程,否则该进程无法被调度执行; 需要时,线程可以创建其他线程; 进程是被分给并拥有资源的基本单元,同一进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使用它们; 由于共享资源(数据和文件),所以线程间需要通信和同步机制; 线程有生命期,有诞生和死亡,在生命期中有状态的变化。
多线程机制
一个进程可以有多个线程,这些线程共享该进程资源; 这些线程驻留在相同的地址空间,共享数据和文件; 如果其中的一个线程修改了一个数据项,其他线程可以了解和使用此结果数据; 一个线程打开并读一个文件时,同一进程中的其他线程也可同时读此文件。
多线程机制的优点
首先用于创建和撤消线程的开销比创建和撤消进程的系统开销(CPU时间)要少得多(比如不需要建立它的地址空间和所需资源等); CPU在线程之间开关时的开销也远比在进程之间开关的开销小; 线程机制也增加了通讯的有效性(无须内核参与); 方便和简化了用户的程序结构工作。