Linux任务调度机制指什么,要点有哪些
Admin 2022-07-21 群英技术资讯 348 次浏览
linux的任务调度机制是指系统在某个事件执行的特定命令或程序;每一个CPU都会有一个队列来存储处于“TASK_RUNNING”状态的任务,任务调度就是从这些队列中取出优先级最高的任务作为下一个放入CPU执行的任务。
本教程操作环境:linux7.3系统、Dell G3电脑。
是指系统在某个时间执行的特定的命令或程序
在Linux中,每一个CPU都会有一个队列来存储处于TASK_RUNNING状态的任务,任务调度就是从这些队列中取出优先级最高的任务作为下一个放入CPU执行的任务。
任务的调度需要进过两个过程:上下文切换和选择算法
上下文切换
从一个进程的上下文切换到另一个进程的上下文,因为其发生频率很高,所以通常都是调度器效率高低的关键。
schedule()函数中调用了switch_to宏,这个宏实现了进程之间的真正切换,其代码存放于include/i386/system.h。
switch_to宏是用嵌入式汇编写成的,较难理解。
switch_to()函数正常返回,栈上的返回地址是新进程的task_struct::thread::eip,即新进程上一次被挂起时设置的继续运行的位置(上一次执行switch_to()时的标号”1:”位置)。
至此转入新进程的上下文中运行。这其中涉及到wakeup,sleepon等函数来对进程进行睡眠与唤醒操作。
选择算法
Linux schedule()函数将遍历就绪队列中的所有进程,调用goodness()函数计算每一个进程的权值weight,从中选择权值最大的进程投入运行。Linux的调度器主要实现在schedule()函数中。
调度步骤:
Schedule函数工作流程如下:
(1)清理当前运行中的进程
(2)选择下一个要运行的进程(pick_next_task)
(3)设置新进程的运行环境
(4) 进程上下文切换
Linux 调度器将进程分为三类
进程调度是操作系统的核心功能。
调度器只是调度过程中的一部分,进程调度是非常复杂的过程,需要多个系统协同工作完成。
本文所关注的仅为调度器,它的主要工作是在所有RUNNING 进程中选择最合适的一个。
作为一个通用操作系统,Linux 调度器将进程分为三类:
交互式进程
此类进程有大量的人机交互,因此进程不断地处于睡眠状态,等待用户输入。典型的应用比如编辑器 vi。此类进程对系统响应时间要求比较高,否则用户会感觉系统反应迟缓。
批处理进程
此类进程不需要人机交互,在后台运行,需要占用大量的系统资源。但是能够忍受响应延迟。比如编译器。
实时进程
实时对调度延迟的要求最高,这些进程往往执行非常重要的操作,要求立即响应并执行。比如视频播放软件或飞机飞行控制系统,很明显这类程序不能容忍长时间的调度延迟,轻则影响电影放映效果,重则机毁人亡
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
linux与windows区别在哪?一些对电脑系统不是很了解朋友可能不是很清楚这个问题,其实linux与windows是存在很多不同的,例如安全性、软件支持,应用范畴等等方面都有一定的区别,本文小编整理的八点不同,感兴趣的朋友可以了解一下。
1 直接修改date -s 直接设置系统时间如将系统时间设定成2014年9月1日的命令如下。 date-s01 09 14将系统时间设定成下午13点17分0秒的命
linux打开终端的快捷键是“Ctrl+alt+T”。在Linux的首页使用“Ctrl+alt+T”组合键,即可快速打开终端;且Linux支持多终端,可以多次使用“Ctrl+alt+T”命令来打开多个终端。
在linux中,32位平台和64位平台中的short都占2个字节;linux中只有long长整型、void(c语言中,void为“不确定类型”)在32位中是4个字节,在64位中是8个字节。
在实际的使用中,分区容量不足的问题还是比较常见的,因此,这个时候就需要进行分区扩容操作了。对此,这篇文章就给大家来分享linux中怎么样实现分区扩容的操作,感兴趣的朋友就继续往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008