文章目录
- 进程的描述与控制
-
-
- 2.1 前趋图与程序的执行
-
-
- 2.1.1 前趋图
- 2.1.2 程序的顺序执行
-
- 2.1.3 程序的并发执行
-
- 2.2 进程的描述
-
-
- 2.2.1进程的定义与特征
-
- 2.2.2 进程的基本状态及其转换
-
- 进程的三种基本状态
- 三种状态的转换
- 创建状态
- 终止状态
- 2.2.3 挂起操作和进程状态的转换
-
- 2.2.4 进程管理中的数据结构
-
- 2.3 进程控制
-
-
- 2.3.1 操作系统内核
-
- 2.3.2 进程的创建
-
- 2.3.3进程的终止
-
- 引起进程终止的事件
- 进程的终止过程
- 进程的阻塞和唤醒
进程的描述与控制
2.1 前趋图与程序的执行
2.1.1 前趋图
前趋图是指一个有向无循环图,它用于描述进程之间的执行顺序。图中每个节点可以表示一个进程或者程序段,
乃至一条语句,节点间的有向边则表示两个节点之间存在偏序或前趋关系。没有前趋的节点称为初始节点,没
有后继的节点称为终止节点。
前趋图不允许有循环!
如上图,有前趋关系P1->P2,P1->P3,P1->P4,P2->P5,P3->P5,P4->P6,P4->P7,P5->P8,P6->P8,P7->P9,P8->P9
2.1.2 程序的顺序执行
通常,一个程序由若干个程序段组成,每一个成程序段完成特定的功能,他们在执行时都需要按照某种先后次序
顺序执行,仅当当前一程序执行完之后,才执行后面的程序或程序段。
顺序执行的特征:
- 顺序性。处理机严格按照程序所规定的执行顺序
- 封闭性。程序执行时独占系统全部资源,因此,系统资源状态的改变只与当前执行的程序有关,而不受外界因素的影响
- 可再现性。只要初始条件相同,一个程序的多次重复执行会得到相同的结果
2.1.3 程序的并发执行
:是指两个或多个程序或程序段可在同一时间间隔内同时执行(微观上看,任意时刻cpu上都只有一个程序执行)
并发执行的特征
程序的并发执行极大的提高了系统的吞吐量和资源利用率,同时也产生了不同于顺序执行的新特征:
- 间断性。由于资源共享和相互合作,并发执行的程序间形成了相互制约的关系,导致程序运行过程中会出现“执行-暂停-执行”的现象
- 失去封闭性。程序在执行时与其他并发执行的程序共享系统资源,因此,资源状态的改变与其他程序有关,即程序本身的执行环境会受到外界程序的影响
- 不可再现性。同样的初始条件,一个程序运行多次可能会得到不同的执行结果
2.2 进程的描述
2.2.1进程的定义与特征
进程的并发执行产生的不可再先性,决定了通常程序是不能参与并发执行的。为了使程序能够正确的并发执行,
并且可以对并发的程序加以描述和控制,操作系统中引入了进程的概念,用进程来表示并发程序的执行。为了
使参与并发执行的每一个程序(含数据)都能独立的运行,在操作系统中必须为之配置一个专门的数据结构,
称为进程控制块(PCB),PCB,程序段,相关数据段三个部分构成一个进程实体(又称进程映像),简称进程。
进程的定义
下面是几个较为典型的:
- 进程是程序的一次执行
- 进程是一个程序及其数据在处理机上顺序执行是所发生的活动
- 进程是具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的基本单位特征
进程的特征:
- 动态性。动态性是进程最基本的特征。进程是程序的一次执行过程,因此是动态的。进程的动态性还表现在进程有一定生命周期,它必须由创建而产生,由调度而执行,由撤销而消亡。
- 并发性。并发性是指多个进程实体存在与内存中,并在一段时间内同时执行。并发是引入进程的目的,所以它也是进程最基本的特征。
- 独立性。进程实体是一个能够独立运行,独立接受调度,独立分配资源的基本单位。
- 异步性。进程可按各自独立,不可预知的速度向前推进。虽然进程具有异步性,但操作系统必须保证并发执行的结果具有可再现性。
2.2.2 进程的基本状态及其转换
进程的三种基本状态
- 就绪状态:进程已经分配到除了CPU之外的所以必备资源,只要获得CPU,就能立即执行。(如果系统中有许多就绪状态的进程,就按照一定的策略拍成一个队列,称为就绪队列)
- 执行状态:指进程已经获得CPU,其程序正在执行的状态。
- 阻塞状态:这是指正在执行的进程由于发生某事件(如I/O请求,申请缓冲区失败)暂时无法继续执行的状态。此时引起进程调度,操作系统把处理及分配给另一个就绪进程,从而让受阻进程处于暂停状态,一般称为阻塞状态,通常系统把阻塞进程排成一个队列,称为阻塞队列。只有等相应的事件完成后,才能去竞争CPU。
三种状态的转换
对于单个进程而言,任何时刻,它只能处于三种状态之一,而随着进程自身的推进和外界环境条件的变化,他的状态可以动态的转换。如下图:
创建状态
创建进程是通过创建原语完成的,被创建的进程叫做紫禁城,创建子进程的进程叫做父进程。
进程创建原语的主要任务是创建进程控制块PCB
进程创建的过程:
- 先从PCB集合中申请一个空白PCB
- 为进程分配内存等资源,并根据父进程提供的参数和分配到的资源的情况来对PCB进行初始化
- 将新进程插入就绪队列
终止状态
当进程完成任务或者遇到异常情况和外界干预需要结束时,应通过进程终止原语来终止进程。
进程终止的实质时收回PCB,具体过程如下:
- 找到要终止的进程的PCB
- 若该进程正在执行,则终止它的执行,,并设置重新调度标志
- 终止属于该进程的所有子进程
- 释放终止进程的全部资源
- 将终止进程移除它所在的队列并收回PCB
2.2.3 挂起操作和进程状态的转换
当该操作作用于某个进程时,该进程将被挂起,意味着此时进程处于静止状态。
如果进程正在执行,他将暂停执行。如果本来就处于就绪状态,那么此进程将
暂时不接受调度。与挂起操作对应的是激活操作。
挂起操作的引入
- 终端用户的需要。用户在运行自己程序时若想暂停自己的程序,可将其挂起使之停下来。
- 父进程请求。以便考察和修改子进程,或者协调各子进程之间的活动
- 负荷调节的需要。当实时系统的工作负荷较重,可能影响到实时任务的控制时,可由系统将不重要的进程挂起,以保证系统正常运行
- 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或者记账
引入原语操作后三个进程状态的转换
2.2.4 进程管理中的数据结构
进程控制块PCB
为了便于系统描述和管理进程的运行,在OS核心为每个进程专门定义一个数据结构——进程控制块。
PCB作为进程实体的一部分,记录了OS所需的,用于描述当前情况以及进程运行的全部信息,是OS
中最重要的记录型数据结构。
PCB的作用是将程序变成可并发执行的进程,PCB是进程存在的唯一标志。
当处理机被中断时,这些信息必须保存到PCB中,以便进行重新执行时能从断点处继续执行
进程控制块包含的信息
-
进程标识符。用于唯一的标识一个进程。一个进程通常有两种标识符:
(1)外部标识符:为了方便用户对进程的访问,需要为每一个进程设置一个外部标识符。由创建者提供,通常由数字,字母组成。
(2) 内部标识符。为了方便系统对进程的使用,在OS中又设置了内部标识符。赋予每一个进程唯一的数字标识符,它通常是一个进程的序号。
-
处理机状态:处理机状态信息也称处理机的上下文,主要由处理机的各种寄存器的内容组成,它用于CPU切换时保存现场信息和恢复现场信息。
-
进程调度信息:主要包括进程的状态优先级,等待和使用CPU的时间总和等信息,用作进程调度和对换的依据。
-
进程控制信息:具体包括程序和数据的地址,进程同步和同通信信息,资源清单和进程队列指针等。
在一个系统中,通常有许多PCB,他们构成PCB集合。为了方便管理,
系统通常用线性方式或者链接方式或者索引方式将这些PCB组织起来。
2.3 进程控制
进程控制是进程管理最基本的功能,主要包括创建新进程,终止已完成的进程,将因发生
异常情况而无法运行的进程至于阻塞状态,负责进程运行中的状态转换等功能。
进程控制一般是通过OS原语来实现的。
2.3.1 操作系统内核
为了防止OS本身及其关键数据遭到应用程序有意或者无意破坏,通常将处理机的执行状态分为系统态和用户态两种:
1.系统态:又称管态或者内核态,具有较高的特权,能执行一切指令,访问所有寄存器和存储区,传统的OS都在系统态运行。
2.用户态:又称为目态,具有较低特权的执行状态,仅能执行指定指令,访问指定的寄存器和存储区。
支撑功能
资源管理功能
- 进程管理:如进程的调度与分派,进程的创建与撤销
- 存储器管理:实现地址转换,内存分配与回收的功能,以及实现内存保护与对换功能
- 设备管理:对各类设备驱动程序的管理,用于缓和I/O与CPU速度不匹配的矛盾的缓冲管理等
2.3.2 进程的创建
导致一个进程去创建另一个进程的典型事件有分时系统的用户登录和批处理系统的作业调度.创建
进程是通过创建原语完成的,被创建的进程称为子进程,而创建子进程的进程称为父进程。子进
又可以继续创建子进程,从而形成一个有向的进程树,即进程图。
进程的创建
进程创建原语的主要任务是创建进程控制块PCB。具体操作过程是:
- 先从PCB集合中申请一个空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB
- 为进程分配内存等资源,包括物理和逻辑资源。
- 根据父进程提供的参数和分配到的资源情况对PCB进行初始化
(1):初始化标识信息,将系统分配的标识符和父进程标识符填入PCB
(2):初始化处理机状态
(3):初始化处理机控制信息(进程状态)
- 如果进程就绪队列能接纳新进程,将进程插入就绪队列
引起创建进程的事件
- 用户登录。分时系统中,登陆成功后,系统将为该用户创建一个新进程,并把它插入就绪队列中。
- 作业调度。在多道批处理系统中,当作业调度程序按照一定算法调度到某个作业时,便将他们装入内存,为他们创建进程,并把他们插入就绪队列中。
- 提供服务。当用户程序提出请求时,系统将专门创建一个进程来提供用户所需要的服务
- 应用请求。
2.3.3进程的终止
引起进程终止的事件
- 正常结束。进程任务已完成,准备退出运行。
- 异常结束。(越界错,非法指令,保护错,特权指令错,运行超时,等待超时,算术运算错,I/O故障)
- 外界干预。是指进程应外界请求而终止(包括操作员或者操作系统干预,父进程请求,因父进程终止,所有子进程也应该结束。
进程的终止过程
- 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态
- 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标识为真,用于指示该进程终止后重新进行调度
- 若该进程还有子进程,还应终止它的所有子进程,以防子进程成为不可控程序
- 将被终止进程所拥有的全部进程,或者将他们归还给父进程,或者归还给系统
- 将被终止进程的PCB从所在队列中移除,等待其他程序来收集信息
进程的阻塞和唤醒
当正在执行的进程需要等待某种事件或本身无新工作做时,应调用阻塞原语将自己从执行
状态转换成阻塞状态。
具体过程:停止进程执行,将其状态改为阻塞状态,并把它的PCB插入相应的阻塞队列中。
当阻塞进程所等待的事件完成时,应调用唤醒原语将它从阻塞状态转换成就绪状态。
具体操作:在阻塞队列中移出该进程PCB,并将其设置为就绪状态,插入就绪队列中。
注:关于进程同步和消费者-生产者问题将在下一篇文章专门总结。
希望大家多多支持,小白在此给大家鞠躬了