标签:inux 运行时间 计时 通讯 str 进程调度算法 解决 分配 服务
FCFS(先来先服务),优先级,时间片轮转,多级反馈-调度算法。
先来先服务调度算法:是一种最简单的调度算法,每次调度是从进程队列中选择一个最先进入该队列的进程,为之分配资源投入运行。该进程一直运行完成或发生某事件而阻塞后才继续处理后面的进程。
优先级调度算法:有短进程优先级、高优先权优先级、高响应比优先级等,按照优先级来执行就绪进程队列中的调度。 (高响应比:(等待时间+服务运行时间)/服务运行时间)
时间片轮转调度算法:系统还是按照先来先服务调度就绪进程,但每次调度时,CPU都会为队首进程分配并执行一个时间片(几ms~百ms)。执行时间片用完后计时器即产生时钟中断,停止该进程并将它送到队尾,其他依次执行。这样保证系统能在给定的时间内执行所有用户进程的请求。
多级反馈调度算法:前面都有局限性,综合-> 多级反馈调度算法则不必事先知道各进程所需的执行时间,而且还可以满足各类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。
(1)设置多个就绪队列,每个队列优先级依次减小。为各个队列分配的时间片大小不同,优先级队列越高,里面进程规定的执行时间片就越小。
(2)队列中还是按照FCFS原则排队等待,如果第一队列队首进程在规定的时间片内未执行完,则直接调送至第二队尾,依次向后放一个队列的队尾。因此一个长作业进程会分配到n个队列的时间片执行。
(3)按照队列先后依次执行,如果新进的待处理进程优先级较高,则新进程将抢占正在运行的进程,被抢占的进程放置正在运行的队尾。
1.1.UNIX采用抢占式内核,Windows、Linux采用多任务非抢占式内核。
抢占式: 内核空间中,有一个更高优先级的任务出现时,则可以将当前任务挂起,执行优先级更高的进程。
非抢占式:高优先级的进程不能中止正在内核中运行的低优先级的进程而抢占CPU运行。 则除非进程自愿放弃CPU,否则该进程将一直运行下去,直至完成或退出内核。
多任务系统中, 内核负责管理各个任务, 或者说为每个任务分配CPU时间, 并且负责任务之间的通讯。
1. 2.Linux下CPU抢占分两种情况:
1)用户抢占(发生时机:从系统调用返回用户空间、从中断(异常)处理程序返回用户空间时);
2)内核抢占(是指在内核中运行的进程, 可能在执行内核函数期间被另一个进程取代。发生时机:如果内核中的任务堵塞,任务主动放弃CPU使用权时)
1.3.需要内核抢占的原因:
当内核处于相对耗时的操作中, 比如文件系统或者内存管理相关的任务,而其他进程无法执行, 无法调度, 这就造成了系统的延迟增加, 用户体验到”缓慢”的响应.
高优先级任务要访问共享资源,而此时低优先级任务正在占用,此时中等优先级任务到来先执行完毕后,低优先级任务释放资源高优先级任务才得以执行,这就发生了优先级翻转问题。
解决方式:优先级天花板,优先级继承
优先级天花板:
当任务申请某资源时就将当前任务的优先级提高到可访问该资源任务的最高优先级。
优先级继承:
当任务申请某资源时,此资源已被占用,那么判断当前任务是否比占用资源的任务优先级高,若高,则将占用资源任务的优先级提高到当前任务的优先级,等释放资源后再恢复其本身的优先级。
标签:inux 运行时间 计时 通讯 str 进程调度算法 解决 分配 服务
原文地址:https://www.cnblogs.com/hjh-666/p/11449470.html