操作系统 二(进程管理)

一、进程的定义及特征

  1. 进程的定义

由程序、数据、进程控制块三部分组成

为了使程序可以并发执行,且可以对并发执行的程序加以描述和控制。

不同角度的定义:

进程是程序的一次执行

进程是一个程序及其数据在处理机上顺序执行时所发生的活动;

进程是系统进行资源分配和调度的一个独立单位

传统OS中的进程定义为:

进程是程序的执行过程,是系统进行资源分配和调度的一个独立单位。

为使参与并发执行的每个程序(含数据)都能独立地运行,在OS中为之配置一个专门的数据结构,称之为 进程控制块(PCB)

  1. 进程的特征

具有程序没有的PCB

动态性(最基本)

并发性:多个进程共存于内存中,能在一段时间内同时执行。

独立性:是一个能够独立执行、独立获得资源、独立接受调度的基本单位。

异步性:按各自独立、不可预知的速度向前推进。

二、进程三态及转换、五态和七态图

(一)三态及转换

三态:

运行态:进程占有CPU,并在CPU上运行

就绪态:一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当

调度给其CPU时,立即可以运行)

等待态:进程因等待某种事件的发生而暂时不能运行的状态(即使CPU空闲,该进程也不可运行)

  1. 进程状态转换:

在进程运行过程中,由于进程自身进展情况及外界环境的变化,这三种基本状态可以依据一定的条件相互转换

就绪-->运行:

调度程序选择一个新的进程运行

运行-->就绪:

运行进程用完了时间片

运行进程被中断,因为一高优先级进程处于就绪状态

运行-->等待:

当一个进程必须等待时:

操作系统尚未完成服务

对一资源的访问尚不能进行

初始化I/O 且必须等待结果

等待某一进程提供输入 (IPC)

等待-->就绪:

当所等待的事件发生时

  1. 五态模型

  1. 进程挂起:

(1)由于进程的不断创建,系统的资源已经不能满足进程运行的要求,这个时候就必须把某些进程挂起(suspend),对换到磁盘镜像区中,暂时不参与进程调度,起到平滑系统操作负荷的目的。

挂起进程被换出内存,不参与进程调度直到它们被对换进主存。

(2)挂起进程具有如下特征:

该进程不能立即被执行

进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行

结束进程挂起状态的命令只能通过操作系统或父进程发出

(3)引起进程挂起的原因有:

①操作系统中的进程均处于等待状态,处理器空闲,此时需要把一些进程对换出去,以腾出②足够的内存装入就绪进程运行

③进程竞争资源,导致系统资源不足,负荷过重,此时需要挂起部分进程以调整系统负荷

④把一些定期执行的进程(如审计程序、监控程序、记账程序)对换出去,以减轻系统负荷

用户要求挂起自己的进程,以根据中间执行情况和中间结果进行某些调试、检查和改正

  1. 七态图

三、PCB

一 .PCB的定义、作用

  1. 定义

系统为了管理进程设置的一个专门的数据结构,记录进程的外部特征,描述进程的运动变化过程

系统利用PCB来控制和管理进程

PCB是系统感知进程存在的唯一标志

进程与PCB是一一对应的

  1. 作用

PCB是OS中最重要的记录型数据结构

①作为独立运行基本单位的标志

②实现间断性运行方式

③提供进程管理所需要的信息

④提供进程调度所需要的信息

⑤实现与其他进程的同步与通信

二.PCB结构体包含的内容

  1. 进程描述信息

进程标识符,唯一,通常是一个整数

进程名,通常基于可执行文件名(不唯一)

用户标识符

进程组关系

  1. 进程控制信息

当前状态;优先级;代码执行入口地址;程序的外存地址;

运行统计信息(执行时间、页面调度);进程间同步和通信;阻塞原因

进程的队列指针;进程的消息队列指针

  1. 所拥有的资源和使用情况

虚拟地址空间的现状;打开文件列表

  1. CPU现场保护信息

寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针)

指向赋予该进程的段/页表的指针

三. PCB的组织方式

  1. 线性方式

所有PCB组织在一个连续的表中

  1. 索引方式

对具有相同状态的进程,分别设置各自的PCB索引表,表明PCB在PCB表中的地址

  1. 链接方式

同一状态进程的PCB组成一个链表,不同状态对应多个不同的链表

就绪链表、阻塞链表

四、进程的创建与终止

一 创建

  1. 申请空白PCB

  1. 为新进程分配其运行所需资源

  1. 初始化PCB,分配一个唯一的进程标识符,初始化PSW

  1. 新进程插入就绪队列

  1. 通知OS的某些模块

二.终止

  1. 根据进程标识符,找到它的PCB

  1. 将该进程拥有的资源归还给父进程或OS

  1. 该进程拥有子进程,先撤销所有子孙进程

  1. 被撤销的进程出队,归还PCB

五、同步、互斥

  1. 同步

直接相互制约。一个进程运行到某一点时要求另一进程为它提供消息,未获得消息则一直等待,获得消息被唤醒进入就绪。

  1. 互斥

间接相互制约。各进程要求共享资源,有些资源需要互斥使用,各进程竞争使用这些资源。

临界资源:某些资源一次只允许一个进程使用。

临界区:在进程中涉及到临界资源的程序段

使用临界资源的原则:用空让进、无空等待、多中择一、有限等待、让权等待

六、信号量及物理意义、P V操作

(生产者-消费者、读者-写者)

一 .信号量

一个数据结构,值仅能由P、V原语改变

structsemaphore 
{ 
int value; 
pointer_PCBqueue; 
}

物理意义:

S>0:表示有|S|个资源可用

S=0:无资源可用

S<0:S等待队列中的进程个数

