进程管理

前趋图和程序执行

1.程序顺序执行时的特征

  • 顺序性:处理机的操作严格按照程序所规定的顺序执行
  • 封闭性:程序一旦开始执行,其执行结果不受外界因素影响
  • 可再生性:程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关。

2.前驱图

  • 前驱图是一个有向的无循环图。
    在这里插入图片描述

3.程序并发执行的特征

  • 间断性:相互制约将导致并发程序具有“执行—暂停—执行”这种间断性的活动规律。
  • 失去封闭性:程序在并发执行时,系统的资源状态由多道程序来改变,程序运行失去封闭性。程序的运行受到其他程序的影响。
  • 不可再现性:程序在并发执行时,多次运行初始化条件相同的同一程序会得出不同的运行结果。

进程的描述

1.进程的定义

进程:程序关于某个数据集合的一次执行过程。

2.进程的特征

  • 结构特征

    进程控制块(PCB)+程序+数据=进程实体

  • 动态性——最基本特征

    进程:进程实体的一次执行过程,有生命周期
    程序:程序是一组有序指令的集合,是静态的概念

  • 并发性
  • 独立性
  • 异步性

    进程按各自独立的、不可预知的速度向前推进

3.基础的三种基本状态

  • 就绪状态(Ready):进程已获取除CPU之外的所有必须的资源,一旦得到CPU控制权,立即可以运行。
  • 运行状态(Running):进程已获得运行所必需的资源,它正在处理机上执行
  • 阻塞状态(Blocked):正在执行的进程由于发生某种事件而暂时无法执行时,便放弃处理机而暂处于暂停状态,称该进程处于阻塞状态或等待状态。
    在这里插入图片描述

4.挂起状态

1)引起挂起状态的原因:

  • 终端用户的请求
  • 父进程请求
  • 负荷调节的需要
  • 操作系统的需要

2)进程状态的转换

  • 活动就绪→静止就绪
  • 活动阻塞→静止阻塞
  • 静止就绪→活动就绪
  • 静止阻塞→活动阻塞
    在这里插入图片描述

5.进程控制块

  • 进程控制块的作用

    存放进程管理和控制的数据结构称为进程控制块。它是进程管理和控制的最重要的数据结构,在创建时,创建PCB,并伴随进程运行的全过程,直到进程撤销而撤销。

    PCB就像我们的户口
    PCB时进程存在的唯一标志

  • 进程控制块中的信息

    进程标识符

    每个进程都必须有一个唯一的标识符
    1)内部标识符
    2)外部标识符

    处理机状态

    主要由处理机的各种寄存器中的内容组成。处理机运行时的信息存放在寄存器中,当被中断时这些信息要存放在PCB中。

    进程调度信息

    进程状态
    进程优先级
    进程调度所需的其他信息
    事件

    进程控制信息

    程序和数据的地址
    进程通信和同步机制
    资源清单
    链接指针

  • 进程控制块的组织方式

    链接方式

    把具有统一状态的PCB用其中的链接字链接成一个队列。
    1)就绪队列
    2)若干个阻塞队列

    索引方式

    系统根据所有进程的状态建立几张索引表,把各表的内存首地址记录在内存的专用单元中

进程控制

进程控制是系统中的全部进程实施有效的管理,包括进程创建、终止、进程阻塞和唤醒。

1.进程的创建

  • 进程图:描述进程的家族关系的有向树

  • 引起进程创建的事件

    1)用户登录
    2)作业调度
    3)提供服务
    4)应用请求

    提示:原语是由若干个指令组成,能够完成一定功能的程序段。

  • 进程的创建:操作系统发现要求创建新进程的事件后,调用进程创建原语Creat()创建新进程,步骤如下:

    1)申请空白PCB
    2)为新进程分配资源
    3)初始化进程控制块
    4)将新进程插入就绪队列

2.进程的终止

  • 引起进程终止的事件

    1)正常结束
    2)异常结束:越界错误、非法指令、运行超时等
    3)外界干预:操作员或操作系统干预、父进程请求、父进程终止

  • 进程的终止过程

    1)找出被终止进程的PCB
    2)若进程状态为运行态,立即终止该进程的执行,置CPU调度标志为真
    3)若该进程还有子孙进程,终止其子孙进程并回收其资源
    4)回收被终止进程所拥有的全部资源
    5)回收终止进程的PCB

