| | 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 所有产品 | 留言 | 论坛 | 购买指南 | 网络协议 | 驱动设计 | | |
![]() |
![]() |
| 您现在的位置: 21嵌入式控制研究室 >> 嵌入式操作系统 >> ucOSII >> 文章正文 |
|
|||||
| 一个简单实现的嵌入式OS--LINOS(续1) | |||||
| 作者:佚名 文章来源:本站原创 点击数: 更新时间:2005-11-30 | |||||
|
A. linos系统暂设为32个优先级,提供4套调度算法,可根据具体应用简单配置如下: #define SCHEDULE_PRI 0//1, 2, 3 注: 0: W(E)P(E) 1: W(S)P(S) 2: W(E)P(S) 3: W(S)P(E) //W-weight, P-priority, E-exponent, S-Scale 权重决定了进程的优先级范围,目前支持0-3,其中0为实时,1-3为一般应用范围。在每个权重序列内,分别有8个优先级微调值,其微调方式有指数和等比两种选择。其中等比可以选择等比因子来调整调度性能,系统默认如下: #define PFACTOR 1 //for priority adjust 当系统中运行有实时状态的进程时,其优先级在0-7内,权重为0,如果实时进程不主动放弃CPU,调度算法将永远在实时任务序列中选择下一个进程运行。其他所有非实时进程都处于挂起状态。因此对于实时任务,在处理完毕时应马上调用sleep或wait放弃CPU,等待下一个实时任务。 对于权重在1-3范围的进程,调度时权重选择也有等比和指数两种算法。 B. 指数算法 用于嵌入式任务的系统,必须是CPU抢占式,但却不能永远被一个进程或某几个进程抢占。应该基于优先级,给予这个进程在CPU时间片上运行的机会,公平性取决于调度算法能否反应其优先级。 假设有3个优先级分别处于23,24,25的进程A, B, C。如果根据指数算法,则 A抢占CPU的时间为B的2倍,B为C的2倍。假设有CPU运行了7个时间片。那么,A,B,C抢占时间片次数分别为: A(4) B(2) C(1) 当运行14个时间片时,则是,:A(8) B(4) C(2) 调度算法除了决定抢占时间片的次数,还要灵活调整分布状态,比如14个时间片,我们当然不希望分布是这样: A ->A ->A ->A ->B ->B ->C -> A -> A -> A ->A ->B >B ->C 因为A进程在放弃时间片让B进程调度时,要一直等到C调度才能够抢占到CPU,中间要等待3个时间片,当24个优先级上都有进程需要调度时,则最高优先级进程要等待24个时间片,这对于实时系统是不能容忍的。 因此开发了如下的分布算法: A ->A ->B ->A ->B ->A ->C -> A ->A ->B ->A ->B ->A ->C 这样A进程总是能够很快地抢占到CPU,同时又给了B和C进程运行的机会。 C.等比算法 同样假设有3个优先级分别处于23,24,25的进程A, B, C。假设有CPU运行了6个时间片。那么根据等比算法,A,B,C抢占时间片次数分别为: A(3) B(2) C(1) 当运行12个时间片时,则是:A(6) B(4) C(2) 同样开发了用于等比分布的调度算法,12个时间片的分布如下: A ->B ->A ->C ->A ->B -> A ->B ->A ->C ->A ->B 这4套优先级策略根据其调度算法特点,可以看出W(E)P(E)调度与优先级是指数下降的,更适合实时调度。W(S)P(S)调度与优先级是斜率为1/2下降的,比较缓和。而W(E)P(S)和W(S)P(E)则处于其间,一个侧重权重,一个侧重优先级微调,可在具体应用中合理配置。 |
|||||
| 文章录入:fengfeiyi 责任编辑:fengfeiyi | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | | |
![]() |
站长:康草科技 |