#线程与进程的比较
1、调度: 在传统的操作系统中,进程作为资源的基本单位和独立调度、分派的基本单位;而当引入了进程概念的操作系统时代,将线程作为调度和分派的基本单位,而进程则作为资源拥有的基本单位,这样使线程基本不拥有资源,他可以“轻装上阵”,从而可以显著地提高系统的并发程度。在同一进程中,线程的切换不会引起进程的切换;但是,如果从一个进程中的线程切换到另一个进程中线程的时候,将会引起进程的切换。
2、并发性: 在引入线程的操作系统中,不会影响进程的并发执行,并且在一个进程中可以创建多个线程,线程并发执行,这样使得操作系统的并发性能显著提高。
3、资源的拥有: 无论是否引入线程,进程都是系统中拥有资源的一个基本单位。一般而言,线程自己不拥有系统资源(必不可少的资源除外),但是他可以访问隶属进程的资源(一个进程的代码段、数据段以及所拥有的系统资源)。
4、系统开销: 进程的创建或者撤销时,系统要为之创建和回收进程控制块,分配或回收资源,所以其开销远大于线程。类似的,在进程的切换时,设计到当前进程CPU环境的保存以及新被调度运行进程的CPU环境的设置,而线程的切换则仅仅需要保存和设置少量寄存器内容,不涉及存储器管理方面的操作,所以就切换来说,进程也远高于线程。此外,一个进程中的多个线程具有相同的地址空间,在同步和通信的实现方法线程也比进程容易的多。
#线程的状态
1、状态参数:
(1)寄存器状态:程序计数器PC 和 堆栈指针中的内容;
(2)堆栈:在堆栈中通常保存有局部变量和返回地址;
(3)线程运行状态:用于描述线程处于何种运行状态;
(4)优先级:描述线程执行的优先程度;
(5)线程专有的存储器:用于保存线程自己的局部变量拷贝;
(6)信号屏蔽:对某些信号加以屏蔽;
2、线程运行状态:
(1)执行状态:表示线程正获得处理机而运行;
(2)就绪状态:指线程已经具备了各种执行条件;
(3)阻塞状态:执行中因为某件事而受阻;

#线程的创建与终止
1、在多线程OS环境下,应用程序在启动时,通常仅有一个线程(初始化线程)在执行,它可根据需求再去创建若干个线程。在写创建函数时,要提供相应的参数,例如:指向线程主程序的入口指针、堆栈大小、调度的优先级,返回一个线程表示符。
2、终止线程方式有两种:一种是“寿终正寝”;一种为“意外事故”;线程被终止后并不立即释放它所占用的资源,只有当该进程中的其他线程触发了分离函数被终止的线程才与资源分离。
3、虽已被终止但尚未释放资源的线程,仍可以被需要它的线程所调用,以使被终止线程重新恢复运行。为此调用者线程必须调用一条被称为“等待线程终止”的连接命令,来与该线程进行连接。
#多线程OS中的进程