任務(wù)調(diào)度隊(duì)列
問(wèn)題描述:
在操作系統(tǒng)中,通常任務(wù)調(diào)度器會(huì)根據(jù)輸入任務(wù)的優(yōu)先級(jí)和狀態(tài),將輸入任務(wù)放入到合適的任務(wù)隊(duì)列中,等待執(zhí)行。請(qǐng)編寫程序,實(shí)現(xiàn)該調(diào)度功能,具體要求如下
1、 對(duì)于優(yōu)先級(jí)高的任務(wù),在任務(wù)隊(duì)列中應(yīng)該放入到優(yōu)先級(jí)低的任務(wù)前面。對(duì)于相同優(yōu)先級(jí)的任務(wù),則根據(jù)進(jìn)入任務(wù)隊(duì)列的順序依次放置
2、 任務(wù)分為系統(tǒng)任務(wù)和用戶任務(wù),調(diào)度器識(shí)別任務(wù)類型,分別放入系統(tǒng)任務(wù)列表和用戶任務(wù)列表,無(wú)法識(shí)別的任務(wù)類型被忽略
比如: 輸入: 任務(wù)task[] = {1,30,155,100,230,300,25,30,100}
輸出: 系統(tǒng)任務(wù)system_task[]={0,6,1,7,-1};用戶任務(wù)user_task[]={3,8,2,4,-1}
其中輸入任務(wù)中task[5]=300,為非法任務(wù),被忽略,其編號(hào)5不在輸出中體現(xiàn)。
要求實(shí)現(xiàn)函數(shù):
void scheduler(int n, int task[], int system_task[], int user_task[])
【輸入】 int n,輸入任務(wù)數(shù)目,總數(shù)目不超過(guò)255(n<=255)
int task [],下標(biāo)表示輸入任務(wù)編號(hào)(從0開(kāi)始),值為任務(wù)的優(yōu)先級(jí),值越小優(yōu)先級(jí)越高。規(guī)定優(yōu)先級(jí)范圍為0~255,其中優(yōu)先級(jí)小于50的為系統(tǒng)任務(wù),大于等于50的為用戶任務(wù)。超過(guò)優(yōu)先級(jí)范圍的為無(wú)法識(shí)別的任務(wù)(非法任務(wù),調(diào)度器應(yīng)該忽略該任務(wù))。
【輸出】 int system_task[],按優(yōu)先級(jí)順序放置的系統(tǒng)任務(wù)編號(hào)。其值為任務(wù)編號(hào),優(yōu)先級(jí)高的任務(wù)在前,優(yōu)先級(jí)低的任務(wù)在后。放置完最后一個(gè)任務(wù)后,用-1表示任務(wù)放置結(jié)束
int user_task[],按優(yōu)先級(jí)順序放置的用戶任務(wù)編號(hào)。其值為任務(wù)編號(hào),優(yōu)先級(jí)高的任務(wù)在前,優(yōu)先級(jí)低的任務(wù)在后。放置完最后一個(gè)任務(wù)后,用-1表示任務(wù)放置結(jié)束
【返回】 無(wú)
示例
輸入: int n = 9; int task[] = {1,30,155,100,230,300,25,30,100}
輸出: int system_task[]={0,6,1,7,-1}
int user_task[]={3,8,2,4,-1}