zoukankan      html  css  js  c++  java
  • 处理器管理(进程、作业、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矩阵,定义每个进程还需要的剩余的资源。

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

    死锁的检测和解除

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

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

    越努力越幸运!
  • 相关阅读:
    NGUI的HUD Text的扩展插件学习--(HUDText)的使用
    C#设计模式:外观模式(Facade Pattern)
    NGUI的HUD Text的扩展插件学习--(UIFollowTarget)的使用
    NGUI的怎么在一个Gameobject(游戏物体)中调用另一个Gameobject(游戏物体)的脚本(C#)
    C#设计模式:组合模式(Composite Pattern)
    C#Contains方法的错误理解
    C#.NET动态页面静态化生成
    C++ primer plus读书笔记——第1章 预备知识
    如何判断一个数是2的幂
    C++将数值转换为string
  • 原文地址:https://www.cnblogs.com/Littlejiajia/p/13381601.html
Copyright © 2011-2022 走看看