操作系统模拟实验—高优先权优先调度算法JS实现

高优先权优先调度算法

优先级调度的含义
  1. 当该算法用于作业调度时,系统从后备作业队列中选择若干个优先级最高的,且系统能满足资源要求的作业装入内存运行。
  2. 当该算法用于进程调度时,将把处理机分配给就绪进程队列中优先级最高的进程。
调度算法的两种方式

优先级调度算法细分成如下两种方式:

  • 非抢占式优先级算法
    在这种调度方式下,系统一旦把处理机分配给就绪队列中优先级最高的进程后,该进程就能一直执行下去,直至完成;或因等待某事件的发生使该进程不得不放弃处理机时,系统才能将处理机分配给另一个优先级高的就绪进程。

  • 抢占式优先级调度算法
    在这种调度方式下,进程调度程序把处理机分配给当时优先级最高的就绪进程,使之执行。一旦出现了另一个优先级更高的就绪进程时,进程调度程序就停止正在执行的进程,将处理机分配给新出现的优先级最高的就绪进程。

优先级的类型
  • 进程的优先级可采用静态优先级和动态优先级两种,优先级可由用户自定或由系统确定。

下面是高优先权优先调度算法实验界面:

操作系统模拟实验—高优先权优先调度算法JS实现_第1张图片
代码:

index.html




    
    动态高优先权优先调度算法
    
    


动态高优先权优先调度算法

Pg.js

var PgObj = function (name, arrivedtime, runtime, priority) {
    this.name = name;
    this.arrivedtime = arrivedtime;
    this.runtime = runtime;
    this.priority = priority;
};
PgObj.prototype.createPro = function () {

    var element=document.getElementById("ps");
    var newdiv = document.createElement("div");
    var newPg = document.createElement("progress");
    var newHN = document.createElement("h3");

    newPg.max = 100;
    newPg.value = 0;
    newPg.id = this.name;
    newHN.innerText = "作业" + this.name + "在第" + this.arrivedtime + "S到达" +
        "运行时间" + this.runtime + "S " + "优先级为" + this.priority + ".";
    newdiv.appendChild(newHN);
    newdiv.appendChild(newPg);
    element.appendChild(newdiv);

    var pg = document.getElementById(this.name);
    var f = 0;
    setInterval(function () {

        if (pg.value!=100) pg.value++;
        else {
            pg.value=100;
            if(f == 0){
                f = 1;
                flag = 1;
            }
        }
    }, this.runtime*10);
};

你可能感兴趣的:(优化算法,操作系统)