P(S):申请一个资源

V(S):释放一个资源

信号量初值大于0

二.P、V

  1. P操作:

P(S){
S = S - 1;
if ( S < 0){
该进程状态置为等待状态;
将该进程的PCB插入相应的等待队列末尾;
}
}
  1. V操作

V(S){
S = S + 1;
if (S < =0){
唤醒相应等待队列中等待的一个进程;
改变其状态为就绪态,并将其插入就绪队列;
}
}
  1. P,V操作必须成对出现

互斥时,它们处于同一进程中

同步时,它们不在同一进程中

同步的P操作在互斥P操作前

七、生产者-消费者问题

两个信号量(表示缓冲区状态):

P进程不能往“满”的缓冲区中放产品,设置信号 量 empty,初值为 1; Q进程不能从“空”的缓冲区中取产品,设置信号量 full,初值为 0

一个(保障互斥):mutex(1)

n个缓冲区、m个生产者、k个消费者

八、读者-写者问题

互斥的思想解决同步问题。读写互斥,写者之间互斥

解法:

如果写者进程先进,第一个读者会等待在write信号量上,第二个及以后的读者会等待在mutex上,因为mutex计数器未释放。

九、高级通讯原语

共享内存、消息传递、管道通信

十、线程

线程的定义:

线程是操作系统进程中能够独立执行的指令序列 (控制流),是处理器调度和分派的基本单位。线程是进 程的组成部分,每个进程内允许包含多个并发执行的 指令序列(控制流) 。

共享同一个私有内存地址空间 l 共享所有外设资源 l 线程之间没有保护机

线程实现方式(论述分析)

  1. 内核支持线程KST

优点:

①多cpu,内核可以调度同一进程中的多个线程并行运行。

②若进程中一个线程被阻塞,内核可以调度进程中的其他线程占用处理机运行,也可运行其他进程中的线程。

③切换开销小

④内核也可采用多线程技术,提高系统执行速度和效率

缺点:

①对对用户的线程切换开销较大

②同一进程中,从一个线程切换到另一线程需要从用户态转到内核态进行。

  1. 用户级线程ULT(功能无须内核支持)

优点:

①线程切换不需要切到内核

②调度算法可以是进程专用

③实现与OS平台无关

缺点:

①线程执行一个系统调用时,进程内所有线程均会被阻塞。

②进程中仅有一个线程能执行

  1. 混合方式

ULT与KST的连接方式不同,分为 多对一模型、一对一模型、多对多模型

十一、进程调度

一 .三级调度

二. 调度与进程状态转换关系(论述分析)

三 .评价调度算法性能的指标

  1. 资源利用率

  1. 响应时间

  1. 周转时间

  1. 吞吐率

  1. 公平性

四.调度算法(综合应用、论述分析)

  1. FCFS (先来先服务)

按照作业进入系统的先后次序来挑选作业,先进 入系统的作业优先被挑选。 算法容易实现,效率不高,只顾及作业等候时间 ,没考虑作业要求服务时间的长短

有利于长作业,不利于短作业

FCFS调度算法的平均作业周转时间与作业提交的 顺序有关。

  1. SJF(短作业优先)

SJF算法以进入系统的作业所要求的CPU时间为标准 ,总选取估计计算时间最短的作业投入运行。 算法易于实现,效率不高,主要弱点是忽视了作业 等待时间 。会出现饥饿现象。

有利于短作业,不利于长作业

实现SJF调度算法需要知道作业所需运行时间, 否则调度就没有依据

  1. HRRN(最高相应比优先)

作业进入系统后的等待时间与估计运 行时间之比称作响应比

响应比=1+已等待时间/估计运行时间

短作业容易得到较高响应比, •长作业等待时间足够长后,也将获得足 够高的响应比 不会发生饥饿现象

  1. RR(时间片轮转)

十二、死锁

  1. 定义:如果在一个进程集合中的每个进程都在等待只能由该集合中的其他一个进程才能引发的事件,则称一组进程或系统此时发生了死锁。

  1. 四个必要条件

①互斥

②请求和保持条件:进程已经占有了一个资源,但又提出新的资源请求,该资源被其他进程占用,请求进程被阻塞,对自己已占有的资源不释放。

③不可抢占条件:进程已获得的资源在未使用完前不能被抢占。

④循环等待:形成等待环路

!!如何打破?

①打破“请求与保持”:

1、 一次性申请运行过程中所需全部资源

2、进程只获得运行初期所需的资源后,便开始运行。运行过程中逐步释放已分配给自己的、已用完的全部资源。

②打破“不可抢占”:

一个已经有了一些不可抢占资源的进程提出新的资源请求而不能得到满足时,必须释放已经保持的所有资源,以后需要时再申请。

③打破“循环等待”:

对系统所有资源类型进行线性排序,赋予它们不同的序号。

银行家算法(综合应用、论述分析)

避免死锁

缺点:对资源分配过于保守,计算太多,缺乏实用价值;

若所有客户都申请希望得到最大贷款额,而银行家无法满足任何一个要求则发生死锁。

死锁的检测与解锁(论述分析)

  1. 检测

①进程-资源分配图无环路,没发生死锁

②有环路,每个资源类中仅有一个资源,则死锁,环路是充要条件。

③资源类中有多个资源,环路是必要条件。

  1. 解锁

①结束所有进程的执行,重新启动操作系统。

②撤销死锁的所有进程。

③逐个撤销陷于死锁的进程,回收资源,直至死锁解除。

④剥夺死锁进程占用的资源,但不撤销,直至死锁解除。

⑤让所有进程回退,直至死锁解除。

⑥将未卷入死锁的进程建立一些新的抑制进程执行到结束。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值