2024年5月10日发(作者:)
进程与线程
上篇
进程在操作系统中是最基本、最重要的概念。
在概念上看,进程主要有两点:第一,进程是一个实体。每一个进程都有它自己的地
址空间,一般情况下,包括文本区域、数据区域和堆栈。文本区域存储处理器执行的代码;
数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用
的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,
只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。 进程是在多
道程序系统出现后,为了刻画系统内部的动态状况、描述运行程序的活动规律而引起的新
概念,所有多道程序设计操作系统都建立在进程的基础之上。在操作系统中引入进程可以
刻画系统的动态性、发挥系统的并发性,而且可以解决共享性,正确的描述程序执行状态。
在特征上看,进程的特征主要有结构性、共享性、动态性、并发性、独立性与制约性。
进程包含数据集合和运行于其上的程序,它至少由程序块、数据块和进程控制块等要素组
成,因此具有结构性。动态性是指:进程的实质是程序在多道程序系统中的一次执行过程,
进程是动态产生,动态消亡的。而并发性是指:任何进程都可以同其他进程一起并发执行。
进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位,因此具有
独立性。由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可
预知的速度向前推进,所以进程是具有制约性的。
按照进程在执行过程中的不同情况至少要定义三种进程状态:首先是运行态,运行态
是指进程占用处理器的状态。其次是就绪态,进程具备运行条件,等待系统分配处理器以
便其运行状态,最后是等待态又称阻塞态或睡眠态,是指进程不具备运行条件,正在等待
某个事件完成的状态。
在我们的计算机的操作系统中存在很多进程,而这些进程可以在任务管理器中查看。
如下图。在我们的计算机中的浏览器、QQ等应用程序的使用都可以称作一个进程,而且
配置鼠标的应用程序也属于进程。
由于进程的状态在不断发生变化,某时刻进程的内容及其状态集合成为进程映像。包
括进程控制块、进程程序块、进程核心块和进程数据块。而在操作系统中,进程物理实体
和支持进程运行的环境合称进程上下文。进程上下文由用户级上下文、寄存器上下文和系
统级上下文三部分。并发系统中往往同时存在许多进程,一般来说,把处于同一状态的所
有进程的PCB链接在一起的数据结构称为进程队列,通用的队列组织方式是:线性方式、
连接方式和索引方式。
中篇
线程,是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度和分派的
基本单位。
线程的组成部分有:①线程的唯一标识符及线程状态信息②未运行时所保存的线程上
下文;可以把线程看成进程中一个独立的程序计数器③核心栈,在核心态工作时保存参数,
在函数调用时的返回地址④用于存放线程局部变量和用户栈的私有存储区。同进程相似,
线程同样具有生命周期,因此也存在运行、就绪和等待状态。
多线程概念的引入使得单个进程可以利用CPU和设备之间的并行性,及多处理器之间
的并行性。多线程程序的优点是提高系统性能,具体表现在:快速线程切换、节省主存空
间、减少管理开销、通信易于实现和并发程度提高。线程具有多种组织方式:第一种是调
度员-工作者模式,进程中的一个线程担任调度员,接收和处理工作请求,其他线程是工作
者线程,由调度员线程分配任务并唤醒工作者线程;第二种是组模式,第三种是流水线模
式。多线程技术在现代计算机软件中广泛应用,多线程技术的主要应用包括:前台和后台
工作、客户-服务器应用模式、任务异步处理、用户界面设计等。
多线程的实现分为三类:用户级线程、内核级线程以及某些系统提供混合方式,同时
支持ULT和KLT两种线程。内核级线程是指线程的管理工作由内核完成。内核级线程的优
点是:①在多处理器上内核能够同时调度同一进程中的多个线程并行执行。②若进程中的
一个线程被阻塞,内核级线程只有很小的数据结构和堆栈,其切换速度比较快,内核自身
也可以用多线程技术实现,从而提高系统的执行效率。内核级同样存在缺点,比如系统开
销大。而在三种线程中混合式线程即支持用户级线程,又支持内核级线程。
线程具有以下属性。①轻型实体线程中的实体基本上不拥有系统资源,只是有一点必
不可少的、能保证独立运行的资源,比如,在每个线程中都应具有一个用于控制线程运行
的线程控制块TCB,用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参
数和返回地址等的一组寄存器和堆栈。②独立调度和分派的基本单位。在多线程OS中,
线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,
故线程的切换非常迅速且开销小(在同一进程中的)。③可并发执行。在一个进程中的多
个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同
进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。4)共
享进程资源。在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:
所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空
间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。
由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。
下篇
线程与进程的比较:
进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB
中。以表示该进程拥有这些资源或正在使用它们。另外,进程也是抢占处理机的调度单位,
它拥有一个完整的虚拟地址空间。当进程发生调度时,不同的进程拥有不同的虚拟地址空
间,而同一进程内的不同线程共享同一地址空间。
与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一
起共享进程的资源。线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。
寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线
程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独
立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出
的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系
统资源的利用率和吞吐量。因而近年来推出的通用操作系统都引入了线程,以便进一步提
高系统的并发性,并把它视为现代操作系统的一个重要指标。
线程与进程的区别可以归纳为以下4点:
①地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。
某进程内的线程在其它进程不可见。②通信:进程间通信IPC,线程间可以直接读写进程
数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一
致性。③调度和切换:线程上下文切换比进程上下文切换要快得多。④在多线程OS中,
进程不是一个可执行的实体。
在操作系统中熟悉掌握进程与线程的概念是必须的,这将对我们的操作系统学习有很
大帮助,因此对线程与进程概念的掌握会为我们学习打下坚实的基础。


发布评论