3.进程的阻塞与唤醒

  • 引起进程阻塞和唤醒的事件

    1)请求系统服务
    2)启动某种操作
    3)新数据尚未到达
    4)无心工作可做

  • 进程阻塞过程

    1)调用阻塞原语阻塞自己
    2)将PCB 中的状态改为阻塞,并加入阻塞队列
    3)转进程调度

  • 进程唤醒过程

    阻塞进程等待的事件发生,有关进程调用唤醒原语wakeup()唤醒等待该事件的进程

    1)把阻塞进程从等待该事件的阻塞队列中移出
    2)置进程状态为就绪态,将PCB插入到就绪队列中

4.进程的挂起与激活

  • 进程的挂起

当出现引起进程挂起的事件时,系统利用挂起原语suspend()将指定进程或处于阻塞的进程挂起。

进程挂起的过程:检查被挂起进程的状态
1)若处于活动就绪,则改为静止就绪
2)若处于活动阻塞,则改为静止阻塞
3)若挂起的进程正在执行,则重新进行进程调度
在这里插入图片描述

  • 进程的激活

    当发生激活进程的事件时,系统利用激活原语active()将指定进程激活

    进程激活过程
    1)激活原语先将进程从外存调入内存
    2)检查该进程的状态
    若为静止就绪,则改为活动就绪
    若为静止阻塞,则改为活动阻塞

进程同步

1.进程同步的基本概念

  • 进程间两种形式的制约关系

    1)间接相互制约关系——源于资源共享
    2)直接相互制约关系——源于进程合作

  • 临界资源

    临界资源(Critical Resource):把一段时间内只允许一个进程访问的资源称为临界资源或独占资源
    临界区(Critical Section):每个进程中访问临界资源的那段代码称为临界区

  • 同步机制应遵循的规则

    空闲让进
    忙则等待
    有限等待
    让权等待

2.信号量机制

信号量就是OS提供的管理公有资源的有效手段
信号量代表可用资源实体的数量
  • 整形信号量

    定义:把整形信号量定义为一个用于表示资源数目的整形量S,除初始化外,仅能通过两个标准的原子操作wait(S),signal(S)来访问
    在这里插入图片描述

  • 记录型信号量(重点)

    引入整形变量value(代表资源数目)、进程链表L(链接所有等待进程)
    在这里插入图片描述

  • AND型信号量

    两个进程A和B,共享数据D和E,为其分别设置互斥信号量Dmutex和Emutext,初始值均为1
    在这里插入图片描述

    AND同步机制的基本思想:将进程在整个运行过程中需要的所有资源,一次性全部分配给进程,待进程使用完再一起释放。只要有一个资源未分配给进程,其他所有可能为之分配的资源,也不分配给它。即对临界资源的分配采用原子操作。称为同时wait()操作即Swait()。
    在这里插入图片描述

  • 信号量集

    记录型信号量机制:
    1)每次只能获得或释放一个单位的资源,低效
    2)每次分配前必须测试资源数量,看其是否大于其下界值对AND信号量机制加以扩充
    在这里插入图片描述
    在这里插入图片描述

    一般信号量集的几种特殊情况:
    1)Swait(S,d,d),只有一个信号量S,允许每次申请d个资源,若现有资源数少于d,不予分配
    2)Swait(S,1,1),蜕化为一般的记录型信号量(S>1时)或互斥信号量(S=1时)
    3)Swait(S,1,0),当S>=1时,允许多个进程进入某特定区,当S变成0后,阻止任何进程进入特定区,相当于可控开关。

3.信号量的应用

  • 利用信号量实现进程互斥

    为使多个进程互斥的访问某临界资源,须为该资源设置一互斥信号量mutex,并设其初始值为1,然后将个进程访问资源的临界区CSwait(mutex)和signal(mutext)之间即可。
    在这里插入图片描述

  • 利用信号量实现前驱关系

    设有两个并发执行的进程P1和P2,P1中有语句S1,P2中有语句S2,希望再S1执行后再执行S2。
    使进程P1和P2共享一个公用信号量S,并赋予其初值为0。
    在这里插入图片描述

    代码实现在这里插入图片描述
    在这里插入图片描述

  • 利用记录型信号量实现同步

    P1,P2两进程因合作完成一项任务而共用一个变量x。
    进程P2将处理结果送入x;进程P1将x的 结果打印
    在这里插入图片描述

经典进程的同步问题

1.生产者—消费者问题

在这里插入图片描述

1.利用记录型信号量解决生产者—消费者问题
可利用互斥信号量mutex实现进程对缓冲池的互斥使用;
利用信号量empty和full分别表示缓冲池中空缓冲池和满缓冲池的数量。
在这里插入图片描述

