linux的进程调度时机,Linux进程调度时机怎么把握?
Linux的调度程序是一个叫Schedule()的函数,由它来决定是否要进行进程的切换。而所谓的调度时机则是在什么情况下执行调度程序。
主要有一下几种状况:
1、进程状态转换的时刻:进程终止、进程睡眠;
2、当前进程的时间片用完时(current->counter=0);
3、设备驱动程序
4、进程从中断、异常及系统调用返回到用户态时;
时机1,进程要调用sleep()或exit()等函数进行状态转换,这些函数会主动调用调度程序进行进程调度;
时机2,由于进程的时间片是由时钟中断来更新的,因此,这种情况和时机4是一样的。
时机3,当设备驱动程序执行长而重复的任务时,直接调用调度程序。在每次反复循环中,驱动程序都检查need_resched的值,如果必要,则调用调度程序schedule()主动放弃CPU。
时机4,如前所述,不管是从中断、异常还是系统调用返回,最终都调用ret_from_sys_call(),由这个函数进行调度标志的检测,如果必要,则调用调用调度程序。
那么,为什么从系统调用返回时要调用调度程序呢?这当然是从效率考虑。从系统调用返回意味着要离开内核态而返回到用户态,而状态的转换要花费一定的时间,因此,在返回到用户态前,系统把在内核态该处理的事全部做完。
下面简单看一下每个时钟中断发生时内核要做的工作,首先对这个最频繁的调度时机有一个大体了解,然后再详细讨论调度程序的具体工作过程。
每个时钟中断(timer interrupt)发生时,由三个函数协同工作,共同完成进程的选择和切换,它们是:schedule()、do_timer()及ret_form_sys_call()。
schedule():进程调度函数,由它来完成进程的选择(调度);
do_timer():暂且称之为时钟函数,该函数在时钟中断服务程序中被调用,是时钟中断服务程序的主要组成部分,该函数被调用的频率就是时钟中断的频率即每秒钟100次(简称100赫兹或100Hz);
ret_from_sys_call():系统调用返回函数。
当一个系统调用或中断完成时,该函数被调用,用于处理一些收尾工作,例如信号处理、核心任务等等。
全部
linux的进程调度时机,Linux进程调度时机怎么把握?相关推荐
- Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)
日期 内核版本 架构 作者 GitHub CSDN 2016-07-01 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 ...
- linux系统中的进程调度采用( ),Linux系统中的进程调度.ppt
Linux系统中的进程调度.ppt 第3章 处理机调度 本章重点 3.1 调度级别 3.2 作业调度 3.3 进程调度 一.基本概念 二.调度级别 一.基本概念 处理机调度是操作系统的重要功能之一,其 ...
- 浅谈操作系统是如何工作的及简单的进程调度的linux实现
浅谈操作系统是如何工作的及简单的进程调度的linux实现 1)进程的启动和切换机制 a)进程的启动机制 保存ebp的值到栈, 将esp的值保存在prev->thread.sp,在下一步esp的值 ...
- 操作系统之进程调度 (十一) --- 进程调度的时机、进程调度的方式、进程调度的狭义与广义...
文章目录 进程调度 进程调度的时机 对遗留问题的解释 进程调度的方式 进程调度的狭义与广义 总结 感谢 进程调度 进程调度的时机 在上篇中说到,进程调度(低级调度),就是按照某种算法从就绪队列中选择一 ...
- linux 进程调度 内存,linux学习的任督二脉-进程调度和内存管理
转自 宋宝华老师的博客 原文:https://blog.csdn.net/21cnbao/article/details/77505330 内功心法 学习或遇到问题时,反过来主动思考如果我是设计者,我 ...
- linux 进程调度ppt,371Linux进程调度.PPT
371Linux进程调度 第3章 处理机调度 本章重点 3.1 调度级别 3.2 作业调度 3.3 进程调度 一.基本概念 二.调度级别 一.基本概念 处理机调度是操作系统的重要功能之一,其调度策略决 ...
- linux 进程调度卡死,linux进程调度之总章:一些片汤话
最近几天结合源码看了很多linux进程调度的文章,虽然掌握了个大概,但是越看,细节越多,写这篇文章的信心也就越不足,曾有系列文章叫鼠眼看linux进程调度,很符合我现在的心境,就像盲人摸象,学到一些东 ...
- linux 进程管理 ppt,Linux内核结构与进程管理.ppt
Linux内核结构与进程管理.ppt Linux 内核结构与进程管理,Linux系统结构Linux kernel 开放源代码的linux操作系统内核,目前版本为2.6,Linux内核组成1. 进程调度 ...
- linux 内核 课程,Linux内核分析课程-全面剖析Linux内核技术 揭开Linux内核的面纱 Linux内核学习视频教 ......
课程名称 Linux内核分析课程-全面剖析Linux内核技术 揭开Linux内核的面纱 Linux内核学习视频 课程目录 (1)\1, 计算机是如何工作的?:目录中文件数:0个 (2)\2, 操作系统 ...
- 手机linux内核版本了解,Linux内核版本介绍与查询
Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...
最新文章
- android简化log输出方法
- 二叉排序树(c/c++)
- 开发自己的区块链基础功能篇
- I/O复用之 EPOLLONESHOT 事件
- 机器学习近年来之怪现状
- php 正则断言里面使用*+
- 图卷积神经网络GCN ---如何在交通预测中考虑网络拓扑结构
- Unity3D AssetBundle相关
- 苹果计算机打音乐,给苹果手机“隔空投送”更多的音乐和文件!
- 什么算法计算地图上从A点到B点的方向?
- 谷歌浏览器设置信任_Win10谷歌浏览器添加信任网址/站点的方法
- logistics回归分析——二元逻辑回归
- 图灵学院:淘宝大秒系统设计详解
- 五边形创意画_儿童美术创意绘画图片_儿童美术创意绘画作品
- mac mail 删除邮件服务器,这是在Mac上的Mail中自动删除垃圾电子邮件的方法
- MySql 查询语句替换换行符
- 网管软件 LANDesk的配置(视频配截图)
- 织梦CMS建站入门学习(二)
- 2022 哪些企业在考虑 IDaaS ?IDaaS 适合我们企业么?
- 三维深度学习之pointnet系列详解(一)