【操作系统】进程线程模型(一)
写在前面
- 关于文章操作系统中最核心的概念是
进程
,这是对正在运行程序的一个抽象。也可以说进程是程序的一次执行过程
。操作系统的其他所有内容都是围绕着进程的概念展开的,所以,透彻地理解进程是非常重要的。即使可以利用的CPU只有一个,但是通过进程,可以使系统具有支持并发操作的能力,可将一个单独的CPU变换成多个虚拟的CPU
。在这里主要学习操作系统中多道程序设计模型、进程的概念定义、特征、状态模型及其转换等。
- 我的站点
- 联系我🐧:
2410685763
WeChat:Super_Baby_00
公众号:
编程那点事儿
多道程序设计模型
采用多道程序设计可以提高CPU的利用率。多道程序设计技术充分发挥了处理器与外围设备以及外围设备之间的并行工作能力,从而提高处理器和其他各种资源的利用率
。
程序的顺序执行
程序是一个在时间上
按严格次序前后相继的操作序列,这些操作是机器指令或高级语言编写的语句。人们习惯的传统程序设计方法是顺序程序设计
,计算机也是以顺序方式工作的:CPU一次执行一条指令,对内存一次访问一个字节或字,对外部设备一次传送一个数据块。
概念
把一个具有独立功能的程序独占CPU直到得到最终结果的过程称为程序的顺序执行
。
特点
顺序性
程序所规定的动作在机器上严格地按顺序执行。每个动作的执行都以前一个动作的结束为前提条件,即程序和机器执行的活动严格一一对应
。
封闭性
程序运行后,其计算结果只取决于程序自身,程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。计算结果只取决于程序自身;程序所用资源的状态只有程序自身的动作可以改变。
程序执行结果的确定性
程序执行的结果与它的执行速度无关,也称为程序执行结果与时间无关性
。即CPU在执行程序时,任意两个动作之间的停顿对程序的计算结果都不会产生影响。结果与时间或执行速度无关!
程序执行结果的可再现性
如果程序在不同的时间执行,只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同的结果。初始条件相同,输出结果必相同!
多道程序设计技术
背景
在许多情况下,要求计算机能够同时处理多个具有独立功能的程序
,以增强系统的处理能力和提高机器的利用率。通常采用并行操作技术,使系统的各种硬件资源尽量做到并行工作。
为了提高计算机系统中各种资源的利用效率,缩短作业的周转时间
,在现代计算机中广泛采用多道程序技术,使多种硬件资源能并行
工作。引入了多道程序设计技术,使得多道程序同时在系统中存在并且运行。
此时,系统中各部分的工作方式不再是单纯串行的,而是并发执行
的。
所谓并发执行,对于单CPU,这些并发程序按给定的时间片交替地在处理机上执行
,其执行的时间是重叠的;对于多CPU,这些并发程序在各自处理机上运行。
特点
多道程序设计,就是允许多个程序同时进入内存并运行
。多道程序设计是操作系统所采用的最基本、最重要的技术,其根本目的是提高整个系统的效率
。
衡量系统效率的尺度是系统吞吐量。所谓吞吐量是指单位时间内系统所处理作业(程序)的道数(数量)。
多道程序设计改善了各种资源的使用情况,从而增加了吞吐量,提高了系统效率,但也带来了资源竞争
。因此,在实现多道程序设计时,必须协调好资源使用者与被使用资源之间的关系
,即对处理机资源加以管理,以实现处理机在各个可运行程序之间的分配与调度;对内存资源加以管理,将内存分配给各个运行程序,还要解决程序在内存的定位问题,并防止内存中各个程序之间互相干扰或对操作系统的干扰;对设备资源进行管理,使各个程序在使用设备时不发生冲突。
多道程序设计环境具有以下特点:
独立性
在多道环境下执行的每道程序都是逻辑上独立的,且执行速度与其他程序无关,执行的起止时间也是独立的。随机性
在多道程序环境下,程序和数据的输入与执行开始时间都是随机的。资源共享性
程序的并发执行
概念
程序并发执行,是指两个或两个以上程序在计算机系统中同处于已开始执行且尚未结束的状态
。能够参与并发执行的程序称为并发程序
。引入程序并发执行,是为了充分利用系统资源,提高计算机的处理能力。
特点
并发程序在执行期间具有相互制约关系
多道程序的并发执行总是伴随着资源的共享和竞争,从而制约了各道程序的执行速度,使本来并无逻辑关系的程序之间产生了相互制约的关系;而各程序活动的工作状态与所处环境有密切关系,使并发执行的程序具有“执行一暂停一执行”的活动规律。
- 失去封闭性程序在并发执行时,系统的资源状态由多道程序来改变,程序运行失去封闭性。程序的运行受到其他程序的影响。
- 不可再现性程序在并发执行时,多次运行初始条件相同的同一程序会得出不同的运行结果。
进程模型
为了能更好地描述程序的并发执行,实现操作系统的并发性和共享性,引入“进程”的概念。
什么是进程
概念
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位
。
从操作系统角度来看,可将进程分为系统进程和用户进程两类。系统进程执行操作系统程序,完成操作系统的某些功能。用户进程运行用户程序,直接为用户服务。系统进程的优先级通常高于一般用户进程的优先级。
与程序的区别
- 程序是静态的,而进程是动态的。
- 进程是有生命周期的,程序的存在是永久的,而进程的存在是暂时的,动态地产生和消亡。
- 一个进程可以执行一个或几个程序,一个程序亦可以构成多个进程。例如,一个编译进程在运行时,要执行词法分析、语法分析、代码生成和优化等几个程序。
- 进程具有创建其他进程的功能。被创建的进程称为子进程,创建者称为父进程,从而构成进程家族。
程序是构成进程的组成部分之一
,一个进程的运行目标是执行它所对应的程序,如果没有程序,进程就失去了其存在的意义。从静态的角度看,进程是由程序﹑数据和进程控制块(PCB)三部分组成
。
特点
- 1.
并发性
- 2.
动态性
- 3.
独立性
- 4.
交往性
- 5.
异步性
进程状态模型及转换
进程在从创建到终止的全过程中一直处于一个不断变化的过程
。为了刻画进程的这个变化过程,所有操作系统都把进程分成若干种状态,约定各种状态间的转换条件。
三状态模型
- 就绪状态(Ready)一个进程已经具备运行条件,但由于没有获得CPU而不能运行所处的状态。
一旦把CPU分配给它,该进程就可运行
。处于就绪状态的进程可以是多个。
- 运行状态(Running)进程已获得CPU,并且在CPU上执行的状态。显然,
在一个单CPU系统中,最多只有一个进程处于运行态
。
- 阻塞状态(Blocked)阻塞状态也称等待状态或封锁状态。是指进程因等待某种事件发生而暂时不能运行的状态。
状态转换
- 就绪-->运行处于就绪状态的进程已具备了运行的条件,但
由于未能获得处理机
,故仍然不能运行。对于单处理机系统而言,因为处于就绪状态的进程往往不止一个,而是有一个就绪队列
。同一时刻只能有一个就绪进程获得处理机
。进程调度程序
根据调度算法级把处理机分配给某个就绪进程,建立该进程运行状态标记,并把控制转入该进程的启动程序,把它由就绪状态变为运行状态。这样进程就投入运行。 - 运行->就绪这种状态变化通常出现在分时操作系统中。正在运行的进程由于
规定的运行时间片用完
而使系统发出超时中断请求
,超时中断处理程序把该进程的状态修改为就绪状态,根据其自身的特征而插人就绪队列的适当位置,保留进程现场信息,收回处理机并转入进程调度程序。于是,正在运行的进程就由运行状态变为就绪状态。 - 运行->阻塞处于运行状态的进程能否继续运行,除了受时间限制外,还受其他种种因素的影响。例如,各种I/O操作。
- 阻塞->就绪
阻塞的进程在其被阻塞的原因获得解除后,并不能立即投入运行
,因为处理机满足不了进程的需要,于是将其状态由等待变成就绪,仅当进程调度程序把处理机再次分配给它时,才可恢复现场继续运行。
进程之间状态的转换是透明的。
五状态模型
五状态进程模型中,进程在运行过程中主要是在就绪
、运行
和阻塞
三种状态间进行转换。创建状态和退出状态
描述进程创建的过程和进程退出的过程。
- 运行状态(Running)进程占用处理机资源;处于此状态的
进程的数目小于等于处理机的数目
。 - 就绪状态(Ready)进程已获得除处理机外的所需资源,等待分配处理机资源;只要分配处理机就可执行。
- 阻塞状态(Blocked)由于进程等待I/О操作或进程同步等条件而暂停运行时处于阻塞状态。在条件满足之前,即使把处理机分配给该进程,也是无法继续执行的。
创建状态(New)
进程正在创建过程中,还不能运行。操作系统在创建状态要进行的工作包括分配和建立进程控制块表项、建立资源表格(如打开文件表)并分配资源,加载程序并建立地址空间表等。结束状态(Exit)
进程已结束运行,回收除进程控制块之外
的其他资源,并让其他进程从进程控制块中收集有关信息(如记账和将退出代码传递给父进程)。
状态转换
下面是五状态进程模型中的主要状态转换。
(1)创建进程:创建一个新进程,以运行一个程序。
(2)提交(Admit):完成一个新进程的创建过程,新进程进入就绪状态。由于性能、内存、进程总数等原因,系统会限制并发进程总数。
(3)调度运行(Dispatch) :从就绪进程表中选择一个进程,进入运行状态。
(4)释放(Release) :由于进程完成或失败而终止进程运行,进入结束状态。为了简洁,状态变迁图中只画出了运行状态到结束状态间的释放转换;但实际上,还存在从就绪状态或阻塞状态到结束状态的释放转换。
运行到结束的转换可分为正常退出(Exit)和异常退出( abort ) ;其中异常退出是指进程执行超时,内存不够、非法指令或地址访问、I/О操作失败、被其他进程所终止等原因而退出。可能导致从就绪或阻塞到结束转换的可能是由于多种原因引发的,如父进程可在任何时间终止子进程。
(5)超时(Timeout):由于用完时间片或高优先级进程就绪等原因导致进程暂停运行。
(6)事件等待(Event Wait) :进程要求的事件未出现而进入阻塞;可能的原因包括:申请系统服务或资源、通信、I/O操作等。
(7)事件出现(Event Occurs):进程等待的事件出现;如:操作完成、申请成功等。
七状态模型
五状态进程模型没有区分进程地址空间位于内存还是外存,而在操作系统中引入虚拟存储管理技术后,需要进一步区分进程的地址空间状态。该问题的出现是由于进程优先级的引入,一些低优先级进程可能等待较长时间,从而被对换至外存。
与五状态进程模型相比,七状态进程模型把原来的就绪状态和阻塞状态
进行了细分,增加了就绪挂起
和阻塞挂起
两个状态。这时原来的就绪状态和阻塞状态的意义也发生了一些变化。
- 就绪状态(Ready):进程在内存且可立即进入运行状态
- 就绪挂起状态(Ready , Suspend):进程在外存,但只要进入内存,即可运行
- 阻塞状态(Blocked ):进程在内存并等待某事件的出现
- 阻塞挂起状态(Blocked , Suspend):进程在外存并等待某事件的出现
状态转换
挂起( Suspend):把一个进程从内存转到外存;可能有以下几种情况:
- 阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程。
- 就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程。
- 运行到就绪挂起:对抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进人就绪挂起时,系统可能会把运行进程转到就绪挂起状态。
激活( Activate):把一个进程从外存转到内存;可能有以下几种情况:
- 就绪挂起到就绪;就绪挂起进程优先级高于就绪进程或没有就绪进程时,会进行这种转换。
- 阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起进程激活,系统认为会很快出现该进程所等待的事件。
事件出现(Event Occurs):进程等待的事件出现;如操作完成、申请成功等;可能的情况有:
- 阻塞到就绪:针对内存进程的事件出现。
- 阻塞挂起到就绪挂起:针对外存进程的事件出现。
提交(Admit) :完成一个新进程的创建过程,新进程进入就绪状态或就绪挂起状态。进入就绪挂起的原因是系统希望保持一个大的就绪进程表(挂起和非挂起)。
微信关注