2.利用AND信号量解决生产者—消费者问题
在这里插入图片描述

2.哲学家进餐问题

在这里插入图片描述
在这里插入图片描述

1.至多只允许有四位哲学家同时拿他左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用完时释放出他用过的两只筷子,从而使更多的哲学家能够进餐。
在这里插入图片描述

2.仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐。
利用AND信号量机制解决,在哲学家进餐问题中,要求每个哲学家先获得两个临界资源后方能进餐。本质上是AND同步问题。
在这里插入图片描述

3.规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子,而偶数号哲学家则相反
在这里插入图片描述

3.读者—写者问题

在这里插入图片描述

1.利用记录信号量
互斥信号量wmutex: 实现Reader与Writer进程间在读或写时的互斥,整型变量Readcount: 表示正在读的进程数目;
由于只要有一个Reader进程在读,便不允许Writer进程写。所以,仅当Readcount=0,即无Reader进程在读时,Reader才需要执行Wait(wmutex)操作。若Wait(wmutex)操作成功,Reader进程便可去读,相应地,做Readcount+1操作。
同理,仅当Reader进程在执行了Readcount减1操作后其值为0时,才需执行signal(wmutex)操作,以便让Write进程写
互斥信号量rmutex: Reader进程间互斥访问Readcount
在这里插入图片描述

2.利用信号量集机制
在这里插入图片描述
在这里插入图片描述

进程通信

进程通信:指进程之间的信息交换

  • 低级通信:进程间仅交换一些状态和少量数据。如进程之间的互斥和同步。
    信号量机制作为通信工具的缺点 :
    1)效率低
    2)通信对用户不透明
  • 高级通信:进程间可交换大量数据。用户可直接利用操作系统提供的一组通信命令,高效地传送大量数据的一种通信方式。
    操作系统隐藏了进程通信的细节,对用户透明,减少了通信程序编制上的复杂性。

1.进程通信的类型

1)共享存储器系统
在这里插入图片描述
在这里插入图片描述

2)消息传递系统
在这里插入图片描述

3)管道通信系统
在这里插入图片描述

4.客户机—服务器系统

2.消息传递通信的实现方法

进程间通信时,源进程可以直接间接地将信息传送给目标进程,由此可将进程通信分为直接通信和间接通信。

  • 直接通信方式:发送进程利用OS提供的发送命令,直接把消息发送给目标进程。发送进程和接收进程都以显式方式提供对方的标识符。在这里插入图片描述

2.间接通信方式—通过信箱通信
信箱用来暂存发送进程发送给目标进程的消息,接收进程则从信箱中取出发送给自己的消息。
消息在信箱中可安全保存,只允许核准的目标用户随时读取利用信箱通信方式,既可实时通信,又可非实时通信。
在这里插入图片描述
在这里插入图片描述

3.消息传递系统实现中的若干问题

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.消息缓冲队列通信机制

线程的基本概念

1.线程的引入

  • 进程的两个基本属性

    1)进程是一个可以拥有资源的独立单位
    2)进程是一个可以独立调度和分配的基本单位
    由此,是进程成为了能独立运行的基本单位,构成了进程并发执行的基础

  • 程序并发执行所需付出的时空开销

    进程拥有资源是进程的创建、撤销和调度付出较大的时空开销。这就限制了系统中所设置进程的数目, 而且进程切换也不宜过于频繁,从而限制了并发程度的进一步提高。
    因此,将进程的两个属性有系统分开处理,用线程作为独立调度和分配的基本单位

  • 线程—作为调度和分配的基本单元

    1)轻型实体
    2)独立调度和分派的基本单元
    3)可并发执行
    4)共享进程资源

2.线程与进程的比较

  • 线程具有许多传统进程所具有的特征,所以称之为轻型进程。可通过以下几个方面对进程和线程进行比较

    1)调度的基本单位
    2)并发性
    3)拥有资源
    4)独立性
    5)系统开销
    6)支持多处理机系统

3.线程的状态和线程控制块

  • 线程运行的三个状态

    1)执行状态
    2)就绪状态
    3)阻塞状态

  • 多线程控制块TCB

    线程控制块TCB,用于记录所有用于控制和管理线程的信息

  • 多线程OS中的进程属性

    1)进程是一个可拥有资源的基本单位
    2)多个线程可并发执行
    3)进程已不是可执行的实体

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值