1、进程和线程的关系

线程与进程的区别能够概括为如下4点:多线程
- 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
- 通讯:进程间通讯IPC,线程间能够直接读写进程数据段(如全局变量)来进行通讯——须要进程同步和互斥手段的辅助,以保证数据的一致性。
- 调度和切换:线程上下文切换比进程上下文切换要快得多,开启线程的速度要比开启进程的速度要快
- 在多线程操做系统中,进程不是一个可执行的实体。
2、线程的特色
在多线程的操做系统中,一般是在一个进程中包括多个线程,每一个线程都是做为利用CPU的基本单位,是花费最小开销的实体。线程具备如下属性。并发
- 轻型实体
- 线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。
- 线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述,TCB用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。TCB包括如下信息:
- 线程状态。
- 当线程不运行时,被保存的现场资源。
- 一组执行堆栈。
- 存放每一个线程的局部变量主存区。
- 访问同一个进程中的主存和其它资源。
- 独立调度和分派的基本单位
在多线程OS中,线程是能独立运行的基本单位,于是也是独立调度和分派的基本单位。因为线程很“轻”,故线程的切换很是迅速且开销小(在同一进程中的)。操作系统
- 共享进程资源
线程在同一进程中的各个线程,均可以共享该进程所拥有的资源,这首先表如今:全部线程都具备相同的进程id,这意味着,线程能够访问该进程的每个内存资源;此外,还能够访问进程所拥有的已打开文件、定时器、信号量机构等。因为同一个进程内的线程共享内存和文件,因此线程之间互相通讯没必要调用内核。线程
- 可并发执行
在一个进程中的多个线程之间,能够并发执行,甚至容许在一个进程中全部线程都能并发执行;一样,不一样进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工做的能力。进程