查看: 1673|回复: 0
打印 上一主题 下一主题

任务动态载入与结束:

[复制链接]
跳转到指定楼层
沙发
发表于 2015-9-23 16:09:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
任务动态载入与结束:

在task_switch()里,当发现该进程的task_sp值为0则不再保存该任务的栈指针,这个任务也就消失了.
在搜索下一个可执行任务时,检测task_sp值是否非0.为零则表示该位置无任务.
void task_switch(){

        if(task_sp[task_id] != 0)//如果该任务没被删除,则保存当前栈指针.
                task_sp[task_id] = SP;

        while(1){
                task_id++;//task_id切到下一个.实际上不只是增1这么简单,还要取模.这里只是示范,所以就不写全了.

                if( task_sp[task_id] != 0)//实际上这里还要检查task_sleep的值.但那跟现在所说无关,所以暂时去除掉那部分代码
                        break;
        }
...
}

调用task_switch()前清除自已的task_sp值.
#define task_exit() task_sp[task_id] = 0, task_switch()
附带说下,调用task_delete(tid) 可删除tid指定的进程.转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表