最简单的多任务模型.ppt
《最简单的多任务模型.ppt》由会员分享,可在线阅读,更多相关《最简单的多任务模型.ppt(38页珍藏版)》请在三一文库上搜索。
1、5.2 最简单的多任务模型,目 录,任务切换模型范例分析,双任务切换模型,待解决的问题,setTaskJmp()的实现,task 1,双任务切换模型,保存task0上下文,恢复task1上下文并跳转,保存task1上下文,恢复task0上下文并跳转,task 0,任务切换,双任务是多任务最简单的典型情况,而任务切换是学习 多任务操作系统的重点和难点。,多任务操作系统核心的基本原理,在源代码层次,任务也是一个函数。,双任务切换模型,双任务是多任务最简单的典型情况,而任务切换是学习 多任务操作系统的重点和难点。,任务切换,task 0.1,task 0.2,task 1.1,task 1.2,可将
2、任务函数分成若干程序段。,在源代码层次,任务也是一个函数。,longjmp(jbTask0),setjmp(jbTask1),longjmp(jbTask1),setjmp(jbTask0),双任务切换模型|setjmp和longjmp的作用,保存task0上下文,恢复task1上下文并跳转,保存task1上下文,恢复task0上下文并跳转,双任务是多任务最简单的典型情况,而任务切换是学习 多任务操作系统的重点和难点。,任务切换,task 0.1,task 0.2,task 1.1,task 1.2,若要实现函数之间的跳转, 可使用非局部跳转函数setjmp()和longjmp()。,双任务切
3、换模型|setjmp和longjmp的作用,保存task0上下文,恢复task1上下文并跳转,保存task1上下文,恢复task0上下文并跳转,双任务是多任务最简单的典型情况,而任务切换是学习 多任务操作系统的重点和难点。,任务切换,task 0.1,task 0.2,task 1.1,task 1.2,保存task0 上下文,setjmp(jbTask1),longjmp(jbTask1),setjmp(jbTask0),longjmp(jbTask0),若要实现函数之间的跳转, 可使用非局部跳转函数setjmp()和longjmp()。,恢复task1 上下文并跳转,双任务切换模型|set
4、jmp和longjmp的作用,保存task0上下文,恢复task1上下文并跳转,保存task1上下文,恢复task0上下文并跳转,双任务是多任务最简单的典型情况,而任务切换是学习 多任务操作系统的重点和难点。,任务切换,task 0.1,task 0.2,task 1.1,task 1.2,setjmp(jbTask1),longjmp(jbTask1),setjmp(jbTask0),longjmp(jbTask0),若要实现函数之间的跳转, 可使用非局部跳转函数setjmp()和longjmp()。,task 0.1,task 1.1,双任务切换模型和程序分析,保存task0上下文,恢复t
5、ask1上下文并跳转,保存task1上下文,恢复task0上下文并跳转,任务切换,task 0.2,task 1.2,setjmp(jbTask1),longjmp(jbTask1),setjmp(jbTask0),longjmp(jbTask0),task 0,task 1,void task0(void) task0Init(); while (1) task0_program1; ctmp = setjmp(jbTask0); if (ctmp = 0) longjmp(jbTask1); task0_program2; ,void task1(void) task1Init(); wh
6、ile (1) task1_program1; ctmp = setjmp(jbTask1); if (ctmp = 0) longjmp(jbTask0); task1_program2; ,双任务切换模型和程序分析,保存task0上下文,恢复task1上下文并跳转,保存task1上下文,恢复task0上下文并跳转,task 0.2,task 1.2,setjmp(jbTask1),longjmp(jbTask1),setjmp(jbTask0),longjmp(jbTask0),void task0(void) task0Init(); while (1) task0_program1;
7、ctmp = setjmp(jbTask0); if (ctmp = 0) longjmp(jbTask1); task0_program2; ,void task1(void) task1Init(); while (1) task1_program1; ctmp = setjmp(jbTask1); if (ctmp = 0) longjmp(jbTask0); task1_program2; ,task 0.1,task 1.1,task 0,task 1,任务0和1都 初始化完成,双任务切换模型和程序分析,保存task0上下文,恢复task1上下文并跳转,保存task1上下文,恢复ta
8、sk0上下文并跳转,task 0.2,task 1.2,setjmp(jbTask1),longjmp(jbTask1),setjmp(jbTask0),longjmp(jbTask0),void task0(void) task0Init(); while (1) task0_program1; ctmp = setjmp(jbTask0); if (ctmp = 0) longjmp(jbTask1); task0_program2; ,void task1(void) task1Init(); while (1) task1_program1; ctmp = setjmp(jbTask1
9、); if (ctmp = 0) longjmp(jbTask0); task1_program2; ,task 0.1,task 1.1,task 0,task 1,任务0和1都已运行, 并保存了各自的上下文,双任务切换模型和程序分析,保存task0上下文,恢复task1上下文并跳转,保存task1上下文,恢复task0上下文并跳转,task 0.2,task 1.2,setjmp(jbTask1),longjmp(jbTask1),setjmp(jbTask0),longjmp(jbTask0),void task0(void) task0Init(); while (1) task0_p
10、rogram1; ctmp = setjmp(jbTask0); if (ctmp = 0) longjmp(jbTask1); task0_program2; ,void task1(void) task1Init(); while (1) task1_program1; ctmp = setjmp(jbTask1); if (ctmp = 0) longjmp(jbTask0); task1_program2; ,task 0.1,task 1.1,task 0,task 1,则使用longjmp(jbTask1)后, 切换到setjmp(jbTask1) 保存的位置,0,运行task0.
11、1,保存task0 上下文,双任务切换模型和程序分析,task 0.2,task 1.2,setjmp(jbTask1),longjmp(jbTask1),longjmp(jbTask0),void task0(void) task0Init(); while (1) task0_program1; ctmp = setjmp(jbTask0); if (ctmp = 0) longjmp(jbTask1); task0_program2; ,void task1(void) task1Init(); while (1) task1_program1; ctmp = setjmp(jbTask
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 任务 模型
链接地址:https://www.31doc.com/p-3391885.html