DayDayUp02:进程的描述与控制

引言:作为资源分配和独立运行的基本单位都是进程。OS所具有的四大特征也都是基于进程而形成的。

前趋图和程序执行

  • 前趋图:有向无循环图DAG(Directed Acyclic Graph),即单项不循环图。用于描述进程之间执行的先后顺序。Pi—>Pj,表示进程Pi和Pj存在着前趋关系,表示在Pj开始执行之前Pi必须完成。Pi是Pj的直接前趋,Pj是Pi的直接后继。没有前趋的结点称为初始结点,没有后继的结点称为终止结点。每个结点还具有一个重量,用于表示该结点所含有的程序量或程序的执行时间
  • 程序的顺序执行
    • 程序的顺序执行:i.e. I1—>C1—>P1—>I2—>C2—>P2…
    • 程序顺序执行时的特征:
      • 1、顺序性:每一操作必须在下一操作开始前结束
      • 2、封闭性:程序运行时独占全机资源(互斥共享方式),执行结果不受外界因素影响
      • 3、可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,无论以何种执行方式都可获得相同的结果。
  • 程序的并发执行
    • 程序的并发执行:只有在不存在前趋关系的程序之间才有可能并发执行。
    • 程序并发执行的特征:
      • (1)间断性:程序并发执行,由于共享系统资源,致使在这些并发执行的程序之间形成了相互制约的关系,将导致并发程序具有“执行——暂停——执行”这种间断性的活动规律
      • (2)失去封闭性:执行结果受影响,其环境都必然受到其他程序的影响。
      • (3)不可再现性:由于失去了封闭性,其计算结果必将与并发程序执行速度有关,从而使程序失去了可再现性。换言之,程序经过多次执行后,虽执行时的环境和初始条件相同,但得到的结果却各不同。这是与异步性的区别!

进程的描述

  • 进程的定义和特征
    • 1、进程的定义:为了使程序并发执行,并可以对并发执行的程序加以描述和控制,人们引入了“进程”概念。为了使参与并发执行的每一个程序(含数据)都能独立地运行,在OS中必须为之配置一个专门的数据结构——进程控制快PCB(Process Control Block)。
      进程实体(又称进程映像):程序段、相关的数据段和PCB
      实质上创建进程就是创建进程实体中的PCB;撤销进程就是撤销进程的PCB。
      这里概括一下进程的终极定义:进程是系统进行资源分配和调度的一个独立单位。
    • 2、进程的特征:
      • (1)动态性:进程的实质是进程实体的执行过程。由创建产生,由调度执行,由撤销消亡。进程实体有一定的生命周期,程序只是一组有序指令的集合,是静态的
      • (2)并发性:多个进程实体同存于内存中,且能在一段时间内同时运行。而程序(没有建立PCB)是不能参与并发执行的
      • (3)独立性:进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行
      • (4)异步性:各自独立,以不可预知的速度推进,结果是可再现的
  • 进程的基本状态及转换
    • 进程的三种基本状态:

      • 1、就绪(Ready)状态:进程已分配到除CPU以外的所有必要资源,只要再获得CPU,即可立即执行。如果系统中有许多处于就绪状态的进程,通常将它们按照一定策略排成一个队列,该队列称为就绪队列
      • 2、执行(Running)状态:进程已获得CPU,其程序正在执行状态
      • 3、阻塞(Block)状态:正在执行的进程由于发生某事件暂时无法继续执行时的状态,将处于阻塞状态的进程也排成一个队列,其称为阻塞队列
      • 在这里插入图片描述
      • 在这里插入图片描述
    • 三种状态的基本转换:i.e. 正在执行的进程因分配给它的时间片用完而剥夺处理机暂停执行时,其状态转换为就绪;在调度程序为之分配了处理机后,其状态转为执行态;因资源被其他进程访问时,使之无法继续执行,则由执行转为阻塞

    • 创建状态和终止状态:为满足进程控制快PCB对数据及操作的完整性要求以及增强管理的灵活性

      • 1、创建状态:引入创建状态是为了保证进程的调度必须在创建工作完成后进行,确保对进程控制快操作的完整性。对于处于创建状态的进程,当其获得所需资源以及PCB初始化工作完成后,可由创建状态转换为就绪状态
      • 2、终止状态:将PCB清零并将PCB空间返还系统
        在这里插入图片描述
                                 进程的五种基本状态及转换
  • 挂起操作和进程状态的转换:为了系统和用户观察和分析进程的需要,引入挂起操作,与其对应的是激活操作
    • 1、挂起操作引入的原因:

      • (1)终端用户的需要
      • (2)父进程请求
      • (3)负荷调节的需要
      • (4)OS的需要
        在这里插入图片描述
    • 2、引入挂起原语操作后三个进程状态的转换
      引入挂起原语Suspend和激活原语Active

      • (1)活动就绪—>静止就绪
      • (2)活动阻塞—>静止阻塞,当其所期待的事件出现后,将由静止阻塞变为静止就绪
      • (3)静止就绪—>活动就绪
      • (4)活动就绪—>活动阻塞
        在这里插入图片描述
                        具有挂起状态的进程状态图
    • 3、引入挂起操作后五个进程状态的转换

      • (1)NULL —> 创建
      • (2)创建 —> 活动就绪:参与调度
      • (3)创建 —> 静止就绪:不分配资源,被置于外存,不参与调度
      • (4)执行 —> 终止
        在这里插入图片描述
                                    具有创建、终止和挂起状态的进程状态图
  • 进程管理中的数据结构 :用户可利用这些数据结构及操作命令来执行相关操作,而无需关心实现的具体细节;OS对记录和查询各种资源的使用以及各类进程运行情况的具体细节的信息的组织和维护也是通过建立和维护各种数据结构的方式来实现的
    • 1、OS中用于管理控制的数据结构:内存表、设备表、文件表、用于进程管理的进程表(PCB)
    • 2、进程控制块PCB作用
      • (1)作为独立运行基本单位的标志
      • (2)能实现间断性运行方式:能保留运行时的CPU现场信息
      • (3)提供进程管理所需要的信息
      • (4)提供进程调度所需信息:了解进程所处的状态…
      • (5)实现与其他进程的同步与通信:与诸进程协调运行
    • 3、进程控制块中的信息
      • 1)进程标识符:用于唯一标识一个进程。有外部标识符和内部标识符(唯一的数字标识符,通常是一个进程的序号)
      • 2)处理机状态:也称处理机的上下文,主要由处理机的各种寄存器中的内容组成。寄存器包括:通用寄存器、指令计数器、程序状态字PSW、用户栈指针
      • 3)进程调度信息:进程状态、进程优先级、进程调度所需其他信息、事件(阻塞原因)
      • 4)进程控制信息:程序和数据的地址、进程同步和通信机制、资源清单、链接指针
    • 4、进程控制块的组织方式:
      • (1)线性方式:将所有PCB都组织在一张线性表中,方式实现简单、开销小。每次查找时都需要扫描整张表,只适合进程不多的系统
      • (2)链接方式:把具有相同状态进程的PCB分别通过链接字链接成一个队列,按优先级将PCB从高到低进行排序,高者在前
      • (3)索引方式:建立多张索引表,每个索引表中记录相应状态的某个PCB在PCB表的地址

