2.1进程与线程
2.1.1进程的概念和特征
进程的引入:在多道程序环境下,多个程序并发执行,从而失去了封闭性,并且具有间断性和不可再现性的特征,因此引入了进程的概念,用以更好的描述和控制程序的并发执行,实现操作系统的最基本的两个特性:并发性和共享性
进程控制块:既然引入了进程,自然需要对其进行管理,不然其乱成一锅粥,系统岂不是得崩溃!!
所谓进程控制块,即为了使参与并发性执行的每个程序(包含数据)都能独立地运行,必须为其配置一个专门的数据结构-------进程控制块(Process Control Block,PCB)。
但是值得注意的是:PCB是进程存在的唯一标志!!!!!
进程的组成:进程实体(或者叫进程映像)由程序段,相关数据段和PCB三部分构成;
创建进程,实质上就是创建进程实体中的PCB;撤销进程,实质上就是撤销进程实体中的PCB;正如同上文所说的,PCB是进程存在的唯一标志!!!
进程的定义:说了这么多,那么进程的到底是什么呢?
从不同的角度,进程可以有不同的定义,典型的有以下几种:
进程是程序的一次执行过程;
进程是一个程序及其数据在处理机上顺序执行时所发生的活动;
进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位;(这里先留下一个坑,当线程引入后,其具体会变化)
注意哦!系统资源:就是指处理机、存储器、和其他设备服务于某个进程的时间;则进程就是“时间片”
分配的独立单位,由此决定了进程必定是一个动态,过程性的概念。
进程的特征:(理解即可)
a.动态性:进行是程序的一次执行,具有一定的生命周期,是动态的产生,变化和消亡的。动态性也是进程的最基本的特征;
b.并发性:指多个进程实体同存在与内存中,能在一段时间内同时运行(宏观上的同时,微观上的串行)。同时,引入进程的目的就是为了进程之间能够并发执行。
c.独立性:指进程实体是一个能独立运行,独立获得资源和独立接受调度的基本单位。独立二字,又说明了只有建立了PCB的程序,才能作为一个独立的单位参与运行。PCB是进程存在的唯一标志。
d.异步性:由于进程之间相互制约,各个进程独立的,以不同的速度执行。异步性会使得执行结果具有不可再现性,因此操作系统中需要有进程同步机制(后面会说)
程序是静态的指令集合,进程是程序的动态执行过程。静态的程序只占用磁盘空间,不需要其他系统资源,只有执行中的进程才需要分配内存,cpu等系统资源;
2.1.2进程的状态与转换
1.进程的状态:前面说过,进程具有动态性,因此,在进程的生命周期中,其具有不同的状态。
其分别为:
运行态:进程正在处理机(CPU)上运行;在单处理机中,无论何时,只能有一个进程处于运行态。
就绪态:进程获得了除处理机以外的所有所需资源,只要再得到处理机,便可立即运行;操作系统中处于就绪态的进程可能有很多,其通常会排成一个就绪队列。
阻塞态(等待态):进程正在等待某一事件而停止运行,例如等待某资源为可用(不包括处理机,即使处理机空闲其也无法运行)或等待I/O的完成。同样多个阻塞进程可排成一个阻塞队列,且根据阻塞原因的不同,可设置多个阻塞队列。
创建态:进程正在被创建,尚未转到就绪态。
创建步骤:
申请一个空白PCB,向其中填写用于控制和管理进程的信息;
为该进程分配运行时所必须的资源;(注意!!!:若进程所需的资源未得到完全分配,则其创建工作无法完成,此时进程所属的状态属于创建态)
最后把该进程转入就绪态并插入就绪队列中。
结束态:进程正在从系统中消失,可能是进程进程正常结束或者其他原因退出运行;
结束步骤:
系统先将进程设置为结束态;
再处理资源释放和回收等工作
问题:为什么要区分就绪态和阻塞态(区分处理机和其他资源)?
因为在分时系统中的时间片轮转机制中,每个进程分到的时间很短,只有若干毫秒,因此,进程在运行中会频繁地切换到就绪态;而其他资源的使用和分配或其他事件的发生(I/O操作的完成)相对的时间比时间片要长很多,自然切换到阻塞态的频率很低,由此观之,就绪态和阻塞态是进程生命周期中完全不同的两个状态。
进程的转换:
就绪态->运行态:处于就绪态的进程被调度后,获得处理机资源(被分派到处理机时间片)。其就从就绪态转换为运行态。
运行态->就绪态:时间片用完或者处机被占用(被更高优先级进程剥夺)其就从运行态转换为就绪态。
运行态->阻塞态:进程用系统调用的方式请求某一资源(例如:外设)的使用和分配或等待某一事件的发生(例如:I/O操作的完成)时,其就从运行态转换为阻塞态。
阻塞态->就绪态:进程等待的事件完成时(例如:I/O操作结束或者中断结束时,终端处理程序必须把相应进程的状态转换为就绪态)。
要点:一个进程从运行态到阻塞态是主动的行为,而从阻塞态到就绪态是被动的行为,需要其他相关进程的协助。
未完待续!!!