zoukankan      html  css  js  c++  java
  • 操作系统02_处理机管理

    处理机调度

    处理机调度是系统对处理机资源进行分配,使处于就绪状态的进程得以执行。使用的处理机调度算法决定了大型系统运行时的性能。

    1.处理机调度层次

    一个作业从提交到获得处理机执行,直至作业运行完毕,可能需要经过多级处理机调度。处理机调度的层次分三层:

    • 高级调度,调度对象为作业,又称作业调度或长程调度,主要用于多道批处理系统中。
    • 中级调度,又称内存调度,实际上是存储器管理的对换功能。提高内存利用率和系统吞吐量。
    • 低级调度,调度对象为进程,又称进程调度或短程调度,是最基本的调度,对系统性能影响也最大,决定就绪队列中哪个进程应该并且获得处理机。

    2.作业与作业调度

    • 作业是用户提交给系统的一项相对独立的工作。
    • 作业调度的主要任务是,根据JCB(作业控制块)中的信息,检查系统中的资源是否满足作业的需求,并按照调度算法,从外存的后备队列中选取某些作业调入内存,并为其创建进程、分配必要的资源,并放入就绪队列。
    • 主要的调度算法如下:
      • 最简单的先来先服务(FCFS)调度算法,既可用于作业调度,也可用于进程调度。只考虑作业的等待时间,忽视了作业的运行时间。
      • 较常用的短作业优先(SJF)调度算法,既可用于作业调度,也可用于进程调度。只考虑作业的运行时间,忽视了作业的等待时间。
      • 较常用的优先级调度算法(PSA),基于作业的紧迫程度,既可用于作业调度,也可用于进程调度。
      • 比较好的是高响应比优先调度算法(HRRN),考虑了作业的等待时间和运行时间,改善了系统性能,但是每次调度之前先计算响应比(优先级=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间),增加了系统开销。

    3.进程调度

    • 进程调度的任务是,保存处理机的现场信息,按某种算法选取进程并分配处理机。
    • 进程调度方式分为非抢占式和抢占式(广泛采用),抢占的原则有优先级原则、短进程优先原则、时间片原则。
    • 常见的调度算法有:
      • 基于时间片的轮转(RR)调度算法,采用非常公平的处理机分配方式,让就绪队列上的每个进程每次只运行一个时间片。
      • 优先级调度算法
      • 多队列调度算法
      • 多级反馈队列调度算法
      • 基于公平原则的调度算法

    4.实时调度

    • 实时调度算法有:
      • 最早截止时间优先(EDF)算法
      • 最低松弛度优先(LLF)算法
    • 优先级倒置现象

    处理机死锁

    假如系统中有一个资源A和一个资源B,有两个进程P1和P2,P1成功请求并获得A,P2成功请求并获得B。此时,P1请求B,因B被分配给P2而阻塞;P2请求A,因A被分配给P1而阻塞。此时两个进程都被阻塞,都得不到资源继续运行,从而无法释放占有的资源,一直僵持下去而产生死锁问题。

    1.死锁的产生

    主要是多个进程对临界资源的争夺。产生死锁的必要条件:

    • 针对资源的互斥条件
    • 请求和保持条件
    • 不可抢占条件
    • 循环等待条件

    2.避免死锁

    银行家算法

    3.死锁的检测与解除

    • 解除死锁的方法:
      • 抢占资源分配给死锁进程
      • 终止或撤销进程
  • 相关阅读:
    lr中读写文件操作代码(原创)
    loadrunner中常用函数
    25岁综合焦虑症
    如果我是你的女朋友。。。看到了自己!哈哈
    web_reg_save_param 和关联的使用(原创)
    awk 的使用转自oracle.com
    去掉thinktime查看响应时间的方法
    vi 的使用方法
    ejs include助手没有处理BOM头的解决
    Nodejs, MemCacheD 在实际项目中的使用
  • 原文地址:https://www.cnblogs.com/pycrab/p/9522246.html
Copyright © 2011-2022 走看看