学习日期:2024.6.29
内容摘要:进程的基本概念和特征、状态和转换
进程的概念
程序与进程
程序:是静态的,是存放在磁盘里的可执行文件,就是一系列的指令集合
进程(Process):是动态的,是程序的一次执行过程。
比如说,电脑里的QQ应用,是一个程序,但我们可以同时打开三次QQ,此时打开任务管理器,会看到三个腾讯QQ“应用”,这就是进程,同一个程序多次执行会对应多个进程。
进程控制块PCB
操作系统是进程的管理者,那么要如何区分这些进程?
操作系统会给每个进程分配唯一的PID(Process Identifier,进程控制符),相当于各个进程的身份证,程序一运行,系统就会自动分配给进程。进程终止后,PID会被系统回收,也可能被继续分配给新运行的程序。
操作系统要记录PID、进程所属的UID(User Identifier,用户标识符),还要记录给进程分配了哪些资源(如分配了多少内存、正在使用哪些I/O设备、网络流量使用情况等),以及进程当前的状态(就绪态、运行态、阻塞态等等)
这些信息,以及其它所有操作系统对进程进行管理工作所需的信息,都被保存在一个数据结构PCB(Process Control Block)当中,即进程控制块。
PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时再回收。
进程的组成
进程实体由PCB,程序段,数据段组成。
为什么不说“进程”?——因为进程是一个动态的概念,进程实体可以理解为进程在运行过程中某一瞬间的照片,反映进程在该瞬间的状态,在进程运行的过程中,进程实体是在不断变化的。
PCB是给操作系统用的,程序段和数据段是给进程自己用的。
进程是进程实体的运行过程, 是系统进行资源分配和调度的一个独立单位。
一个进程被“调度”,就是说操作系统决定让这个进程上CPU运行。
进程的特征
动态性:进程是程序的一次执行过程, 是动态的产生、编号、消亡的。(进程最基本的特征)
并发性:内存中有多个进程实体,各进程可以并发执行。
独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位。
异步性:各进程按各自独立的、不可预知的速度推进,可能导致运行结果的不确定性。
结构性:每个进程都会配置一个PCB。从结构上看,进程由程序段、数据段、PCB组成。
进程的状态和状态转换(重点)
创建态:进程正在被创建时的状态,此时操作系统会为进程分配资源,初始化PCB。
就绪态:进程创建完成后的状态,处于此状态的进程已经具备运行条件,但由于没有空闲CPU,暂时不能运行。
运行态:进程正在运行时的状态,CPU会执行该进程对应的程序。当CPU空闲时,操作系统就会选择一个就绪进程运行。
阻塞态:进程运行的过程中,可能会等待某个事件的发生(如等待某种系统资源的分配,或者其它进程的响应),此时操作系统会让这个进程下CPU,进程进入阻塞态。当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行。
终止态:进程可以执行exit系统调用,请求操作系统终止该进程,此时进程会进入终止态。操作系统会让该进程下CPU,并回收内存空间、PCB等资源。
进程状态的转换——“丁字裤”
运行态到阻塞态是进程主动的,但是从阻塞态到就绪态不是,因为进程能决定它等待的资源什么时候才能获得。
就绪、运行、阻塞中间三个状态是基本状态,进程的整个生命周期中,大部分时间都处于这三种基本状态。单CPU状态下,同一时刻只会有一个进程处于运行态,多核CPU的情况下可能有多个进程处于运行态。在PCB中,会有一个变量state来标识当前状态。
进程的组织
链式方式
操作系统管理一系列的队列,每个队列都会管理相应状态的PCB,就绪队列的指针指向就绪队列的PCB(通常会把优先级高的放在队头),阻塞队列的指针指向处于阻塞状态的PCB,依此类推。
有的操作系统还会根据阻塞原因的不同,划分出多个阻塞队列。
索引方式
操作系统根据进程状态的不同,建立几张索引表,持有指向各个表的指针。
内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》