进程调度算法
来源:互联网 发布:c语言中define的用法 编辑:程序博客网 时间:2024/06/01 07:11
短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);是对FCFS算法的改进,其目标是减少平均周转时间。
短作业优先调度算法基于这样一种思想:
运行时间短的优先调度;
如果运行时间相同则调度最先发起请求的进程。
等待时间:一个进程从发起请求到开始执行的时间间隔。
现在有n个进程请求cpu,每个进程用一个二元组表示:(p,q),p代表该进程发起请求的时间,p代表需要占用cpu的时间。
短作业优先调度算法基于这样一种思想:
运行时间短的优先调度;
如果运行时间相同则调度最先发起请求的进程。
等待时间:一个进程从发起请求到开始执行的时间间隔。
现在有n个进程请求cpu,每个进程用一个二元组表示:(p,q),p代表该进程发起请求的时间,p代表需要占用cpu的时间。
请计算n个进程的平均等待时间。
import java.text.DecimalFormat;import java.util.*;public class Main { /** * @param args */ static class task{ int begin; int end; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); while(in.hasNext()){ int n=in.nextInt(); List<task> list=new ArrayList<task>(); for(int i=0;i<n;i++){ task t=new task(); t.begin=in.nextInt(); t.end=in.nextInt(); list.add(t); } Collections.sort(list, new Comparator<task>(){ @Override public int compare(task o1, task o2) { // TODO Auto-generated method stub return o1.begin-o2.begin; } }); Collections.sort(list, new Comparator<task>(){ @Override public int compare(task o1, task o2) { // TODO Auto-generated method stub if(o1.begin==o2.begin) return o1.end-o2.end; else return 0; } }); int t=list.get(0).begin; double s=0; for(int j=0;j<list.size();j++){ if(t>=list.get(j).begin) s+=(t-list.get(j).begin); t+=list.get(j).end; } //double a=0; DecimalFormat df = new DecimalFormat( "0.0000"); System.out.println(df.format(s/n)); } } }
0 0
- 进程调度算法
- 进程调度算法
- 进程优先级调度算法
- 进程调度算法
- 进程调度模拟算法
- 进程调度算法程序
- 进程调度算法
- 进程调度算法
- 进程调度算法
- 操作系统进程调度算法
- 进程调度算法
- 进程调度算法
- 进程调度算法例题
- 进程调度算法
- 进程调度算法
- 进程调度算法
- 【操作系统】进程调度算法
- 进程调度算法
- 数组-Kth Largest Element in an Array(找出第K大的数)
- Ubuntu系统GNOME Classic中alt+table无效
- Qt中设置窗体大小的方法
- 近期科技类1
- JAVA回调机制(CallBack)详解
- 进程调度算法
- C++第7次作业
- 以生活例子说明单线程与多线程
- ubuntu 安装mysql环境(离线压缩包方式)
- android组件之DrawerLayout
- 一个Demo带你认识Design库,纯原生控件也能做出很漂亮的效果
- Android小程序-Walker解析天气(七)
- 沿着“运营那条线”,新手要学哪些零散知识
- openfire不能启动解决方案