网站首页
本站精华
免费下载
游客:
注册
|
登录
|
会员
|
搜索
|
帮助
LoveUnix
»
行业应用 项目实施
» [教学]嵌入式实时操作系统介绍
‹‹ 上一主题
|
下一主题 ››
28
2/3
‹‹
1
2
3
››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: [教学]嵌入式实时操作系统介绍
carol
荣誉斑竹
幻想懒王++
UID 1859
精华
66
积分 5135
帖子 10000
活跃指数 32
LU金币 2590 个
LU金条 0 个
阅读权限 200
注册 2003-11-7
#13
大
中
小
使用道具
发表于 2004-7-8 22:37
资料
个人空间
短消息
加为好友
接下来是 RTOS 的基础知识,三部分:
任务模式:multitasking
调度
资源管理
待续吧。。。
无双
荣誉斑竹
天才猪
UID 4
精华
84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
#14
大
中
小
使用道具
发表于 2004-7-8 23:04
资料
个人空间
主页
短消息
加为好友
偶过来鼓掌了
carol做的事都不错的
不要问我结果 我只研究过程与思路
无双客栈
carol
荣誉斑竹
幻想懒王++
UID 1859
精华
66
积分 5135
帖子 10000
活跃指数 32
LU金币 2590 个
LU金条 0 个
阅读权限 200
注册 2003-11-7
#15
大
中
小
使用道具
发表于 2004-7-8 23:06
资料
个人空间
短消息
加为好友
QUOTE(无双 @ 2004-07-08 23:04:01)
偶过来鼓掌了
carol做的事都不错的
唉~~~~ 累s偶了~ 但愿偶也能学到点东西吧~
icewood
技术专家
UID 357
精华
1
积分 221
帖子 437
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-10-8
#16
大
中
小
使用道具
发表于 2004-8-20 11:47
资料
个人空间
短消息
加为好友
Carol mm休息一下,我来翻译这段:
RTOS Basics: The Task Model (Multitasking)
任务模型
这一部分描述在一个实时操作系统中任务的编模方式
在一个RTOS中,一个课题被分成几个部分,每一个部分根据他们对实时性的需求被执行。每一个部分可以被当作一个任务,如图三所示
因为实时的需要,这些任务需要并发处理。一个序列性的处理方法不能满足他们对实时性的需求。然而,如果没有RTOS,并发的任务处理将会需要多CPU。然而,在RTOS当中,只要CPU能力足够满足应用需要,我们就只需要一颗CPU来进行并发的任务处理。
为了处理好任务之间对处理器需求的兑争关系,我们用task-state模型定义在系统运行期间内任何一个时间点的任务状态。它同时也描述了什么时候因为什么原因哪一个任务的状态发生了变化(任务状态变迁)。任何RTOSf都会定义这样一个task-state模型。
示例,OSEK/VDX OS的task-state模型如图4所示。对每一个任务而言,这个模型定义了三个主要的状态和一个可选的状态。
我们在图4中看到任务有如下4种状态:
Suspended 这是系统启动后的默认状态。在这种状态下,任务为inactive。通过RTOS的激活,任务状态可以过渡为Ready.
Ready 任务在这种状态下是活动的并且等待进入Running状态。我们用RTOS的scheduler来决定在什么时候将处于Ready的任务过渡到Running状态,我们也用Scheduler来决定是否将任务变回到Ready状态,这取决于RTOS固有的算法以及其他任务的状态。
Runnig- 在这种状态下任务得到了CPU时间来执行它的指令。在同一个时间点,只有一个任务能够处于这种状态。我们用RTOS的一个Function来将这种状态下的任务变回Suspended状态,这样任务就停止执行并且deactivated.我们用另一个RTOS的Function来这种状态下的任务变到Waiting状态,这时任务同样停止了执行,但是保持活动状态。
Waiting – 在这种状态下的任务在event(RTOS的另外一个service)进行等待。如果这个event被设置了的话,任务就变回Ready状态。这是OSEK/VDX OS中任务的一个可选状态。
------------------------------------------------
心有多大,舞台就有多大。
------------------------------------------------
icewood
技术专家
UID 357
精华
1
积分 221
帖子 437
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-10-8
#17
大
中
小
使用道具
发表于 2004-8-20 11:48
资料
个人空间
短消息
加为好友
每天翻一段
------------------------------------------------
心有多大,舞台就有多大。
------------------------------------------------
carol
荣誉斑竹
幻想懒王++
UID 1859
精华
66
积分 5135
帖子 10000
活跃指数 32
LU金币 2590 个
LU金条 0 个
阅读权限 200
注册 2003-11-7
#18
大
中
小
使用道具
发表于 2004-8-20 13:01
资料
个人空间
短消息
加为好友
哈哈~~~ 好极了,偶也可以坐享其成了~ 谢谢 icewood
icewood
技术专家
UID 357
精华
1
积分 221
帖子 437
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-10-8
#19
大
中
小
使用道具
发表于 2004-8-23 13:43
资料
个人空间
短消息
加为好友
今天翻译这一段:
任务调度
为了有效地协同不同任务在竞争处理器时的关系,我们用scheduler来决定处理器在什么时候执行什么任务。
Scheduler在处理任务之间关系时,有两种策略:preemptive(和cooperative。在一个preemptive系统中,一个任务在它的执行时间里被赋予了优先权,这意味着scheduler能够根据系统所处的阶段将处理器分配给其他的任务。对于需要长执行时间的任务来说,赋予优先权是一个非常好的方法;重要性更高的任务将比重要性低的任务更有效地利用处理器。
在一个cooperative系统中,每一个任务在它的执行时间里独占CPU。除非任务自动放弃对处理器的控制,否则任务间的切换不会出现。
有两种基本的调度方式:静态调度(根据时间来进行调度),和动态调度(根据事件来调度)。在静态调度方式下,提前定义了任务的执行顺序。在动态调度的方式下,一个任务在运行其间是否被执行由系统状态来决定。Scheduler(调度器)根据当前的任务状态进行调整。在动态调度方式下,只有当存在实际需要时(出现一个外部事件),处理器才执行任务,处理器的能力将得到更有效的利用(这与静态调度方式无关)。
可能的调度方式
有许多不同的任务调度方法。在这部分中我们将看到三个通常用到: priority control(优先权控制法),time slice(时间片法),FIFO(first in first out,先来先出法?)。多种方法可以组合到一个操作系统中。
在一个priority-controlled scheduler(优先权控制调度器)中,OS根据每一个任务的重要程度赋予它一个优先级。开发者可以利用优先级来控制一个任务执行的速度和频率。这意味着拥有更高优先权的任务将被更快的执行完毕。可能有这样一种实施方式,所有任务位于不同优先级的队列中(在同一个队列中的任务拥有同样的优先权)。
当所有拥有更高优先权的队例为空(被调度执行完毕),特定队例中位于前面的任务将被调度执行。在同一个优先权队列内部,任务同样需要调度。因为优先权相等,需要某种其他的机制来决定不同任务的先后调度顺序。比如说FIFO(先来先出)或者其他技巧。具有代表意义的是,优先权控制法一般与动态调度结合在一起,执行顺序非静态;和preemptive调度结合以允许拥有更高优先权的任务优先执行。
Time slice(时间片法,also known as ROUND ROBIN)是另外一种调度方法。一个小的时间单元,我们称之为时间片或时间量,被定义用来执行任务。一个最简单的情况就是所有的时间片拥有同样的时间长度,不过他们也可以拥有不同的长度。所有将被执行的任务列成一个环形的队列,新激活的任务被添加到这个环形队列的尾部。
CPU调度器浏览整个队列,为每一个任务分配时间片。对于任务而言,时间片末端点是一个期限,任务将被终止或暂时停止,在队列结束该任务的下一个时间片继续执行直至结束。如果任务在时间片结束前完成,那么它将会主动释放掉处理器。
在这两种情况中,CPU调度器将处理器分配给队列中的下一个任务。当同时出现多个拥有同样优先级的任务竞争使用CPU时,经常要用到时间片法。时间片法是最简单的,也是应用得最广的CPU调度算法之一,但是这种调度方法并没有以一种最有效的方法来利用CPU能力。因为当一个任务在时间片末端点之前结束的话,在下一个任务执行之前,CPU总是处理空闲状态。
FIFO(firsr come first server,先来先服务)排序法是最基本的队列调度原则。在FIFO排序法中,所有的任务被平等的置于一个队列中。他们按照在队列中的顺序被执行。在复杂程度较低或对顺序性要求较高的系统中,这是一种非常简单而合适的调度机制。
OSEK/VDX OS的一个基于优先权和动态调度的例子如下所示:
软件开发人员通过任务优先权和事先选择好的调度机制来决定任务的执行顺序。只被激活的任务才进行Ready状态并且进入拥有一定优先权的队列。图5说明了在调度器根据优先权以及激活顺序定义好了执行顺序以后,一个处理器是如何执行这一系列任务的。(在OSEK/VDX OS中,任务既可能是preemptive,也可能是cooperative的,这取决于任务自身的设置)
------------------------------------------------
心有多大,舞台就有多大。
------------------------------------------------
zdygk
荣誉斑竹
极品果壳大将军
UID 114
精华
17
积分 1263
帖子 2399
活跃指数 107
LU金币 1022 个
LU金条 16619 个
阅读权限 200
注册 2003-9-24
#20
大
中
小
使用道具
发表于 2004-8-23 18:16
资料
个人空间
主页
短消息
加为好友
一个崇拜者,又诞生了。
天佑中华 祝福同胞
Major : ETL AIX+JAVA+DB2
Hobby: shell+os-developer
DB2 is the Best Pure RDBMS; Oracle is an aspirant
icewood
技术专家
UID 357
精华
1
积分 221
帖子 437
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-10-8
#21
大
中
小
使用道具
发表于 2004-8-23 22:45
资料
个人空间
短消息
加为好友
QUOTE(zdygk @ 2004-08-23 18:16:29)
一个崇拜者,又诞生了。
[right][snapback]384040[/snapback][/right]
还有最后一段,明天翻译完
------------------------------------------------
心有多大,舞台就有多大。
------------------------------------------------
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
icewood
技术专家
UID 357
精华
1
积分 221
帖子 437
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-10-8
#22
大
中
小
使用道具
发表于 2004-8-24 10:24
资料
个人空间
短消息
加为好友
RTOS基础:同步资源访问
RTOS通常会定义一个资源管理方法以协调不同任务对资源的访问。我们这里所说的资源,包括硬件资源,比如内存,I/O端口,和软件资源,比如全局函数的全局变量。
在RTOS中,资源对所有任务而言都是可以访问的,但是显而易见的,我们必须注意不同的任务不能在访问同一种资源时产生冲突。在preemptive系统中,任务可以在访问资源时抢先。当这种情况发生时,其他任务可能同时在访问同样的资源,这样,一种不一致的状态就出现了,因为其他任务还没有完成对资源的访问。
在preemptive系统中,资源管理器通过同步任务以阻止这种情况下对资源的并发访问。
就像任务调度一样,RTOS拥有一些资源控制协议。在这一部分中,我们讨论三个比较常见的:
旗语协议(semaphore),优先权限制协议,最高锁定者优先权协议
旗语协议
通过旗语标记的方法,某一个任务在使用某资源时就会对该资源设置一个标记,表示该资源正在使用。只有某一资源没有被其他任务占用时,它才可能被某任务获得。在一个简单有效的控制系统中,它不会出现我们已经知道的某一些典型问题。旗语协议的问题就是优先权颠倒,以及死锁。
优先权颠倒就是一个更高优先权的任务没有在它应当运行时执行,相反,执行了一个一个较低优先权的任务。图6演 示了优先权颠倒的问题:当一个拥有更高优先权的任务(任务3)不得不等待被抢先运行拥有较低优先权的任务1占有的资源时,这种优先权颠倒的情况就发生了。
某一个优先权介于任务1 和任务3 之间任务在这其间有机会执行。任务2在执行时,任务1 没能够释放任务3急需的资源。这种情况只有在任务2结束时才能够解决。但是这就意味着任务2在具有比它更高优先权的人任务3之前运行(优先权倒置)
旗语协议同时也有可能导致死锁。假定两个任务必须用到两个资源,它们用不同的顺序锁定这两个资源。任务A用标志S1锁定第一个资源。接着,和正常的情况一样,任务B正在运行并用标志2锁定了第二个资源。任务B需要用到第一个资源,然而它已经被任务A锁定了。
任务B所能做的就是将对处理器的控制权传给任务A,然后任务A试图访问第二个资源。但是失败了,因为任务B锁定它了。于是任务A重新将处理器控制权传给任务B,但是任务B同样不能执行,于是处理器控制权又被传给任务A,就这样陷入死循环。这两个任务被锁死了,因为它们在同时等待被对方锁定的资源。图7演示了这种情况:
优先权限制协议
在优先权限制协议中,每个资源有自己优先权限制。该优先权限制等于可以访问该资源的所有任务中所拥有的最高优先权。任务在访问该资源过程中,将会获得该资源所具有优先权,访问完毕以后,恢复原有的优先权。所有优先权低于资源优先权限制的任务都不可能优先占有该资源,因此,所有其他试图访问某资源的任务都不能优先占有该资源。优先占有的情况只有在某一任务对该资源的访问结束,并且原任务优先权恢复以后,才会出现。
这种方法防止了优先占有资源情况的出现,这通常是导致资源访问冲突的主要原因。因此,像优先权倒置和死锁的现像就不会发生了。但是,这种协议的缺点就是,所有优先权低于该优先权限制的任务将会被排斥在外,即使他们不会使用该资源。OSEK/VDX OS 使用这种资源管理模式。
最高锁定者优先权协议
该协议类似于优先权限制协议,有区别的是,一个没有占有资源,拥有比资源的优先权限制低的任务,能够比正在使用资源的某一更低优先权的任务优先占用该资源。为了达到这个目的,调度器需要考虑两种任务优先权,初始优先权和资源优先权。
概要
这一部分介绍了涉及同步对共享资源访问的一些概念。这其中的一些协议由于一些精妙的作用而变得比较复杂。从这一章中,我们能得到的一个主要观点就是,RTOS必须控制对共享资源的并发访问;我们可能用到的资源调度机制有十分重要的意义。
由于时间仓促,翻译得有一些直板
------------------------------------------------
心有多大,舞台就有多大。
------------------------------------------------
[广告]
论坛新开
【DB2产品家族】
【投资理财】
【行业应用】
板块
carol
荣誉斑竹
幻想懒王++
UID 1859
精华
66
积分 5135
帖子 10000
活跃指数 32
LU金币 2590 个
LU金条 0 个
阅读权限 200
注册 2003-11-7
#23
大
中
小
使用道具
发表于 2004-8-24 10:47
资料
个人空间
短消息
加为好友
icewood 好厉害`~~ 翻译是件辛苦活哦
[广告]
论坛新开
【DB2产品家族】
【投资理财】
【行业应用】
板块
icewood
技术专家
UID 357
精华
1
积分 221
帖子 437
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-10-8
#24
大
中
小
使用道具
发表于 2004-8-24 12:43
资料
个人空间
短消息
加为好友
QUOTE(carol @ 2004-08-24 10:47:56)
icewood 好厉害`~~ 翻译是件辛苦活哦
[right][snapback]384151[/snapback][/right]
干苦力活可是俺的特长
------------------------------------------------
心有多大,舞台就有多大。
------------------------------------------------
[广告]
论坛新开
【DB2产品家族】
【投资理财】
【行业应用】
板块
28
2/3
‹‹
1
2
3
››
投票
交易
悬赏
活动
LoveUnix
专项技术区
> AIX -IBM UNIX
> 其他UNIX & Linux
> i5 (AS400) & IBM大机
> PC Server & HPC
> 存储设备
> 备份软件
> 网络 & 安全
> 编程开发 & Rational
> DB2 & Informix
> ORACLE等数据库
> 中间件技术
行业综合区
> 职业咨询 前程无忧
> 培训认证 行业入门
> 行业应用 项目实施
> 产品信息 商务交流
> Free download下载
交流灌水区
> 蓝色太平洋
> 墨香雅韵
> 共建家园
> 博客专区
当前时区 GMT+8, 现在时间是 2008-7-25 12:46
乐悠LoveUnix论坛-京ICP备05005823号
Thanks to
Discuz!
© 2001-2007 Power by
LoveUnix.net
Processed in 0.058022 second(s), 6 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
乐悠LoveUnix
-
Archiver
-
WAP
界面风格
----------
Discuz! 5 Default
新DISCUZ风格
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计