没有合适的资源?快使用搜索试试~ 我知道了~
Linux操作系统内核编程实现调度任务
0 下载量 178 浏览量
2020-03-04
10:37:39
上传
评论
收藏 41KB DOC 举报
温馨提示
试读
6页
本文将为大家介绍Linux操作系统内核编程实现调度任务。
资源推荐
资源详情
资源评论
Linux 操作系统内核编程实现调度任务
调度任务
经常地,我们有必须定时做或者经常做的“家务事”。如果这个任务由一个进程完成,
我 们可以把通过把它放入 文件而做到。如果这个任务由一个内核模块完成,我们
有两种可能的选择。第一种是把一个进程放入 文件,它 将在必要的时候通过一个
系统调用唤醒模块,比如打开一个文件。然而,这样做时非常低效的,我们需要运行一个
外的新进程,把一个新的执行表读 入内存,而所有这些只是为了唤醒一个内存中
的内核模块。
我们不需要这样做。我们可以创建一个函数,在每个时间中断时被调用。方法是创建
一个任务,包含在一个结构体 里,在此结构中包含一个指向函数入口地址的指
针。然后,我们使用 把这个任务放入一个叫 做 的任务列表中,这
是一个在下次时间中断时要执行的任务列表。因为我们希望这个函数被持续执行,我们需
要在每次调用厚把它放回 中以备下次时间中断。
这里还有一点需要记住。当一个模块被 删除时,首先他的索引计数器被检
查。如果是 ,就调用 。然后,这个模块以及它的所有函数都从内存中
删除。没有人检查是否时钟的任务列表仍然包含指向这些函数 的指针,而现在已不可用。
很久以后(从计算机看来,在人的眼睛里是很短的,可能是百分之一秒),内核有了一个
时钟中断,试图调用任务列表中的所有函数。不 幸的是,这个函数已不存在。在多数情况
下,它所在的内存还未被使用,而你得到了一个极端错误的信息。但是,如果有别的代码
出在相同的地址,情况会非常糟 糕。不幸的是,我们没有一个从任务列表中注销一个任务
的方法。
既然 函数不能返回一个错误马(它是 型函 数),那么解决
方法是就不要让它返回。而是调用 或 (注 )把
进程挂起。在此之前,它设置 一个变量通知在时钟中断时调用的函数停止附加自
己。那么,在下次时钟中断时, 进程将被唤醒,而我们的函数已经不在队列中,
这样就可以很安全的删 除模块。
!"##$%&'
()
资源评论
发亮日渐稀疏
- 粉丝: 154
- 资源: 914
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Spire.Doc for Java 11.4.2 全功能无限制
- 球状石墨铁管材细分市场、总体规模、先进性、市占率行业分析报告2024年
- STM32F103作为主控芯片,结合DHT11模块、蜂鸣器模块、SGP30气体传感器模块、OLED等
- 球墨铸铁管材细分市场、总体规模、先进性、市占率行业分析报告2024年(目录版)
- jenkins/jenkins
- 汽车前照灯调节器用润滑油脂细分市场、总体规模、先进性、市占率行业分析报告2024年
- hw3.do
- 磨砂玻璃火山灰细分市场、总体规模、先进性、市占率行业分析报告2024年
- 科创板题库.docx
- Heart Attack Analysis & Prediction Dataset
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功