进程的两个属性:进程是一个资源分配的基本单位。进程是一个可独立调度和分派的基本单位。
从进程方面解释引入线程:进程作为一个资源拥有者,在创建、撤消、切换中,系统必须为之付出较大时空开销。
所以系统中进程的数量不宜过多,进程切换的频率不宜过高,但这也就限制了并发程度的进一步提高。
将进程的上述两个属性分开,线程作为调度的基本单位,不同时作为独立分配资源的单位;
线程会被频繁调度和切换。进程作为拥有资源的单位,不进行频繁切换。线程因而产生。
特征:结构性:TCB:标识、现场信息(寄存器、PC、栈指针)、调度信息(状态、优先级)
数据块:过程参数、数据、系统与用户堆栈
并发性:同一进程中的各线程在同一主存空间,可以共享进程中的所有资源(数据、设备、文件),线程间通信方便。
共享性:同一进程的各线程
动态性:有生命期,有状态变化,可创建子线程
性质:在引入线程的OS中,线程是进程中的一个实体,是被系统独立调度和分派的基本单位。
线程自己基本不拥有系统资源,只拥有少量必不可少的资源:程序计数器PC、一组寄存器、栈。
线程可与同属一个进程的其它线程共享进程所拥有的全部资源。
一个线程可以创建和撤消另一个线程;同一进程中的多个线程之间可以并发执行。
系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程,否则该进程无法被调度执行。
单线程进程的内存布局和运行:
管理和执行相分离的进程模型:
引入线程的好处:创建一个新线程花费时间少
线程的终止时间比进程短;
同进程内的线程切换时间比进程短;
因为同一进程内的线程共享内存和文件,因此它们之间相互通信无须调用内核
适合多处理机系统
线程的属性:轻型实体:基本不拥有资源
独立调度的基本单位
可以并发执行
共享进程资源
线程的状态:线程状态:运行、就绪和阻塞三种状态。线程的状态转换类似于进程。
挂起状态对线程是没有意义的,如果进程挂起后被对换出主存,则它的所有线程因共享了进程的地址空间,也必须全部对换出去。
线程的两种阻塞方式:阻塞进程方式:对某些线程实现机制,当线程被阻塞时,所在进程也转换为阻塞态,即使这个进程存在另一个处于就绪态的线程。
阻塞线程方式:如果存在另外一个处于就绪态的线程,则调度该线程进入运行状态,否则进程才转换为阻塞态。
线程的管理:线程包:多线程技术利用线程包(库)提供线程原语集来支持多线程运行
线程包(库)可分成两种:用户空间中运行的线程包(库)
内核中运行的线程包(库)
线程包(库)提供一组API,支持应用程序创建、调度、撤销和管理线程的运行。如:创建、撤销、改变优先级等。
有的操作系统直接支持多线程,而有的操作系统不支持多线程。
2 线程与进程的比较
概述:线程具有进程的许多特征,在引入线程的OS中,每一进程都拥有至少一个线程。