进程控制:一般由OS内核中的原语来实现

  • OS的内核(运行频率较高):常驻于内存
    • 处理机的执行状态:系统态(管态、内核态)、用户态(目态)
    • 1、支持功能:中断处理、时钟管理、原语操作(在执行过程中不允许被中断)
    • 2、资源管理功能:进程管理、存储器管理、设备管理
  • 进程的创建
    • 1、进程的层次结构:子进程可以继承父进程所拥有的资源,但在windows中不存在任何进程层次结构的概念
    • 2、进程图:用于描述进程间关系的一棵有向树
    • 3、引起创建进程的事件:
      • (1)用户登录
      • (2)作业调度
      • (3)提供服务
        以上三种是内核创建的
      • (4)应用请求(用户自创)
    • 4、进程的创建:
      • (1)申请空白PCB,申请获得唯一的数字标识符
      • (2)为新进程分配其运行所需的资源
      • (3)初始化进程控制块PCB:初始化标识信息、初始化处理机状态信息、初始化处理机控制信息。
  • 进程的终止
    • 1、引起进程终止的事件
      • (1)正常结束,产生一个中断
      • (2)异常结束
      • (3)外界干预
    • 2、进程的终止过程:读PCB、设置调度标志、终止子孙进程、归还资源、从队列(链表)移出
  • 进程的阻塞与唤醒
    • 1、引起进程阻塞和唤醒的事件:
      • (1)向系统请求共享资源失败,系统无足够资源分配给该进程
      • (2)等待某种操作的完成
      • (3)新数据尚未到达
      • (4)等待新任务的到达
    • 2、进程阻塞过程(调用阻塞原语block)
    • 3、进程唤醒过程(调用唤醒原语wakeup)
  • 进程的挂起与激活
    • 1、进程的挂起(调用挂起原语suspend)
    • 2、进程的激活(调用激活原语active):将进程从外存调入内存,检查该进程的现行状态,并根据优先级比较考虑是否重新调度

进程同步

  • 进程同步的基本概念:对多个相关进程在执行次序上进行协调,从而使程序的执行具有可再现性
    • 1、两种形式的制约关系
      • (1)间接相互制约关系
      • (2)直接相互制约关系
    • 2、临界资源(如打印机、磁带机):相关著名进程同步问题——生产者—消费者问题
    • 3、临界区:
      while(TRUE)
      {
      进入区
      临界区
      退出区
      剩余区
      }
    • 4、同步机制应遵循的规则:空闲让进、忙则等待、有限等待(避免死等)、让权等待
  • 硬件同步机制
    • 1、关中断
    • 2、利用Test-and-Set指令实现互斥
    • 3、利用Swap指令实现进程互斥
  • 信号量机制:整型信号量、记录型信号量(采用让权等待机制)、AND型信号量(针对共享多资源的进程)、信号量集(设置资源的分配下限值)
  • 信号量的应用
    • 1、利用信号量实现进程互斥
    • 2、利用信号量实现前趋关系
  • 管程机制:
    • 1、管程的定义:代表共享资源的数据结构以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成了一个操作系统的资源管理模块
      管程与进程的异同点:
      同:都定义了数据结构,存在对各自数据结构上的操作
      异:进程定义的是私有数据结构PCB,管程定义的是公有数据结构;进程进行顺序程序执行,管程进行同步操作和初始化操作;进城为了实现系统并发性,管程为了解决共享资源的互斥使用问题;进程为主动工作方式,管程被动;进程之间能并发执行,进程具有动态性
    • 2、条件变量condition:也是一种抽象数据类型,每个条件变量保存了一个链表。用于解决进程调用了管程,在管程中被阻塞或挂起,这段期间进程不释放管程导致其他进程无法进入管程,被迫长时间等待的过程等问题。

经典进程的同步问题

  • 生产者—消费者问题
  • 哲学家进餐问题
  • 读者—写者问题

进程通信

其实我在这篇博客上写过关于线程的知识点,不料今天这一打开竟然这一块的知识都不见了,可能是我关浏览器的时候忘保存了吧,以后要是遇到关于线程的知识我会再写一篇的,我感到又难受又抱歉,我以后一定会写完就及时保存文章的!!!

如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,明天我们不见不散!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值