最近学习了一些os中的调度策略,忍不住回顾了一下算法中的相关调度问题,发现了一些共通的地方。问题:n个任务,处理时间为t1,t2,...tn,并且只有一台机器目标:所有任务花费的总时间的最短总和。解决办法:将时间从小到大排序。问题:n个任务,处理时间为t1,t2,...tn,有截止日期d1,d2,...dn,机器目标只有一个:最小化单个任务的最大延迟(maximumdelay定义为超过deadline的长度)解:根据deadline之前到后面的问题:n个任务,有开始时间,结束时间和重叠,只有一台机器目标:完成最多的任务解:根据从前到后的结束时间问题:n个任务,有开始时间、结束时间和Overlaps,有多个处理器目标:用最少的处理器完成所有任务解决方案:根据开始时间从前到后添加处理器.如果有冲突,在实际的cpu调度中新建一个处理器,往往主要在优化平均响应时间,主要思想也是最短时间优先或者最短剩余时间(最早结束时间)优先。在Linux的实际实现中,是一个多级权衡,优先级队列+轮询操作,同一个优先级队列中的所有人先完成一些短期任务和长期任务交替执行。生活不应该是这样吗?先明确自己的轻重缓急,分成几个层级,然后平分清这些层级中的任务,一会儿做这个,一会儿做那个。..hhh可能需要注意任务数量的控制。毕竟自己的CPU烧起来很费钱,你的多处理能力也确实不强。
