HNOI2003 作業系統

2021-08-29 00:10:30 字數 580 閱讀 1449

用優先佇列q來模擬我們的cpu,最開始時,cpu中沒有程序,因此,我們把第乙個程序放進去,第二個程序進來時會有選擇,有幾種可能,要進入的程序的開始時間在前面那個程序結束時間之後,我們相當於可以直接完場此時cpu中的程序,將時間節點更新當前結束時間,第二種情況,當前cpu中程序的結束時間在要進來的這個程序開始時間之後,這是我們選擇比較優先順序,如果cpu中程序的優先順序小,那麼當前程序只會執行一半,我們算出他能夠執行的時間,更新這個程序並且重新放回cpu中,並將即將進入的程序放進去,,繼續等待下一步處理,當前在q中的所有程序,都已經不用管開始時間了,因為如果在q中,就表明要麼已經執行過,所以在門口等待執行,要麼是即將執行,他們的st都已經不存在什麼意義,都已經是迫不及待等待了,所以q中的東西只用管優先順序。

#include#include#include#include#includeusing namespace std;

struct node

if(!q.empty())

q.push(c);

ti=c.st;

}while(!q.empty())

return 0;

}

HNOI2003 作業系統

嘟嘟嘟 這道題就是乙個模擬。首先我們建乙個優先佇列,存所有等待的程序,當然第一關鍵字是優先順序從大到小,第二關鍵字是到達時間從小到大。然後再建乙個指標tim,代表cpu執行的絕對時間。然後分一下幾種情況 1.如果等待隊列為空,那直接調到當前該執行的程序的到達時間,並把它放進等待佇列 可以這麼理解,每...

作業系統(模擬題,HNOI2003)

用優先佇列維護等待程序,同時用兩個變數分別維護當前時間和當前程序。每當乙個新程序到來時,看看再其到來之前,又有哪些程序執行完畢。然後再與當前優先順序最高的程序比較優先順序,進行簡單的分類討論。最後不要忘記,所有程序都進來之後,再將他們從優先佇列中彈出,直到優先隊列為空為止。include inclu...

HNOI2003 作業系統(優先佇列 模擬)

hnoi2003 作業系統 題目概述 假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用自然數表示,數字越大,則優先順序越高。如果乙個程序到達的時候cpu是空閒的,則它會一直占用cpu直到該程序結束。除非在這個過程中,有乙個比它優先順序高的程序要執行...