练习专区

今天的一小步就是明天的一大步
Problem 1709 进程调度问题
Accepted: 0   Total Submit: 2
Time Limit: 1000ms   Memory Limit: 30720KB
Description
在多道程序的操作系统中,处于就绪态的进程往往有多个,它们都要求占用处理器,而单处理器系统的处理器只有一个,为了解决这个处理器的竞争问题需要进行进程调度。进程调度的任务就是按照某种算法从就绪进程队列中选择一个进程,让它占有处理器。 为了保证进程竞争处理器资源的公平性,避免出现某些进程处于饥饿的情况,常用的进程调度算法是时间片轮转调度算法。时间片轮转调度算法让就绪进程按就绪的先后次序排成队列,每次总是选择就绪队列中的第一个进程占有处理器,但是规定只能使用一个“时间片”。时间片就是占有处理器资源的进程一次使用处理器的最长时间,如果分配给某进程的时间片用完而该进程还没有运行完毕,则将该进程再次放入就绪队列中等待下一次被调度。现在规定每个进程都使用相同的时间片,请你编写程序模拟操作系统内多个进程被调度的情况。 例如:有一组进程依次到达就绪队列,操作系统对每组进程都预估了该进程的运行时间需求,操作系统分配给每个进程使用的时间片大小为10ms。这一组进程的预估运行时间需求分别为25ms、50ms、30ms,则进程调度的顺序为ABCABCABCBB。对于A进程需要3次调度,尽管第3次调度时A进程只占用处理器5ms。
Input
输入有多组,每组都是由若干个正整数组成的一行数据。每行数据的第一个是处理器的时间片大小,第二个数据是将要到达的进程数目N,随后是N个正整数,分别表示N个进程的预估运行时间需求。
Output
输出每组的进程调度序列。
Sample Input
10 3 25 50 30 8 3 25 50 30 
Sample Output
ABCABCABCBB
ABCABCABCABCBBB
Hint
提交     返回