进程(Process)是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。
进程一般具有以下特性:
1.结构性:通常来说,程序并不能并发执行,为了使程序能独立运行,需程序控制块-PCB的参与。程序段、相关数据段、程序控制块则组成了进程实体。创建进程即创建进程实体中的程序控制块,而撤销进程也是撤销进程实体的程序控制块。
2.动态性:进程的实质是进程实体的一次执行过程。因此,动态性是进程的最基本特征。动态性表现在“它由创建而产生,由调度而执行,由撤销而消亡”。进程是具有一定生命周期的,而程序仅是一组有序指令的集合,是静态的。
3.并发性:多个进程实体同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征。
4.独立性:进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB(Process Control Block)的程序都不能作为一个独立的单位参与运行。
进程生命周期中存在:创建、就绪、运行、阻塞、终止状态
1.创建:进程由创建而产生。首先由进程申请一个空白的进程控制块(PCB),并向PCB中填写用于控制和管理进程的信息;然后为该进程分配运行时所必须的资源;最后,把该进程转入就绪状态并插入到就绪队列中。
2.就绪:指进程已经准备好运行的状态,即进程已分配到除CPU以外所有的必要资源后,只要再获得CPU,便可立即执行。如果系统中有许多处于就绪状态的进程,通常将它们按照一定的策略排成一个队列,该队列称为就绪队列。有执行资格,没有执行权的进程。
3.运行:进程已经获取CPU,其进程处于正在执行的状态。对任何一个时刻而言,在单处理机的系统中,只有一个进程处于执行状态;而在多处理机系统中,有多个进程处于执行状态。既有执行资格,又有执行权的进程。
4.阻塞:正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行的状态,即进程执行受到阻塞。此时引起进程调度,操作系统把处理机分配给另外一个就绪的进程,而让受阻的进程处于暂停的状态,一般将这个暂停状态称为阻塞状态。
5.终止:首先是等待操作系统进行善后处理,最后将其PCB清零,并将PCB空间返还给系统。当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。进入终止态的进程以后不能在再执行,但是操作系统中任然保留了一个记录,其中保存状态码和一些计时统计数据,供其他进程进行收集。一旦其它进程完成了对其信息的提取之后,操作系统将删除其进程,即将其PCB清零,并将该空白的PCB返回给系统。
进程状态关系转换—面试必备--进程相关知识储备就绪——执行:对就绪状态的进程,当进程调度程序按一种选定的策略从中选中一个就绪进程,为之分配了处理机后,该进程便由就绪状态变为执行状态;
执行——阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如进程提出输入/输出请求而变成等待外部设备传输信息的状态,进程申请资源(主存空间或外部设备)得不到满足时变成等待资源状态,进程运行中出现了故障(程序出错或主存储器读写错等)变成等待干预状态等等;
阻塞——就绪:处于阻塞状态的进程,在其等待的事件已经发生,如输入/输出完成,资源得到满足或错误处理完毕时,处于等待状态的进程并不马上转入执行状态,而是先转入就绪状态,然后再由系统进程调度程序在适当的时候将该进程转为执行状态;
执行——就绪:正在执行的进程,因时间片用完而被暂停执行,或在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行而被迫让出处理机时,该进程便由执行状态转变为就绪状态。
进程控制块
上文中提到进程控制块(PCB)、程序段、相关数据段组成了进程实体。在操作系统中,可以有数千个PCB,为了加强对于PCB的管理,操作系统采用链接方式、索引方式两种方式对PCB进行组织。
链接方式:这是把具有同一状态的PCB,用其中的链接字链接成一个队列。这样,可以形成就绪队列、若干个阻塞队列和空白队列等。对其中的就绪队列常按进程优先级的高低排列,把优先级高的进程的PCB排在队列前面。此外,也可根据阻塞原因的不同而把处于阻塞状态的进程的PCB 排成等待I/O 操作完成的队列和等待分配内存的队列等。如图所示。
PCB链接队列示意图—面试必备--进程相关知识储备索引方式:系统根据所有进程的状态建立几张索引表。例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB址。
索引方式组织PCB—面试必备--进程相关知识储备
网友评论