处理器管理(进程、作业、PV操作、银行家算法)

进程的管理与调度

进程的概念

  • 定义:进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配、调度和保护的独立单位。
  • 创建方式系统程序模块统一创建;由父进程创建。
  • 进程的特性:动态性、并发性、独立性、制约性、异步性、结构性

进程和程序的区别

  • 进程更能真实第描述并非,程序不能;
  • 进程是由程序、数据和控制块三部分组成的;
  • 程序是静态的,进程是动态的;
  • 进程是有生命周期,有诞生有消亡,程序相对长久;
  • 一个程序可以对应多个进程,反之亦然;
  • 进程具有创建其他进程的功能,程序没有。

进程的状态与转换

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

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

等待态:因等待某种事件的发生而暂时不能运行的状态

进程控制块PCB

  • 进程控制块是操作系统为了管理进程而设置的一个数据结构,用来记录进程的外部特征,描述进程的运动变化过程。
  • PCB是系统感知进程存在的唯一标志,进程与PCB是一一对应的

通常包含如以下的信息:

  1. 进程标识符(唯一)
  2. 进程当前状态,通常同一状态的进程会被放到同一个队列;
  3. 进程的程序和数据地址;
  4. 进程资源清单。列出所拥有的除CPU以外的资源记录。
  5. 进程优先级。反应进程的紧迫程度
  6. CPU现场保护区。记录中断时的CPU状态
  7. 进程队列的PCB的链接字。
  8. 进程相关的其他信息。记账用的,如占用CPU多长时间等。

 作业的调度和管理

作业的概念

作业是用户一次计算过程中,或者一次事务处理过程中,要求计算机系统所做工作的总称。

作业和进程的区别

  • 作业是用户向计算机提交任务的任务实体。进程是完成用户任务的执行实体。
  • 一个作业可由多个进程组成,且必须至少由一个进程组成。反之不成立。
  • 作业的概念主要用在批处理系统中,进程的概念用在几乎所有的多道程序系统中。

作业调度算法

T周转时间=结束时间-进入时间

W带权周转时间=周转时间/估计运行时间

  • FCFS:先来先服务,按照作业提交的先后次序分派CPU
  • SJF:最短作业优先算法,对预计执行时间短的作业优先分派处理机,通常后来的短作业不抢先正在执行的作业(无抢占式);
  • SRTF:最短剩余时间优先算法,(抢占式SJF)如果新作业需要的CPU时间比当前正在执行的作业剩余下来还需CPU的时间短,SRTF强行赶走当前正在执行的作业
  • HRN:最高响应比优先算法,R=作业周转时间/作业处理时间=1+作业等待时间/作业处理时间

注意:单道程序环境和多道程序环境下,作业调度算法负责分配哪一个作业优先调入内存,在内存中哪一个作业优先执行需要其他调度算法控制。

 并发进程 

进程的同步和互斥

  • 进程互斥:针对某一共享资源同时只允许一个进程对其进行访问,对资源的使用具有唯一性和排它性,互斥并不考虑和限制对资源的访问顺序
  • 进程同步:指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务(直接作用)
  • 互斥是同步的一种特例,同步已经实现了互斥。

临界区管理

  • 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源。在进程中涉及临界资源的程序段叫做临界区。
  • 使用临界区的规则:①有空让进;②无空等待;③多中择一;④有限等待;⑤让权等待

信号量及P、V操作

  • 信号量的定义:负责协调各个进程,以保证它们能够正确、合理的使用公共资源。(信号量是一个数据结构)
  • 信号量的使用:信号量在使用时必须置一次且只能置一次初值,且初值不能为负数,并且只能执行P、V操作。
  • 信号量及P、V操作的物理含义:
    • S>0表示有S个资源可用;
    • S=0表示无资源可用;
    • S<0则|S|表示S等待队列中的进程个数;
    • P(S)表示申请一个资源;
    • V(S)表示释放一个资源
  • P、V操作必须成对出现
    • 当为互斥操作时,它们同处一个进程;
    • 当为同步操作时,则不在同一进程中出现;
    • 如果P(S1)和P(S2)两个操作在一起,一个同步P操作与一个互斥P操作在一起时,同步P在互斥P前,V操作顺序不重要。
  • 经典生产者-消费者问题(同步问题)

  • 多个生产者-消费者问题(互斥问题)

死锁的基本概念

  • 死锁是指多个进程互不相让,都得不到足够的资源;饥饿是指一个进程长时间得不到资源
  • 产生死锁的原因:因为资源不足(根本原因);进程运行推进的顺序不合适;资源分配不当等
  • 产生死锁的四个必要条件:互斥使用(资源独占);不可强占(不可剥夺);请求和保持(部分分配,占有申请);循环等待

死锁的预防和避免

死锁的预防——解决死锁的静态方法

  • 破坏“不可剥夺”条件;
  • 破坏“请求和保持”条件;
  • 破坏“循环等待”条件

死锁的避免——解决死锁的动态方法

银行家算法n表示系统进程的个数,m表示资源类型的种类

  • 可利用资源向量available[m]——长度为m的向量,代表每种资源的现有实例的数量。
  • 最大需求矩阵max[n][m]——n*m矩阵,定义每个进程的最大需求量。
  • 分配矩阵allocation[n][m]——n*m矩阵,定义每个进程现在已经分配的各类资源的实例数量。
  • 需求矩阵need[n][m]——n*m矩阵,定义每个进程还需要的剩余的资源。

当一个进程申请使用资源的时候,银行家算法通过先“试探”分配给该进程资源,然后通过安全性算法判断分配后的系统是否处于安全状态,若不安全则试探分配作废,让该进程继续等待。

死锁的检测和解除

系统为死锁状态的充分条件:当且仅当“进程-资源分配图”无法化简(资源分配图化简:找一个非孤立点进程结点且只有分配边,去掉分配边,将其变成孤立结点;再把相应的资源分配给一个等待该资源的进程,即将某进程的申请边变成分配边)。

死锁的接触:资源剥夺法;撤销进程法

 

posted @ 2020-07-27 09:52  Littlejiajia  阅读(836)  评论(0编辑  收藏  举报