(转载)进程的三种状态及转换

本文详细介绍了进程的三种基本状态:就绪、执行和阻塞,以及这些状态之间的转换过程。通过具体的实例,帮助读者理解不同状态转换的原因及事件触发。

1.进程的三种基本状态

    进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

 就绪(Ready)状态

    当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

 执行(Running)状态
当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

 阻塞(Blocked)状态
正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

2.进程三种状态间的转换

一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。图3_4描述了进程的三种基本状态及其转换。

 (1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。

 (2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。

 (3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。

 (4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。

 

例:

题目:某系统的状态转换图如图所示。

1)分别说明引起状态转换1234的原因,并各举一个事件。
2)为什么在转换图中没有就绪到阻塞和阻塞到运行的转换方向?
3)一个进程的状态变换能够引起另一个进程的状态变换,说明下列因果变迁是否可能发生,原因是什么?
a31b21c32d34e41

答:1
1
:就绪->执行,当前运行进程阻塞,调度程序选一个优先权最高的进程占有处理机;
2
:执行->就绪,当前运行进程时间片用完;
3
:执行->阻塞,当前运行进程等待键盘输入,进入了睡眠状态。
4
:阻塞->就绪,I/O操作完成,被中断处理程序唤醒。

2)就绪进程没有占有处理机,也即没有经过运行,其状态就不会改变。
阻塞状态进程唤醒后先要进入就绪队列,才会被调度程序选中,进入了执行状态。

3
a 31可能,当前运行进程阻塞,调度程序选一个优先级最高的进程占有处理机。
b21:可能,当前运行进程优先级下降,调度程序选一个优先级最高的进程占有处理机。
c32不可能,占有CPU的一个进程不能同时进入两个状态;在单CPU的系统中,状态3发生后,cpu没有执行进程,故不会发生状态转换2

d34:一般不可能,不相干的两个事件。状态转换3是由于运行进程等待资源而发生的,这并不会使得阻塞队列中的进程得到资源而进入就绪队列。但在Unix中,当系统的0#进程因runin标志而睡眠时,有(在内存)进程睡眠,就会唤醒0#进程,使其进入就绪状态,以便将该进程和在盘交换区就绪进程交换位置。

原文地址:http://blog.chinaunix.net/uid-25984886-id-3027573.html


