• 操作系统任务调度问题


    操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越 高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。

    例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -1} user_task[] = {4, 8, 2, 6, -1}

    函数接口 void scheduler(int task[], int n, int system_task[], int user_task[])

     

     1 #include<stdio.h>
     2 void scheduler(int task[], int n, int system_task[], int user_task[])
     3 {
     4     int *x = new int[n];
     5     int i,j,k;
     6     for (i=0; i < n; i++)
     7         x[i] = i;
     8     for (i=0; i < n-1; i++)
     9         for (j=1; j < n-i; j++)
    10         if (task[j-1] > task[j])
    11         {
    12             int t = task[j-1];
    13             task[j-1] = task[j];
    14             task[j] = t;
    15             t = x[j-1];
    16             x[j-1] = x[j];
    17             x[j] = t;
    18         }
    19     for (int i=0; i < n; i++)
    20         printf("%d ",task[i]);
    21     printf("
    ");
    22     j = 0;
    23     k = 0;
    24     for (i=0; i < n; i++)
    25     {
    26         if(task[i] < 50)
    27             system_task[j++] = x[i];
    28         else if (task[i] <= 255)
    29             user_task[k++] = x[i];
    30         else ;
    31     }
    32     system_task[j] = -1;
    33     user_task[k] = -1;
    34 }
    35 int main()
    36 {
    37     int task[100],sys[100],user[100],n;
    38     scanf("%d",&n);
    39     for (int i=0; i < n; i++)
    40         scanf("%d",&task[i]);
    41     scheduler(task,n,sys,user);
    42     for (int i=0; sys[i] != -1; i++)
    43         printf("%d ",sys[i]);
    44     printf("
    ");
    45     for (int i=0; user[i] != -1; i++)
    46         printf("%d ",user[i]);
    47     printf("
    ");
    48 
    49 }

  • 相关阅读:
    错题集知识(持续更新)
    Java 初始化过程
    java基础自定义测试异常类
    1049 数列的片段和 (20 分)
    1044 火星数字 (20 分)
    1048 数字加密(20分)
    js 全选反选和全不选
    robust programmings
    gdb define command
    好久没有破解别人的无线了, 重温一下
  • 原文地址:https://www.cnblogs.com/george-cw/p/3936261.html
Copyright © 2020-2023  润新知