中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何動態模擬操作系統進程調度算法

發布時間:2021-12-01 13:36:56 來源:億速云 閱讀:271 作者:iii 欄目:開發技術

本篇內容主要講解“Java如何動態模擬操作系統進程調度算法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java如何動態模擬操作系統進程調度算法”吧!

實驗目的

通過對進程調度算法的模擬,進一步理解進程的基本概念,加深對進程運行狀態和進程調度過程、調度算法的理解。

設備與環境

硬件設備:PC機一臺

軟件環境:安裝Windows操作系統,并安裝相關的程序開發環境,如C \C++\Java 等編程語言環境。

實驗內容

實驗采用了java語言編程模擬N個進程采用動態高優先權優先進程調度算法。該算法就是按照優先權的大小運行進程,如果一個時間片內未運行完,則將優先權數減3后再插入到鏈表中按priority的順序進行排序找到最大的priority作為下一個運行進程且在就緒隊列里面的進程priority會加1。

主模塊:

Java如何動態模擬操作系統進程調度算法

動態priority排序模塊:

用來保證頭部永遠最大

Java如何動態模擬操作系統進程調度算法

到達時間進入就緒狀態模塊:

Java如何動態模擬操作系統進程調度算法

計算周轉時間和帶權周轉時間:

Java如何動態模擬操作系統進程調度算法

實驗結果及分析

輸入的信息

初始權值都為100,needtime為還需要的時間

進程 到達時刻 服務時間

A03

B26

C44

D65

E82

Java如何動態模擬操作系統進程調度算法

Java如何動態模擬操作系統進程調度算法

以A為例:

Java如何動態模擬操作系統進程調度算法

最后結束時:

Java如何動態模擬操作系統進程調度算法

部分代碼展示 

//創建結構
class PCB{
    String ID;
    int priority=-1;
    int cputime;//服務的時間
    int needtime;//進程還需的時間
    String state="wait";
    int arrivetime;
    PCB next;
    public PCB(String ID,int priority,int cputime,int arrivetime){
        this.ID=ID;
        this.priority=priority;
        this.cputime=cputime;
        this.arrivetime=arrivetime;
    }
}
判斷是否到達,進程進入時間
for(int i=0;i<arr.size();i++){
                if(h==arr.get(i).arrivetime){
                    Dynamic_priority.sort(arr.get(i));
                    arr.remove(i);}}
//將進程轉為就緒態并排序
public static void sort(PCB pcb){
PCB tmp=null;
        if(ready==null){//當頭結點為空
            ready=pcb;
            tail=pcb;}
       else {if(pcb.priority>ready.priority){//如果這個結點priority大于頭priority
               pcb.next=ready;
               ready=pcb;}
           else {
               boolean m=false;
               tmp=ready;//q
               while (m==false){
                   if(tail.priority>=pcb.priority){//插入尾端
                       tail.next=pcb;
                       tail=pcb;
                       pcb.next=null;
                       m=true; }
                   else {
                       if(tmp.priority>=pcb.priority&&pcb.priority>tail.priority){//逐漸遍歷插到tmp前
                           pcb.next=tmp.next;
                           tmp.next=pcb;
                           m=true;
                       } else { tmp=tmp.next;

到此,相信大家對“Java如何動態模擬操作系統進程調度算法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜康市| 台前县| 莲花县| 泸溪县| 丽水市| 万盛区| 南华县| 广西| 南投市| 库伦旗| 葫芦岛市| 临桂县| 绥中县| 永吉县| 水城县| 济南市| 育儿| 右玉县| 铜梁县| 新疆| 临城县| 木里| 彩票| 枣庄市| 禄丰县| 靖远县| 溆浦县| 措勤县| 涞水县| 扬州市| 横峰县| 新蔡县| 莱西市| 珠海市| 金乡县| 广水市| 临朐县| 平定县| 阜康市| 汕头市| 筠连县|