模拟一个采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存 储管理、设备管理、文件管理和用户接口四部分,要求: 1、 文件管理和用户接口 实现的主要是单用户的磁盘文件管理部分,包括文件的逻辑结构、物理结构、目录、磁盘分配回收、文件的保护和用户接口的实现。 支持多级目录结构,支持文件的绝对读路径。 在图形化界面实现目录树结构,以及文件的路径显示查找等。 文件的逻辑结构采用流式结构,物理结构采用链接结构中的显式链接方式。系统中有两种文件,一种是存放任意字符的普通文本文件,一种是可执行文件。 采用文件分配表 FAT。 把磁盘中每一块的指针部分提出来,组织在一起,形成文件分配表(FAT)。建立一个FAT数组作为文件分配表。 实现的命令包括建立目录、目录、删除空目录、建立文件、删除文件、显示。 实现图形界面的建立目录、目录、删除空目录、建立文件、删除文件、显示操作,并对后台进行改变。 文件内容、打开文件、读文件、文件、关闭文件。实现图形界面的显示文件内容、打开文件、读文件、文件、关闭文件并对后台进行改变。 命令行界面执行这些命令,也可以采用“右击快捷菜单选择”方式执行命令。 2、 存储管理 储管理部分主要实现内存空间的分配和回收、存储保护。用链表模拟内存空间分配表。存储管理采用动态分区存储管理方式,采用首次适配、下次适配、最佳适配均可。 模拟系统中,主存部分分为两部分,一部分是系统区,只存放进程控制块和内存分配表,一部分是用户区,存放可执行文件。系统区包括PCB区域(最多容纳10个PCB)、内存空间分配表;用户区用数组模拟,大小为512字节。 屏幕显示要求包括:内存使用情况示意图,以不同的颜色表示哪些区域未分配或已分配(已分配给哪个进程)。 3、 设备管理 设备管理主要包括设备的分配和回收。 模拟系统中有A、B、C三种独占型设备,A设备2个,B设备3个,C设备3个。(同一种设备的不同实体被认为是相同的) 设备的申请是由于前述可执行文件中的!??指令引起,有空闲设备分配设备,然后进程阻塞,同设备使用倒计至0后释放设备(不考虑设备具体的I/O操作)并唤醒进程继续运行;无空闲设备阻塞进程,直至其它进程释放设备才分配设备并使用,设备使用完后唤醒进程。设备使用倒计期间,本进程阻塞,需要调度另外一个进程去占用CPU执行;假设设备使用完后立即释放该设备,后续指令需再次使用该设备重新分配。 不考虑死锁。 屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 4进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。 1)硬件工作的模拟 (a)中央处理器的模拟用函数CPU()(该函数没有参数)模拟单个中央处理器。该函数主要负责解释“可执行文件”中的指令。(为简单计,用户命令接口部分实现的命令不必用CPU()解释执行) (b)主要寄存器的模拟用全局变量或数组模拟重要寄存器, (c)中断的模拟I、中断的发现应该是硬件的工作,但在这里,用在函数CPU()中检测PSW的方式来模拟。 (d)钟的模拟系统钟和相对钟用全局变量模拟。系统钟用来记录开机以后的单位间,相对钟用来存放进程可运行的间片 2进程控制块PCB进程控制块内容包括进程标识符、主要寄存器、进程状态、阻塞原因等。 3)进程调度随机选择前面创建的10个可执行文件之一,创建进程PCB,分配内存,然后逐条执行其中的指令;然后经过随机间后,再选择一个可执行文件,创建进程……,如此往复,模拟操作系统中进程随机到达的过程。采用间片轮转调度算法,间片长度为6。 4进程控制建立4个函数模拟进程创建、撤销、阻塞和唤醒四个原语 5)屏幕显示要求包括:显示系统钟;显示正在运行进程进程ID、运行的指令、中间结果(x的当前值)、相对钟(间片剩余值);显示就绪队进程ID;33显示阻塞队进程ID。 二、概要设计 2.1 文件操作 模拟磁盘需要先设计一个类Disk存储磁盘里的信息。因为磁盘有256块,每块有64字节,所以用一个二维的byte数组存储磁盘里的信息。磁盘的信息存储在一个文本文件中,当要操作磁盘便从文本文件读取内容存放到Disk类的数组中,操作完毕便入文本文件中。 属性为private byte[][] disk; 文件和目录管理需要文件分配表FAT,所以需要一个类FAT来管理文件分配表的改动。因为每个盘块要用一字节表示,而每个盘块有64字节,所以需要disk中的前4个盘块作为文件分配表的内容,所以FAT直接获取Disk中二维数组的引用,操作直接在数组前四行里操作。 属性为private byte[][] diskBuffer; 需要FileUtil类,用以对磁盘进行各种操作。因为磁盘中存储的都是字节型数据,所以从磁盘中读取内容都是将磁盘中的二进制内容转换为String类型,而则将String型的内容与名字转换为字节型存储到磁盘中。文件或目录的路径是按如下的方法化为二进制的,如路径/ab/cde化为二进制转换为数组二进制数组path[][],其中path[0]是 “ab”的Ascii码[97,98],path[1]是”cde”的Ascii码[99,100,101]。属性如下。 private byte[][] diskBuffer; //存储磁盘里的内容 private final int ROOT_DIR = 4; //根目录在磁盘中的盘块 private final byte EXE_PROPERTY = 5; //可执行文件属性 private final byte TXT_PROPERTY = 1; //文本文件属性 private final byte DIR_PROPERTY = 3; //目录属性 private FAT fileAllocationTable; //文件分配表类 private Disk disk; //磁盘类,用以从文件中读取内容 private byte[] emptyBlock; //空盘块 private byte[] emptyItem; //空目录项 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 模拟一个采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存 储管理、设备管理、文件管理和用户接口四部分,要求: 1、 文件管理和用户接口 实现的主要是单用户的磁盘文件管理部分,包括文件的逻辑结构、物理结构、目录、磁盘分配回收、文件的保护和用户接口的实现。 支持多级目录结构,支持文件的绝对读路径。 在图形化界面实现目录树结构,以及文件的路径显示查找等。 文件的逻辑结构采用流式结构,物理结构采用链接结构中的显式链接方式。系统中有两种文件,一种是存放任意字符的普通文本文件,一种是可执行文件。 采用文件分配表 FAT。 把磁盘中每一块的指针部分提出来,组织在一起,形成文件分配表(FAT)。建立一个FAT数组作为文件分配表。 实现的命令包括建立目录、目录、删除空目录、建立文件、删除文件、显示。 实现图形界面的建立目录、目录、删除空目录、建立文件、删除文件、显示操作,并对后台进行改变。 文件内容、打开文件、读文件、文件、关闭文件。实现图形界面的显示文件内容、打开文件、读文件、文件、关闭文件并对后台进行改变。 命令行界面执行这些命令,也可以采用“右击快捷菜单选择”方式执行命令。 2、 存储管理 储管理部分主要实现内存空间的分配和回收、存储保护。用链表模拟内存空间分配表。存储管理采用动态分区存储管理方式,采用首次适配、下次适配、最佳适配均可。 模拟系统中,主存部分分为两部分,一部分是系统区,只存放进程控制块和内存分配表,一部分是用户区,存放可执行文件。系统区包括PCB区域(最多容纳10个PCB)、内存空间分配表;用户区用数组模拟,大小为512字节。 屏幕显示要求包括:内存使用情况示意图,以不同的颜色表示哪些区域未分配或已分配(已分配给哪个进程)。 3、 设备管理 设备管理主要包括设备的分配和回收。 模拟系统中有A、B、C三种独占型设备,A设备2个,B设备3个,C设备3个。(同一种设备的不同实体被认为是相同的) 设备的申请是由于前述可执行文件中的!??指令引起,有空闲设备分配设备,然后进程阻塞,同设备使用倒计至0后释放设备(不考虑设备具体的I/O操作)并唤醒进程继续运行;无空闲设备阻塞进程,直至其它进程释放设备才分配设备并使用,设备使用完后唤醒进程。设备使用倒计期间,本进程阻塞,需要调度另外一个进程去占用CPU执行;假设设备使用完后立即释放该设备,后续指令需再次使用该设备重新分配。 不考虑死锁。 屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 4进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。 1)硬件工作的模拟 (a)中央处理器的模拟用函数CPU()(该函数没有参数)模拟单个中央处理器。该函数主要负责解释“可执行文件”中的指令。(为简单计,用户命令接口部分实现的命令不必用CPU()解释执行) (b)主要寄存器的模拟用全局变量或数组模拟重要寄存器, (c)中断的模拟I、中断的发现应该是硬件的工作,但在这里,用在函数CPU()中检测PSW的方式来模拟。 (d)钟的模拟系统钟和相对钟用全局变量模拟。系统钟用来记录开机以后的单位间,相对钟用来存放进程可运行的间片 2进程控制块PCB进程控制块内容包括进程标识符、主要寄存器、进程状态、阻塞原因等。 3)进程调度随机选择前面创建的10个可执行文件之一,创建进程PCB,分配内存,然后逐条执行其中的指令;然后经过随机间后,再选择一个可执行文件,创建进程……,如此往复,模拟操作系统中进程随机到达的过程。采用间片轮转调度算法,间片长度为6。 4进程控制建立4个函数模拟进程创建、撤销、阻塞和唤醒四个原语 5)屏幕显示要求包括:显示系统钟;显示正在运行进程进程ID、运行的指令、中间结果(x的当前值)、相对钟(间片剩余值);显示就绪队进程ID;33显示阻塞队进程ID。 二、概要设计 2.1 文件操作 模拟磁盘需要先设计一个类Disk存储磁盘里的信息。因为磁盘有256块,每块有64字节,所以用一个二维的byte数组存储磁盘里的信息。磁盘的信息存储在一个文本文件中,当要操作磁盘便从文本文件读取内容存放到Disk类的数组中,操作完毕便入文本文件中。 属性为private byte[][] disk; 文件和目录管理需要文件分配表FAT,所以需要一个类FAT来管理文件分配表的改动。因为每个盘块要用一字节表示,而每个盘块有64字节,所以需要disk中的前4个盘块作为文件分配表的内容,所以FAT直接获取Disk中二维数组的引用,操作直接在数组前四行里操作。 属性为private byte[][] diskBuffer; 需要FileUtil类,用以对磁盘进行各种操作。因为磁盘中存储的都是字节型数据,所以从磁盘中读取内容都是将磁盘中的二进制内容转换为String类型,而则将String型的内容与名字转换为字节型存储到磁盘中。文件或目录的路径是按如下的方法化为二进制的,如路径/ab/cde化为二进制转换为数组二进制数组path[][],其中path[0]是 “ab”的Ascii码[97,98],path[1]是”cde”的Ascii码[99,100,101]。属性如下。 private byte[][] diskBuffer; //存储磁盘里的内容 private final int ROOT_DIR = 4; //根目录在磁盘中的盘块 private final byte EXE_PROPERTY = 5; //可执行文件属性 private final byte TXT_PROPERTY = 1; //文本文件属性 private final byte DIR_PROPERTY = 3; //目录属性 private FAT fileAllocationTable; //文件分配表类 private Disk disk; //磁盘类,用以从文件中读取内容 private byte[] emptyBlock; //空盘块 private byte[] emptyItem; //空目录项 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 模拟一个采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存 储管理、设备管理、文件管理和用户接口四部分,要求: 1、 文件管理和用户接口 实现的主要是单用户的磁盘文件管理部分,包括文件的逻辑结构、物理结构、目录、磁盘分配回收、文件的保护和用户接口的实现。 支持多级目录结构,支持文件的绝对读路径。 在图形化界面实现目录树结构,以及文件的路径显示查找等。 文件的逻辑结构采用流式结构,物理结构采用链接结构中的显式链接方式。系统中有两种文件,一种是存放任意字符的普通文本文件,一种是可执行文件。 采用文件分配表 FAT。 把磁盘中每一块的指针部分提出来,组织在一起,形成文件分配表(FAT)。建立一个FAT数组作为文件分配表。 实现的命令包括建立目录、目录、删除空目录、建立文件、删除文件、显示。 实现图形界面的建立目录、目录、删除空目录、建立文件、删除文件、显示操作,并对后台进行改变。 文件内容、打开文件、读文件、文件、关闭文件。实现图形界面的显示文件内容、打开文件、读文件、文件、关闭文件并对后台进行改变。 命令行界面执行这些命令,也可以采用“右击快捷菜单选择”方式执行命令。 2、 存储管理 储管理部分主要实现内存空间的分配和回收、存储保护。用链表模拟内存空间分配表。存储管理采用动态分区存储管理方式,采用首次适配、下次适配、最佳适配均可。 模拟系统中,主存部分分为两部分,一部分是系统区,只存放进程控制块和内存分配表,一部分是用户区,存放可执行文件。系统区包括PCB区域(最多容纳10个PCB)、内存空间分配表;用户区用数组模拟,大小为512字节。 屏幕显示要求包括:内存使用情况示意图,以不同的颜色表示哪些区域未分配或已分配(已分配给哪个进程)。 3、 设备管理 设备管理主要包括设备的分配和回收。 模拟系统中有A、B、C三种独占型设备,A设备2个,B设备3个,C设备3个。(同一种设备的不同实体被认为是相同的) 设备的申请是由于前述可执行文件中的!??指令引起,有空闲设备分配设备,然后进程阻塞,同设备使用倒计至0后释放设备(不考虑设备具体的I/O操作)并唤醒进程继续运行;无空闲设备阻塞进程,直至其它进程释放设备才分配设备并使用,设备使用完后唤醒进程。设备使用倒计期间,本进程阻塞,需要调度另外一个进程去占用CPU执行;假设设备使用完后立即释放该设备,后续指令需再次使用该设备重新分配。 不考虑死锁。 屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 4进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。 1)硬件工作的模拟 (a)中央处理器的模拟用函数CPU()(该函数没有参数)模拟单个中央处理器。该函数主要负责解释“可执行文件”中的指令。(为简单计,用户命令接口部分实现的命令不必用CPU()解释执行) (b)主要寄存器的模拟用全局变量或数组模拟重要寄存器, (c)中断的模拟I、中断的发现应该是硬件的工作,但在这里,用在函数CPU()中检测PSW的方式来模拟。 (d)钟的模拟系统钟和相对钟用全局变量模拟。系统钟用来记录开机以后的单位间,相对钟用来存放进程可运行的间片 2进程控制块PCB进程控制块内容包括进程标识符、主要寄存器、进程状态、阻塞原因等。 3)进程调度随机选择前面创建的10个可执行文件之一,创建进程PCB,分配内存,然后逐条执行其中的指令;然后经过随机间后,再选择一个可执行文件,创建进程……,如此往复,模拟操作系统中进程随机到达的过程。采用间片轮转调度算法,间片长度为6。 4进程控制建立4个函数模拟进程创建、撤销、阻塞和唤醒四个原语 5)屏幕显示要求包括:显示系统钟;显示正在运行进程进程ID、运行的指令、中间结果(x的当前值)、相对钟(间片剩余值);显示就绪队进程ID;33显示阻塞队进程ID。 二、概要设计 2.1 文件操作 模拟磁盘需要先设计一个类Disk存储磁盘里的信息。因为磁盘有256块,每块有64字节,所以用一个二维的byte数组存储磁盘里的信息。磁盘的信息存储在一个文本文件中,当要操作磁盘便从文本文件读取内容存放到Disk类的数组中,操作完毕便入文本文件中。 属性为private byte[][] disk; 文件和目录管理需要文件分配表FAT,所以需要一个类FAT来管理文件分配表的改动。因为每个盘块要用一字节表示,而每个盘块有64字节,所以需要disk中的前4个盘块作为文件分配表的内容,所以FAT直接获取Disk中二维数组的引用,操作直接在数组前四行里操作。 属性为private byte[][] diskBuffer; 需要FileUtil类,用以对磁盘进行各种操作。因为磁盘中存储的都是字节型数据,所以从磁盘中读取内容都是将磁盘中的二进制内容转换为String类型,而则将String型的内容与名字转换为字节型存储到磁盘中。文件或目录的路径是按如下的方法化为二进制的,如路径/ab/cde化为二进制转换为数组二进制数组path[][],其中path[0]是 “ab”的Ascii码[97,98],path[1]是”cde”的Ascii码[99,100,101]。属性如下。 private byte[][] diskBuffer; //存储磁盘里的内容 private final int ROOT_DIR = 4; //根目录在磁盘中的盘块 private final byte EXE_PROPERTY = 5; //可执行文件属性 private final byte TXT_PROPERTY = 1; //文本文件属性 private final byte DIR_PROPERTY = 3; //目录属性 private FAT fileAllocationTable; //文件分配表类 private Disk disk; //磁盘类,用以从文件中读取内容 private byte[] emptyBlock; //空盘块 private byte[] emptyItem; //空目录项 ———————
最新发布
07-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值