以下内容摘自 《计算机操作系统教程》 张尧学 清华版 第三版
什么是进程
- 进程是程序的执行过程,在操作系统中为了进行进程的管理与调度,抽象出了进程的概念。
- 操作系统将进程作为资源分配和管理的基本单位。
进程的组成
在操作系统中为了感知到进程,从而进行进程的调度与管理,提供了进程的静态描述。静态描述主要包含 进程控制块PCB、要执行的程序段与程序段执行时进行操作的数据集
其中进程控制块包含进程的描述信息、控制信息以及资源信息,有些系统中还有进程调度等待所使用的现场保护区。
- 描述信息
- 包含进程名或进程标识号(标识进程唯一性)、用户名或用户标识号(标识进程所属用户,有利于资源共享与保护)、家族关系(描述进程的继承关系)
- 控制信息
- 包含进程状态、优先级、程序开始地址、各种计时信息、通信信息
- 资源管理信息
- 包含有关存储器的信息、使用输入输出设备的信息、有关文件系统的信息等
- CPU现场保护结构
- 用于存储退出执行时的进程
由于PCB中包含有较多的信息,因此一个PCB表汪汪要占据较大的存储空间。在有的系统中,为了减少PCB对内存的占用量,只许PCB中最常用的部分(如CPU现场保护、进程描述、控制线信息)常驻内存,其他部分存放于外存中,将要执行时再与其他数据一起装入内存。
进程的上下文切换
进程的切换过程一般包含3个部分,并涉及到3个进程
1. 保存被切换进程的正文部分
2. 操作系统进程中有关调度和资源分配程序执行,并选取新的进程
3. 将被选中进程的被保存的正文部分从有关存储区中取出,并送至有关寄存器和堆栈中,激活被选中进程执行。
进程上下文切换涉及到系统调度和分配程序与寄存器和堆栈等中的数据流入流出PCB的存储区,这些都较消耗CPU时间。
为了提高上下文切换的效率,在有的计算机中采用多组寄存器技术,即进程上下文切换时,不把被切换进程上下文的正文保留到相关存储区,而直接切换相应的寄存器。
另外,为了进一步提高执行效率,提出了线程的概念。
线程的概念
线程有时又被成为轻量级进程。与进程相同,线程也是CPU调度的一个基本单位。
与进程不同的是,进程是系统中所有资源分配时的基本单位,而线程的改变只代表了CPU执行过程的改变,而没有发生进程所拥有资源的变化,或者说,除了CPU之外,计算机内的软硬件资源的分配与线程无关。线程只能共享它所属进程的资源。也就是说,线程是一个只与内存和寄存器相关的概念,它的内容不会因切换而进入外存。
与进程控制表PCB相似,每个线程也有自己的线程控制表TCB,而TCB中所保存的线程状态信息比PCB表少的多,这些信息主要是相关指针用堆栈和寄存器中的状态数据。
使用线程最大的好处是在有多个任务需要处理器处理时,减少处理器的切换时间;而且线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多。