uCOSIII实时操作系统(重入函数,调度算法,嵌入式系统中断)

目录

可重入函数和不可重入函数:

基于优先级的调度算法:

嵌入式系统中断:


可重入函数和不可重入函数:

函数可重入是指一函数可以被多个任务调用,而不需要担心在任务切换的过程中,代码的执行会产生错误的结果。可重入函数任何时候都可以被中断,一段时间之后又可以运行,而相应的数据不会丢失。可重入函数或者只会使用局部变量,即变量保存在CPU寄存器中或堆栈中。如果使用全局变量,则要对全局变量予以保护。

eg:

void strcpy(char *dest,char *src)
{
    while(*dest++ = *src++)
{

}
*dest = NULL;
}

函数Strcpy()做字符串复制。因为参数是存在堆栈中的,故函数Strcpy()可以被多个任务调用,而不必担心各任务调用函数期间会互相破坏对方的指针。

如果函数被多个任务调用,可能产生错误的结果,就是不可重入函数。

不可重入函数的例子,Swap()是一个简单函数,它使函数的两个形式变量的值互换。为便于讨论,假定使用的是可剥夺型内核,中断是开着的,Temp定义为整数全程变量。

eg:

int Temp;
void swap(int *x ,int *y)
{
    Temp = *x;//1
    *x = *y;//2
    *y =Temp;//3
}

把swap函数设置为任何函数可以调用,如果一个低优先级的任务正在执行swap()函数假设执行到

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值