



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于嵌入式Linux系统进程调度时间:2009-05-12 23:32来源:Linux Website 作者:尚观 点击: 294次摘 要: 本文结合源代码着重分析了Linux进程调度的依据、策略和调度程序schedule()。 关键词: 嵌入式Linux;进程调度;实时进程;调度策略。 前言 处理机(CPU)是整个计算机系统的核 摘 要:本文结合源代码着重分析了Linux进程调度的依据、策略和调度程序schedule()。 关键词: 嵌入式Linux;进程调度;实时进程;调度策略。 前言 处理机(CPU)是整个计算机系统的核心资源,在多进程的操作系统中,进程数往往多于处理机数,这将导致各进程互相争夺处理机。进程调度对系统功能的实现及各方面的性能都有着决定性的影响,其实质就是把处理机公平、合理、高效地分配给各个进程。调度是实现多任务并发执行的必要手段,不同的操作系统有着不同的调度目标。在传统的Unix类分时系统中,保证多个进程公平地使用系统资源,提供较好的响应时间是调度的主要目标;而在强实时操作系统中,总是优先级高的任务优先获得处理机的使用权。 Linux具有内核稳定、功能强大、可裁减、低成本等特点,非常适合嵌入式应用。但是Linux内核本身并不具备强实时特性,且内核体积较大,因此,想要把Linux用于嵌入式系统,必须对Linux进行实时化、嵌入式化。Linux结合实时进程和非实时进程(普通进程)自身的特点,综合了上述几种调度策略,实现了高效、灵活的进程调度。 Linux进程调度分析 2.1Linux进程状态的描述 Linux将进程状态描述为如下五种: TASK_RUNNING:可运行状态。处于该状态的进程可以被调度执行而成为当前进程。 TASK_INTERRUPTIBLE:可中断的睡眠状态。处于该状态的进程在所需资源有效时被唤醒,也可以通过信号或定时中断唤醒。 TASK_UNINTERRUPTIBLE:不可中断的睡眠状态。处于该状态的进程仅当所需资源有效时被唤醒。 TASK_ZOMBIE:僵尸状态。表示进程结束且已释放资源,但其task_struct仍未释放。 TASK_STOPPED:暂停状态。处于该状态的进程通过其他进程的信号才能被唤醒。 2调度方式 Linux中的每个进程都分配有一个相对独立的虚拟地址空间。该虚存空间分为两部分:用户空间包含了进程本身的代码和数据;内核空间包含了操作系统的代码和数据。 Linux采用“有条件的可剥夺”调度方式。对于普通进程,当其时间片结束时,调度程序挑选出下一个处于TASK_RUNNING状态的进程作为当前进程(自愿调度)。对于实时进程,若其优先级足够高,则会从当前的运行进程中抢占CPU成为新的当前进程(强制调度)。发生强制调度时,若进程在用户空间中运行,就会直接被剥夺CPU;若进程在内核空间中运行,即使迫切需要其放弃CPU,也仍要等到从它系统空间返回的前夕才被剥夺CPU。 3 调度策略 3.1三种调度策略 (1)SCHED_OTHER。SCHED_OTHER是面向普通进程的时间片轮转策略。采用该策略时,系统为处于TASK_RUNNING状态的每个进程分配一个时间片。当时间片用完时,进程调度程序再选择下一个优先级相对较高的进程,并授予CPU使用权。 ()SCHED_FIFO。SCHED_FIFO策略适用于对响应时间要求比较高,运行所需时间比较短的实时进程。采用该策略时,各实时进程按其进入可运行队列的顺序依次获得CPU。除了因等待某个事件主动放弃CPU,或者出现优先级更高的进程而剥夺其CPU之外,该进程将一直占用CPU运行。 (3)SCHED_RR。SCHED_RR策略适用于对响应时间要求比较高,运行所需时间比较长的实时进程。采用该策略时,各实时进程按时间片轮流使用CPU。当一个运行进程的时间片用完后,进程调度程序停止其运行并将其置于可运行队列的末尾。 3.2 进程调度依据 Linux只有一个可运行队列,处于TASK_RUNNING状态的实时进程和普通进程都加入到这个可运行队列中。Linux的进程调度采用了动态优先级和权值调控的方法,既可实现上述三种调度策略,又能保证实时进程总是比普通进程优先使用CPU。描述进程的数据结构task_struct中用以下几个数据作为调度依据: Struct task_struct volatile long need_resched; /*是否需要重新调度*/long counter; /*进程当前还拥有的时间片*/long nice; /*普通进程的动态优先级,来自UNIX系统*/unsigned long policy; /*进程调度策略*/unsigned long rt_priority; /*实时进程的优先级*/;counter的值是动态变化的,进程运行时,每一个时钟滴答后,其值减1。当counter值为0时,表示该进程时间片已用完,该进程回到可运行队列中,等待再次调度。 为保证实时进程优于普通进程,Linux采取加权处理法。在进程调度过程中,每次选取下一个运行进程时,调度程序首先给可运行队列中的每个进程赋予一个权值weight。普通进程的权值就是其counter和优先级nice的综合,而实时进程的权值是它的rt_priority的值加1000,确保实时进程的权值总能大于普通进程。调度程序检查可运行队列中所有进程的权值,选取权值最大者作为下一个运行进程,保证了实时进程优先于普通进程获得CPU。Linux使用内核函数goodness()对进程进行加权处理: Static inline goodness (struct task_struct * pint this_cpu, struct mm_struct *this_mm) Int weight; Weight=-1;/*判断如果任务的调度策略被置为SCHED_YIELD的话,则置权值为1,返回。系统调用SCHED_YIELD表示为“礼让”进程,其权值为最低*/If (p-policy & SCHED_YIELD) goto out;/*先对普通进程进行处理(由于多数是普通进程,这样做有利于提高系统效率)*/If (p-policy=SCHED_OTHER) weight=p-counter; /*返回权值为进程的counter值*/*如果当前进程的counter为0,则表示当前进程的时间片已用完,直接返回*/If (! weight) Goto out;#Ifdef CONFIG_SMP If (p-processor=this_cpu) Weight+=PROC_CHANGE_PENALTY;#Endif/*对进程权值进行微调,如果进程的内存空间使用当前正在运行的进程的内存空间,则权值额外加1*/ If (p-mm=this_mm|! p-mm) Weight+=1;/*将权值加上20与进程优先级nice的差。普通进程的权值主要由counter值和nice值组成*/Weight+=20-p-nice; Goto out; /*对实时进程进行处理,返回权值为rt_priority+1000,确保优先级高于普通进程*/Weight=1000+p-rt_priority; Out:return weight;从goodness()函数可以看出,对于普通进程,其权值主要取决于剩余的时间配额和nice两个因素。nice的规定取值范围为19-20,只有特权用户才能把nice值设为负数,而表达式(20-p-nice)掉转方向成为140。所以,综合的权值在时间片尚未用完时基本上是两者之和。如果是内核进程,或者其用户空间与当前进程相同,则权值将额外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年监控设备采购与安装合作协议
- 2025年工业互联网平台光通信技术升级对光纤通信行业创新的影响研究报告
- 2025年汽车与交通设备行业汽车后市场服务创新模式研究报告
- 角函数在生活中的应用
- 高端房地产销售保密协议与竞业禁止条款
- 汽车美容连锁店租赁合同(含区域独占许可)
- 离婚抚养权变更子女财产权益保障合同
- 离婚户口迁移、赡养费及子女抚养费支付合同
- 石家庄二手房买卖价格调整及支付条款合同
- 婚姻解除后的离婚协议书及共同财产分割与子女抚养
- 医师多点执业协议书
- DB65∕T 3952-2016 反恐怖防范设置规范 学校
- 城市路灯照明节能改造技术方案及案例分析报告
- 风电居间协议合同协议
- 医院管理制度汇编
- 2025-2030中国偏头痛药行业市场发展趋势与前景展望战略研究报告
- 2025南宁市隆安县辅警考试试卷真题
- 2025年新会计法培训课件
- 《高粱酿造过程中的有害物质控制技术》论文
- 《阿Q正传》【知识精研】(高二选必下册第二单元)
- 小米生态链企业的协同发展与供应链优化
评论
0/150
提交评论