亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

最短作業優先(非搶占式)——同時對突發時間和到達時間進行排序

最短作業優先(非搶占式)——同時對突發時間和到達時間進行排序

HUX布斯 2023-03-18 10:56:28
我對如何同時對到達時間和突發時間進行排序有疑問。我的代碼首先檢查較低的突發時間,然后檢查到達時間。最短作業優先(非搶占式)CPU 調度檢查進程突發時間, 如果它Process具有最短的突發時間和到達時間,那么它將被執行。這是我對數組進行排序的代碼片段:inputs.sort((a1, a2) => (a1.burst < a2.burst) ? 1 : (a1.burst < a2.burst) ? 1 : -1);這是上面代碼片段的結果:如果排序公式正確,這應該是輸出:
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

這似乎需要迭代來確定流程的順序,因為正在“執行”的當前流程的完成時間用于確定下一個要考慮執行的可用流程。也就是說,在您的示例中,P1 到達 0 并在時間間隔 5 時完成。因此,在時間間隔 5 之前到達的所有未完成的進程現在都是要執行的候選進程。接下來執行具有最小突發時間的候選者,到達時間是決勝局。(請注意,此決勝局只是假設數組按到達時間排序。)


let process = [

  { Process: 'P1', ArrivalTime: 0, BurstTime: 5 },

  { Process: 'P2', ArrivalTime: 1, BurstTime: 3 },

  { Process: 'P3', ArrivalTime: 2, BurstTime: 8 },

  { Process: 'P4', ArrivalTime: 2, BurstTime: 6 },

  { Process: 'P5', ArrivalTime: 3, BurstTime: 3 },

  { Process: 'P6', ArrivalTime: 15, BurstTime: 2 },

];


// Get the first ArrivalTime.

let time = Math.min( ...process.map( p => p.ArrivalTime ) );


while ( process.find( p => p.Finished == null ) ) {


  // Now, "execute" the process in which the BurstTime is the least

  // amoung the processes which haven't finished and have an ArrivalTime

  // less than or equal to the current time...

  let execute = process.reduce( ( ni, p, i ) => {

    if ( p.Finished == null && p.ArrivalTime <= time && (ni === -1 || p.BurstTime < process[ ni ].BurstTime ) ) {

      ni = i;

    }

    return ni;

  }, -1 );

  

  // Capture the start time...

  process[ execute ].Started = time;

  // ...and then calculate the finish time.

  time += process[ execute ].BurstTime;

  process[ execute ].Finished = time;


}


// For ease of viewing, sort by Started.

process.sort( ( a, b ) => a.Started - b.Started );


console.log( process );


我添加了一些額外的數據點,注意到 P6 是如何遲到的,但由于它的爆發時間只有 2,所以它會在 P3 之前滑入......


查看完整回答
反對 回復 2023-03-18
  • 1 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號