打印

小型多任务嵌入式系统

[复制链接]
530|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
peace555|  楼主 | 2015-10-29 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 早期的处理器非常昂贵,所以那时的多任务用于实现在单处理器上支持多用户。这
类系统中的调度算法侧重于让每个用户” 公平共享” 处理器时间。
 随着处理器功能越来越强大,价格却更偏宜,所以每个用户都可以独占一个或多个
处理器。这类系统的调度算法则设计为让用户可以同时运行多个应用程序,而计算
机也不会显得反应迟钝。例如某个用户可能同时运行了一个字处理程序,一个电子
表格,一个邮件客户端和一个WEB浏览器,并且期望每个应用程序任何时候都能
对输入有足够快的响应时间。
桌面电脑的输入处理可以归类为” 软实时” 。为了保证用户的最佳体验,计算机对每
个输入的响应应当限定在一个恰当的时间范围——但是如果响应时间超出了限定范围,
并不会让人觉得这台电脑无法使用。比如说,键盘操作必须在键按下后的某个时间内作
出明显的提示。但如果按键提示超出了这个时间,会使得这个系统看起来响应太慢,而
不致于说这台电脑不能使用。
仅仅从单处理器运行多线程这一点来说,实时嵌入式系统中的多任务与桌面电脑的
多任务从概念上来讲是相似的。但实时嵌入式系统的侧重点却不同于桌面电脑——特别
是当嵌入式系统期望提供” 硬实时”行为的时候。
沙发
关小波522| | 2015-10-29 23:36 | 只看该作者
硬实时功能必须在给定的时间限制之内完成——如果无法做到即意味着整个系统
的绝对失败。汽车的安全气囊触发机制就是一个硬实时功能的例子。安全气囊在撞击发
生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会使得驾驶员受到
伤害,而这原本是可以避免的。

使用特权

评论回复
板凳
zb0830| | 2015-10-30 10:24 | 只看该作者
一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。

使用特权

评论回复
地板
飞翔的控制器| | 2015-10-30 10:34 | 只看该作者
这个是个免费的操作系统,不错

使用特权

评论回复
5
zheng522| | 2015-10-30 10:43 | 只看该作者
void ATaskFunction( void *pvParameters )
{
/* 可以像普通函数一样定义变量。用这个函数创建的每个任务实例都有一个属于自己的iVarialbleExample变
量。但如果iVariableExample被定义为static,这一点则不成立 – 这种情况下只存在一个变量,所有的任务实
例将会共享这个变量。  */
int iVariableExample = 0;
/* 任务通常实现在一个死循环中。  */
for( ;; )
{
/* 完成任务功能的代码将放在这里。  */
}
/* 如果任务的具体实现会跳出上面的死循环,则此任务必须在函数运行完之前删除。传入NULL参数表示删除
的是当前任务 */
vTaskDelete( NULL );
}

使用特权

评论回复
6
zheng522| | 2015-10-30 10:52 | 只看该作者
应用程序可以包含多个任务。如果运行应用程序的微控制器只有一个核(core),那么在任意给定时间,实际上只会有一个任务被执行。这就意味着一个任务可以有一个或两个状态,即运行状态和非运行状态。我们先考虑这种最简单的模型——但请牢记这其实是过于简单,我们稍后将会看到非运行状态实际上又可划分为若干个子状态。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

620

帖子

2

粉丝