程序员招聘笔试常见系统类型题

任务调度队列

问题描述:
在操作系统中,通常任务调度器会根据输入任务的优先级和状态,将输入任务放入到合适的任务队列中,等待执行。请编写程序,实现该调度功能,具体要求如下

1、   对于优先级高的任务,在任务队列中应该放入到优先级低的任务前面。对于相同优先级的任务,则根据进入任务队列的顺序依次放置

2、   任务分为系统任务和用户任务,调度器识别任务类型,分别放入系统任务列表和用户任务列表,无法识别的任务类型被忽略

 

比如:    输入:   任务task[] = {1,30,155,100,230,300,25,30,100}

输出:    系统任务system_task[]={0,6,1,7,-1};用户任务user_task[]={3,8,2,4,-1}

其中输入任务中task[5]=300,为非法任务,被忽略,其编号5不在输出中体现。

要求实现函数:
void scheduler(int n, int task[], int system_task[], int user_task[])

【输入】 int n,输入任务数目,总数目不超过255(n<=255)

int task [],下标表示输入任务编号(从0开始),值为任务的优先级,值越小优先级越高。规定优先级范围为0~255,其中优先级小于50的为系统任务,大于等于50的为用户任务。超过优先级范围的为无法识别的任务(非法任务,调度器应该忽略该任务)。

【输出】 int system_task[],按优先级顺序放置的系统任务编号。其值为任务编号,优先级高的任务在前,优先级低的任务在后。放置完最后一个任务后,用-1表示任务放置结束

   int user_task[],按优先级顺序放置的用户任务编号。其值为任务编号,优先级高的任务在前,优先级低的任务在后。放置完最后一个任务后,用-1表示任务放置结束

【返回】 无

示例
输入: 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}

 

本文已影响6827
上一篇:编程人员必看笔试题目精选 下一篇:最新湖北农村信用社考试真题试卷

相关文章推荐

|||||