进程的三种状态转换
- 格式:doc
- 大小:90.50 KB
- 文档页数:4
第二章作业第一次作业:1.进程有哪三种基本状态?进程在三种基本状态之间转换的典型原因是什么?答:三种基本状态:就绪状态、执行状态、阻塞状态。
(1)就绪状态→执行状态:进程分配到CPU资源(进程调度);(2)执行状态→就绪状态:时间片用完(3)执行状态→阻塞状态:I/O请求(4)阻塞状态→就绪状态:I/O完成2.在Linux系统中运行下面程序,最多可产生多少个进程?画出进程家族树。
main(){fork();fork();fork();}答:最多可以产生7个进程。
其家族树为:3.试从动态性、并发性和独立性上比较进程和程序。
答:1)动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的;2)并发性是进程的重要特征,同时也是OS的重要特征。
引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身(没有建立PCB)是不能并发执行的;3)独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
凡未建立PCB的程序,都不能作为一个独立的单位来运行。
4.分析下列代码的功能:答:sleep_on实现进程的睡眠过程;wake_up实现进程的唤醒过程。
第二次作业:1.同步机制应该遵循哪些基本准则?你认为整型信号量机制遵循了同步机制的哪些基本准则?答:同步机制应遵循四个基本准则:a. 空闲让进:当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。
b. 忙则等待:当已有进程进入临界区时,其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。
c. 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。
d. 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。
简述进程的状态及其转换。
由于程序的复杂性,操作系统会维护程序的许多状态,例如:运行、暂停、就绪、等待等,从而实现对程序的控制。
其中,每一个进程都有一个状态,可以通过状态转换将进程从一个状态转变到另一个状态,以实现对进程的控制。
一般而言,进程的状态包括几种:运行态、就绪态、挂起态、等待态、中断态等。
每一种状态都表示一个进程正在进行的活动,以及它的状态变化。
1、运行态:运行态是进程执行的主要状态,表示进程正在执行服务或任务。
运行态也可以理解为进程正在使用处理器资源。
2、就绪态:在就绪态中,进程已调度,但尚未分配处理器资源,此时,进程处于就绪状态,等待处理器资源,以便继续执行。
3、挂起态:挂起态表示进程正在等待某个条件,不能立即执行服务或任务,因此,进程处于挂起状态,被迫挂起,等待特定的条件,或某个确定的时间,以便继续执行。
4、等待态:等待态表示进程正在等待另一个进程,或者受阻,而不能继续执行,一旦满足了满足条件,进程可以继续执行。
5、中断态:中断态表示进程正在中断状态,它引发了操作系统的一些响应,比如:对中断信号的响应,而当进程处于中断态时,它只能等待操作系统的响应。
除了上述状态,还有一种特殊的状态终止状态。
它表示一个进程执行完毕,不再被操作系统使用或控制,因此,操作系统可以将它从内存中清除,节省内存资源。
当进程执行不同的服务和任务时,它会不断地变化,从一个状态转换到另一个状态。
这种变化由状态转换图示出。
常用的状态转换有三种:运行到就绪、运行到等待和就绪到运行。
(1)行到就绪:当进程完成一段时间的运行,或者运行到一定的时间,则它将会从运行状态转换到就绪状态,以等待下次运行;(2)行到等待:当进程需要等待某个条件时,或者某个外部设备的响应,则进程将会从运行状态转换到等待状态,以等待某个条件;(3)绪到运行:当处理器资源变得可用,待执行的服务完成,则处于就绪状态的进程就会由就绪状态转换为运行状态,以便继续执行服务或任务。
进程在运行过程中主要是在就绪、运行和阻塞三种状态间进行转换。
创建状态和退出状态描述进程创建的过程和进程退出的过程。
1)运行状态(Running):进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。
在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
2)就绪状态(Ready):进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。
就绪进程可以按多个优先级来划分队列。
例如,当一个进程由于时间片用完而进入就绪状态时,排人低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
3)阻塞状态(Blocked):当进程由于等待I/O操作或进程同步等条件而暂停运行时,它处于阻塞状态。
4)创建状态(New):进程正在创建过程中,还不能运行。
操作系统在创建状态要进行的工作包括分配和建立进程控制块表项、建立资源表格(如打开文件表)并分配资源、加载程序并建立地址空间表等。
5)退出状态(Exit):进程已结束运行,回收除进程控制块之外的其他资源,并让其他进程从进程控制块中收集有关信息(如记帐和将退出代码传递给父进程)。
五状态进程模型中的状态转换主要包括下列几种。
操作系统中多个进程的并发执行是通过调度与超时两种转换间的循环,或调度、等待事件和事件出现三种转换间的循环来描述的。
1)创建新进程:创建一个新进程,以运行一个程序。
创建新进程的可能原因包括用户登录、操作系统创建以提供某项服务、批处理作业等。
2)收容(Admit,也称为提交):收容一个新进程,进入就绪状态。
由于性能、内存等原因,系统会限制并发进程总数。
3)调度运行(Dispatch):从就绪进程表中选择一个进程,进入运行状态。
4)释放(Release):由于进程完成或失败而终止进程运行,进入结束状态。
为了简洁,状态变迁图中只画出了运行状态到退出状态间的释放转换;但实际上,还存在从就绪状态或阻塞状态到退出状态的释放转换。
操作系统的进程管理随着计算机技术的不断发展,操作系统作为计算机系统的核心部件,已经发挥了越来越重要的作用。
在操作系统中,进程管理是其中的一个重要的部分,它对计算机系统的性能和稳定运行起着至关重要的作用。
进程是指正在运行的程序。
在计算机中,进程可以分为操作系统进程和用户进程。
操作系统会为每个进程分配运行所需的资源,并实现对进程的调度、控制和同步等管理功能。
下面我们来详细了解一下操作系统的进程管理。
一、进程的概念与属性进程是指正在运行的程序在操作系统中的抽象,是计算机上的基本执行单位。
每个进程都有独立的内存空间和运行环境,包括CPU时间、内存空间、文件和设备等资源。
进程之间相互独立,不能相互干扰和共享内存。
进程有以下几种属性:1.进程标识:每个进程都有一个唯一的进程标识符PID,用于唯一标识该进程。
2.进程状态:进程可以有三种状态:就绪状态、阻塞状态和运行状态。
其中,就绪状态是指进程已经准备好运行,只需等待CPU调度即可;阻塞状态是指进程正在等待某个事件的完成,例如等待IO操作完成;运行状态是指进程正在执行。
3.进程控制块:每个进程都有一个进程控制块PCB,它是操作系统管理进程的重要数据结构,用于存储进程的运行状态、进程标识、程序计数器、寄存器等信息。
二、进程的状态转换进程可以经历三种状态的转换:就绪状态、阻塞状态和运行状态。
进程状态转换图如下:当一个进程在运行时,如果需要等待某个事件的发生,例如等待IO操作完成,它就会进入阻塞状态。
当阻塞事件完成后,它就会进入就绪状态,等待操作系统调度。
当操作系统调度到该进程并执行时,该进程就会进入运行状态。
三、进程的创建与终止进程的创建是指通过操作系统创建一个新进程的过程。
一般来说,进程的创建需要经过以下几个步骤:1.数据结构初始化:操作系统需要为新进程分配一个唯一的PID,并创建一个对应的进程控制块PCB。
2.程序加载:操作系统需要将新进程的代码和数据从磁盘加载到内存中。
说明进程在三个基本状态之间转换的典型原因
进程是操作系统中非常重要的一部分,它把运行中的程序划分为多个基本任务单元,满足一定的调度算法来安排和分配程序占用系统资源的机会。
操作系统将进程分为三种基本状态,分别是运行态、就绪态和阻塞态。
这三种基本状态之间的转换是由一些原因导致的,下面我们就来详细的介绍一下它们的原因。
首先是进程从运行态转换到就绪态的原因。
常见的情况是,当一个程序需要读取设备上的内容时,它就会进入阻塞态,这是因为设备所需要的资源还没准备就绪,所以进程不得不进入就绪态,等待资源准备就绪之后再进入运行态。
其次是进程从就绪态转换到运行态的原因。
这是因为操作系统中的调度器根据一定的算法选择其中一个已经进入就绪态的程序,并分配给它一定的处理机,使之进入运行态,以满足更多的应用程序的需求。
最后是进程从运行态转换到阻塞态的原因。
这个原因很多,但是最常见的一种情况是,当进程需要从设备读取数据或者写入数据时,由于设备速度比处理机慢,所以它就会进入阻塞态,等待此次操作完成后再恢复运行。
综上所述,进程的三种基本状态之间的转换是由多种原因导致的,从运行态到就绪态的原因是因为资源未准备就绪,而从就绪态到运行态转换则是因为处理机分配给它,最后,从运行态到阻塞态的原因则是处理机操作设备速度慢。
进程的三个基本状态及其转换
进程的三个基本状态是运行态、阻塞态和就绪态。
这些状态之间的转换有以下几种情况:
1. 就绪态转为运行态:当一个进程被调度器选中,分配到CPU进行执行时,就会从就绪态转为运行态。
2. 运行态转为就绪态:当一个进程在运行时被抢占,或者执行完毕后释放CPU,进入等待调度的状态时,就会从运行态转为就绪态。
3. 运行态转为阻塞态:当一个进程在执行过程中发生某些不可避免的等待事件(如等待用户输入、等待IO操作完成)时,就会从运行态转为阻塞态。
4. 阻塞态转为就绪态:当一个进程等待事件结束后,切换到就绪状态,等待被调度执行时,就会从阻塞态转为就绪态。
5. 阻塞态转为终止态:当一个进程的等待事件永远结束(如等待关闭的设备),或者因为某些异常事件(如访问非法内存)而引发错误,无法继续执行时,就会从阻塞态转为终止态。
以上是进程的基本状态及其转换,不同的操作系统可能会有些差异,但一般都会包括这些状态和转换。
3.2.4 被挂起的进程交换的需要前面描述的三个基本状态(就绪态、运行态和阻塞态)提供了一种为进程行为建立模型的系统方法,并指导操作系统的实现。
许多实际的操作系统都是按照这样的三种状态进行具体构造的。
但是,可以证明往模型中增加其他状态也是合理的。
为了说明加入新状态的好处,考虑一个没有使用虚拟内存的系统,每个被执行的进程必须完全载入内存,因此,图3.8b 中,所有队列中的所有进程必须驻留在内存中。
所有这些设计机制的原因都是由于I/O 活动比计算速度慢很多,因此在单道程序系统中的处理器在大多数时候是空闲的。
但是图3.8b 的方案并没有完全解决这个问题。
在这种情况下,内存保存有多个进程,当一个进程正在等待时,处理器可以转移到另一个进程,但是处理器比I/O 要快得多,以至于内存中所有的进程都在等待I/O 的情况很常见。
因此,即使是多道程序设计,大多数时候处理器仍然可能处于空闲状态。
一种解决方法是内存可以被扩充以适应更多的进程,但是这种方法有两个缺陷。
首先是内存的价格问题,当内存大小增加到兆位及千兆位时,价格也会随之增加;再者,程序对内存空间需求的增长速度比内存价格下降的速度快。
因此,更大的内存往往导致更大的进程,而不是更多的进程。
另一种解决方案是交换,包括把内存中某个进程的一部分或全部移到磁盘中。
当内存中没有处于就绪状态的进程时,操作系统就把被阻塞的进程换出到磁盘中的“挂起队列”(suspendqueue),这是暂时保存从内存中被“驱逐”出的进程队列,或者说是被挂起的进程队列。
操作系统在此之后取出挂起队列中的另一个进程,或者接受一个新进程的请求,将其纳入内存运行。
“交换”(swapping)是一个I/O 操作,因而也可能使问题更加恶化。
但是由于磁盘I/O 一般是系统中最快的I/O(相对于磁带或打印机I/O),所以交换通常会提高性能。
为使用前面描述的交换,在我们的进程行为模型(见图3.9a)中必须增加另一个状态:挂起态。
3、进程状态的切换图三态模型⼀个进程从创建⽽产⽣⾄撤销⽽消亡的整个⽣命周期,可以⽤⼀组状态加以刻划,根据三态模型,进程的⽣命周期可分为如下三种进程状态:1. 运⾏态(running):占有处理器正在运⾏2. 就绪态(ready):具备运⾏条件,等待系统分配处理器以便运⾏3. 等待态(blocked):不具备运⾏条件,正在等待某个事件的完成下⾯是三个状态的转换图:运⾏状态的进程将由于出现等待事件⽽进⼊等待状态,当等待事件结束之后等待状态的进程将进⼊就绪状态,⽽处理器的调度策略⼜会引起运⾏状态和就绪状态之间的切换。
引起进程状态转换的具体原因如下:运⾏态—→等待态:等待使⽤资源;如等待外设传输;等待⼈⼯⼲预。
等待态—→就绪态:资源得到满⾜;如外设传输结束;⼈⼯⼲预完成。
运⾏态—→就绪态:运⾏时间⽚到;出现有更⾼优先权进程。
就绪态—→运⾏态:CPU 空闲时选择⼀个就绪进程。
五态模型在⼀个实际的系统⾥进程的状态及其转换⽐上节叙述的会复杂⼀些,例如引⼊专门的新建态(new)和终⽌态(exit )状态转换图如下所⽰:新建态对应于进程刚刚被创建的状态。
创建⼀个进程要通过两个步骤,1. 为⼀个新进程创建必要的管理信息,2. 让该进程进⼊就绪态。
此时进程将处于新建态,它并没有被提交执⾏,⽽是在等待操作系统完成创建进程的必要操作。
需要注意的是,操作系统有时将根据系统性能或主存容量的限制推迟新建态进程的提交类似地,进程的终⽌也要通过两个步骤,⾸先,是等待操作系统进⾏善后,然后,退出主存。
当⼀个进程到达了⾃然结束点,或是出现了⽆法克服的错误,或是被操作系统所终结,或是被其他有终⽌权的进程所终结,它将进⼊终⽌态。
进⼊终⽌态的进程以后不再执⾏,但依然临时保留在操作系统中等待善后。
⼀旦其他进程完成了对终⽌态进程的信息抽取之后,操作系统将删除该进程。
引起进程状态转换的具体原因如下:NULL—→新建态:执⾏⼀个程序,创建⼀个⼦进程。
进程系统分配调度的基本单位,线程进⾏运算调度的最⼩单位进程和线程⽣命周期进程的状态线程的同步和互斥进程是计算机中程序关于某数据集合上的⼀次运⾏活动,是系统进⾏资源分配和调度的基本单位进程的状态:⼀个进程的⽣命周期可以划为⼀组状态,这些状态刻画了整个进程,进程状态即体现⼀个进程的⽣命状态。
进程有⼏种状态:就绪状态、运⾏状态、阻塞状态当然理论上上述三种状态之间转换分为六种情况;运⾏——>就绪:1,主要是进程占⽤CPU的时间过长,⽽系统分配给该进程占⽤CPU的时间是有限的;2,在采⽤抢先式优先级调度算法的系统中,当有更⾼优先级的进程要运⾏时,该进程就被迫让出CPU,该进程便由执⾏状态转变为就绪状态。
就绪——>运⾏:运⾏的进程的时间⽚⽤完,调度就转到就绪队列中选择合适的进程分配CPU运⾏——>阻塞:正在执⾏的进程因发⽣某等待事件⽽⽆法执⾏,则进程由执⾏状态变为阻塞状态,如发⽣了I/O请求阻塞——>就绪:进程所等待的事件已经发⽣,就进⼊就绪队列以下两种状态是不可能发⽣的:阻塞——>运⾏:即使给阻塞进程分配CPU,也⽆法执⾏,操作系统在进⾏调度时不会从阻塞队列进⾏挑选,⽽是从就绪队列中选取就绪——>阻塞:就绪态根本就没有执⾏,谈不上进⼊阻塞态。
在⼀些系统中,⼜增加了⼀些新状态,如挂起状态,可运⾏状态,深度睡眠状态,浅度睡眠状态,暂停状态,僵死状态。
线程:线程⽣命周期:线程的⽣命周期:新⽣,线程被实例化,还未被执⾏;就绪,没有抢到cpu时间⽚;运⾏,抢到了时间⽚,cpu开始处理这个线程中的任务;阻塞,线程在执⾏过程中遇到特殊情况,使得其他线程能获得执⾏的机会,被阻塞的线程会等待合适的时机,进⼊就绪状态;死亡,线程终⽌;线程的合并;.join( ) 当前线程将会释放CPU资源,cpu将时间⽚分给要join的线程线程的让步; .yield( ) 当前线程列表⾥优先级⾼于当前线程的可以抢这个CPU资源互斥:指某⼀时刻允许⼀个进程运⾏其中的程序⽚,具有排他性和唯⼀性同步:指在互斥基础上实现进程之间的有序访问,假设现有线程A和线程B,线程A需要往缓冲区写数据,线程B需要从缓冲区读数据,但她们存在⼀种制约关系,即线程A写的时候,B不能读数据,线程B在读数据的时候,A不能写,也即当A写完数据(或B取⾛数据),B才能来拿数据临界资源:能够被多个线程共享的数据/资源。