要了解二者的区别与联系,我们首先得对进程和线程一个宏观上的了解
进程: 并发执行程序在执行过程中资源分配和管理的基本单位,是一个动态的概念,也是竞争计算机系统资源的基本单位,每一个进程都有自己的地址空间(进程空间或虚空间)。进程空间的大小只与计算机的位数有关,一个16位长的处理机的进程空间大小为216,而32位处理机的进程空间大小为232,进程至少有5种基本状态:初始-执行-等待-就绪-终止状态;
线程: 在网络或多用户情况下,一个服务器需要接受大量且数目不定的用户并发请求,每一个请求都创建一个进程的话,所占空间位数就为相当大,就会造成系统资源开销大和用户响应效率低。显然不能这样。因此,操作系统中线程的概念便被引进来了。线程是进程的一部分,一个没有线程的进程可以看作是单线程,同时呢,线程有时又被称为轻量级进程,也是cpu调度的一个基本单位
基于以上理解,我们来梳理下二者的大致区别
进程的执行过程是线状的,尽管中间存在着终端和执行,但其所占资源只为该执行过程服务。不同的进程之间切换,各自的资源都会被保护起来。这是进程在宏观上的执行过程。而进程又可有单线程和多线程之分,进程有一个进程控制块PCB,相关程序段和该程序段对其进行操作的数据结构集这三部分。单线程的执行过程在宏观上是现行的,微观上也只有单一的执行过程:而多线程在宏观上的执行过程同样为线性的,但微观上却可以有多个执行操作(线程)如不同代码段和相关的数据结构集。线程的改变只代表了CPU执行过程的改变,而没有发生进程上所拥有资源的变化。除了CPU之外,计算机内的软硬件资源的分配与线程无关,线程只能共享他们所在进程的资源。与进程控制表和PCB相似,每个线程也有自己的线程控制表TCB。而这个TCB 中所保存的线程状态信息则要比 PCB 表少得多,这些信息主要是相关指针用堆栈(系统栈和用户栈),寄存器中的状态数据。进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源
线程可以有效地提高系统的执行效率,但并不是在所有计算机系统中都是适用的,如某些很少做进程调度和切换的实时系统。使用线程的好处是有多个任务需要处理机处理时,减少处理机的切换时间;
而且,线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多。最适用使用线程的系统是多处理机系统和网络系统或分布式系统。
1. 线程的执行特性。
线程只有 3 个基本状态:就绪,执行,阻塞。
首先,
线程存在 5 种基本操作来切换线程的状态:派生,阻塞,激活,调度,结束。
2. 进程通信。
单机系统中进程通信有 4 种形式:主从式,会话式,消息或邮箱机制,共享存储区方式。
主从式典型例子:终端控制进程和终端进程。