#创作挑战赛#
进程的定义进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
任务管理器中的进程
从狭义上来讲,进程是正在运行的程序的实例。而从广义上来讲,进程是一个具有一定独立功能的程序关于某个数据集合的运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程总的来讲主要有两方面,第一,进程可以说是一个实体。它都有自己的一个地址空间。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
进程的主要组成进程占据的内存空间由控制块、程序段和数据段三个部分组成
(1) 控制块(Proscessing Control Block,PCB):系统为管理进程专门设置的数据结构,常驻于内存中,用于记录进程的外部特征与进程的运动变化过程。控制块是进程存在的唯一标志。
(2) 程序段:用于存放程序执行代码的一块内存区域。
(3) 数据段:存储变量和进程执行期间产生中间或最终数据的一块内存区域。
进程的特性:动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是资源分配资源和调度的独立单位。
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
进程的状态随着外界条件的变化,进程的状态也会发生相应的变化。由于进程执行时的间断性,决定了进程具有多种状态。进程的状态在切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程的上下文,所以进程的切换实质上就是被中止运行进程与待运行进程上下文的切换。在进程未占用处理器时,进程的上下文是存储在进程的私有堆栈中的。
1、新建态
创建进程,申请一个空白的控制块,向该控制块中填写控制和管理进程的信息,完成资源分配。
2、就绪状态(Ready)
所谓就绪状态就是进程运行的所需资源已经准备好了,就差获得处理器的调度。就好比所有的菜和调料准备好了,就差下锅煮了。只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如。当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
3、运行状态
当处于就绪状态的进程获得了处理器的调度时,此时进程的状态就是运行的状态。处于此状态的进程数目是小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
4、阻塞状态(blocked)
进程不具备运行条件,需要等待某个事件(如I/O操作或进程同步)的完成,在条件无法满足之前,就算获得处理器的调度,进程也会一直处于阻塞状态,无法运行。
5、终止态
进程因出现错误或被系统终止而运行结束。
除了以上五种状态之外,进程还有一个挂起态。挂起态是一种主动行为,它是计算机内存资源不足、处理器空闲、用户主动挂起、系统检查资源使用情况等条件下将进程暂时调离出内存形成的,在条件允许时可再次被调回内存。与挂起态相比,阻塞态是一种被动行为,它是在等待事件或者获取不到资源而引发的等待表现。
进程切换状态的过程
进程状态转换图
无状态 => 新建态:当程序从存储设备加载到内存中时,进程进入新建态。
新建态 => 就绪态:处于新建态的进程会被调度器自动转换为就绪态,获得了所需的资源,这个过程是非常短暂的。
就绪态 => 运行态:当就绪态的进程获取到处理器的调度时,进程就会进入运行态。
运行态 => 阻塞态:当处于运行态的进程因出现资源不足(I/O或缓冲区申请失败等)等事件而终止运行,进入阻塞态。
阻塞态 => 就绪态:当处于阻塞态的进程获得了等待的资源后恢复为就绪态。
阻塞态 => 挂起态:当处于阻塞态的进程遇到诸如处理器空闲、资源不足等情况时而调离内存,进入挂起态。进程的内存数据会保存到磁盘中,以释放空间供其它进程使用。
挂起态 =>就绪态: 当处于挂起态的进程遇到系统资源充足或主动请求激活时,进入就绪态。
运行态 => 终止态:当处于运行态进程执行完成或者被操作系统终止时,它会从内存中被移除,变为“终止”状态。
,