面试题:操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。...

本文探讨了一种使用Python实现的任务调度优化算法,通过区分系统任务和用户任务,并采用特定排序策略,实现任务的高效分配。代码示例展示了如何通过映射、排序和输出系统与用户任务列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package practice;

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map;

public class Scheduler2 { public static void schedulers(int task[],int n,int system_task[],int user_task[]){ Map<Integer, Integer> systemMap=new HashMap<Integer,Integer>(); Map<Integer,Integer> userMap=new HashMap<Integer,Integer>();

	for(int i=0;i<task.length;i++){
		if(task[i]<50){
			//系统任务
			systemMap.put(i, task[i]);
		}else if(task[i]>=50&&task[i]<=255){
			//用户任务
			userMap.put(i, task[i]);
		}
	}
	//非法用户
	system_task=converArrayToArray(systemMap);
	System.out.println();
	user_task=converArrayToArray(userMap);
 display(system_task);
 display(user_task);
}

private static void display(int[] system_task) {
	System.out.println("输出:");
	for(int i=0;i<system_task.length;i++){
		System.out.print(system_task[i]+"  ");
	}
	System.out.println();
}

private static int[] converArrayToArray(Map<Integer,Integer> systemOruser) {
	   int temp[]=new int[systemOruser.size()+1];
	   List<Map.Entry<Integer, Integer>> info = new ArrayList<Map.Entry<Integer, Integer>>(systemOruser.entrySet());
	   Collections.sort(info, new Comparator<Map.Entry<Integer, Integer>>() {
	            public int compare(Map.Entry<Integer, Integer> obj1, Map.Entry<Integer, Integer> obj2) {
	                return  obj1.getValue()-obj2.getValue();
	            }
	        });
	     for (int j = 0; j<info.size();j++) {
	            temp[j]=info.get(j).getKey();
	        }
	     temp[systemOruser.size()]=-1;
	return temp;
}
public static void main(String[] args) {
    int	task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99};
	int n=task.length;
	int user_task[]=null;
	int system_task[]=null;
	
	schedulers(task,n,system_task,user_task);
}

}

转载于:https://my.oschina.net/jiefalcon/blog/138861

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值