时间片轮询多任务操作系统教材dpoj.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《时间片轮询多任务操作系统教材dpoj.pptx》由会员分享,可在线阅读,更多相关《时间片轮询多任务操作系统教材dpoj.pptx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.4 时间片轮询多任务操作系统 目 录1概述概述 2整体规划整体规划 3任务控制块任务控制块 4内部变量初始化内部变量初始化 5创建任务创建任务6启动多任务环境启动多任务环境 longjmpInIsr()9任务调度任务调度 7时钟节拍中断时钟节拍中断 8任务延时任务延时 10删除任务删除任务 11运行的任务难以得知其他任务状态,任务切换时机难以把握。如果一个任务死掉,势必造成整个系统死掉。协作式多任务系统 任务任务 协作式多任务系统的特点 安全安全性性 复杂复杂性性 协作式多任务系统中,任务切换需正在运行的任务主动让出CPU,这不仅带来一些安全隐患,而且使程序设计相当的复杂。任务任务调度调度
2、任务调度交给操作系统,引入任务调度交给操作系统,引入调度算法调度算法 调度算法 时间片轮询时间片轮询 1优先级调度优先级调度2带优先级调度的时间片轮询带优先级调度的时间片轮询 3调度算法 时间片轮询时间片轮询 1t t 任务的运行时间 时间片轮询系统中任务运行情况 在时间片轮询操作系统中,CPU的执行时间被划分为若干时间片,然后让处于就绪状态的任务,按顺序轮流占用CPU。当时间片用完时,即使任务未执行完,系统也剥夺此任务的CPU使用权力。时间片长度时间片长度t一般为一般为110ms 优先级调度优先级调度2带优先级调度的时间片轮询带优先级调度的时间片轮询 3任务A 任务B任务C 所有任务相同对待
3、,分时运行。调度算法 时间片轮询时间片轮询 1优先级调度优先级调度2带优先级调度的时间片轮询带优先级调度的时间片轮询 3+低低优先级优先级+中中优先级优先级+高高优先级优先级 任务A 任务B任务C t 高高优先级任务优先级任务先先运行运行 t 高高优先级任务优先级任务抢占抢占低优先级任务低优先级任务 不同任务不同对待,优先级高任务的先运行。调度算法 时间片轮询时间片轮询 1优先级调度优先级调度2带优先级调度的时间片轮询带优先级调度的时间片轮询 3 这种调度算法情况较复杂,类型较多,自己去学习了解。任务切换时机 分配给任务的时间片已到分配给任务的时间片已到 任务主动请求调度任务主动请求调度 12
4、 任务在调用操作系统提供的“管理”类服务(如删除任务等)和“等待”类服务(如延时、获取信号量、等待消息等)时,会主动请求调度。操作系统采用一个周期性的中断来管理时间片,在这个中断服务函数中,判断运行的任务是否用完了时间片。中断中中断中中断中中断中切换任务切换任务切换任务切换任务 使用时间片轮询调度的操作系统中,会在两种下进行任务切换。目 录2整体规划整体规划 1概述概述 34任务控制块任务控制块 内部变量初始化内部变量初始化 时间片轮询操作系统规划 时间片轮询时间片轮询调度算法调度算法时间片轮询时间片轮询多任务多任务操作系统操作系统协作式协作式多任务系统多任务系统 TinyOS51 V1.0
5、TinyOS51 V1.1 TinyOS51 V1.1采用最简单的时间片轮询调度算法,在每个时钟节拍中断时调度,即分配给任务的时间片为一个时钟节拍。这样,在任务控制块中不仅不需要保存时钟任务剩余的时钟节拍,而且也不必编写计算任务的剩余时间和设置任务时间片的代码。TinyOS51从V1.0到V1.1的改变 TinyOS51 V1.0TinyOS51 v1.1任务调度函数任务调度函数tnOsSched()_tnOsSched()任务延时函数任务延时函数无tnOsTimeDly()时钟节拍处理函数时钟节拍处理函数无tnOsTimeTick()TinyOS51 V1.0和TinyOS51 V1.1的A
6、PI不同点 提供操作系统的一种基本服务延时服务,延时以时钟节拍为单位。在TinyOS51中,时钟节拍中断由用户实现,在时钟节拍中断处理函数中调用tnOsTimeTick()。void task0(void)TMOD=(TMOD&0 xF0)|0 x01;TL0 =0 x00;/TH0 =0 x00;/初始化初始化timer0,即,即 TR0 =1;/初始化时钟节拍初始化时钟节拍 ET0 =1;/中断。中断。TF0 =0;/while(1)_GucTask0+;/*一个简单的任务,无限循环中让一个简单的任务,无限循环中让*_GucTask0+。*/void task1(void)while(1)
7、_GucTask0+;/*用户实现时钟节拍中断服务函数,用户实现时钟节拍中断服务函数,*并调用并调用tnOsTimeTick()。*/void timer0ISR(void)_interrupt1 tnOsTimeTick();/*1.初始化系统初始化系统*2.创建任务创建任务*3.启动系统启动系统*/void main(void)tnOsInit();tnOsTaskCreate(task0,_GucTaskStks0;tnOsTaskCreate(task1,_GucTaskStk1);tnOsStart();资源配置与示例 n任务函数任务函数 task0()和和task1()n时钟节拍中
8、断服务函数时钟节拍中断服务函数timer0ISR()nmain函数函数 main()static idata unsigned char _GucTaskStk232;static unsigned char _GucTask0;static unsigned char _GucTask1;/分配任务堆栈分配任务堆栈/任务任务0测试变量测试变量/任务任务1测试变量测试变量 全局变量定义全局变量定义 函数实现函数实现 目 录3任务控制块任务控制块 45内部变量初始化内部变量初始化 创建任务创建任务 12概述概述 整体规划整体规划任务控制块 TinyOS51 V1.1增加了延时服务功能,因此,在T
9、CB中增加了一个记录时间的成员uiTicks。#define _TN_TASK_FLG_DEL 0 x00 /任务被删除任务被删除#define _TN_TASK_FLG_RDY 0 x01 /任务就绪任务就绪#define _TN_TASK_FLG_DLY 0 x02 /任务延时任务延时struct tn_os_tcb jmp_buf jbTaskContext;/任务上下文任务上下文 unsigned char ucTaskStat;/任务状态任务状态 unsigned int uiTicks;/任务延时时间任务延时时间;typedef struct tn_os_tcb TN_OS_TCB
10、;static data TN_OS_TCB _GtcbTasksTN_OS_MAX_TASKS;/任务控制块数组任务控制块数组与任务控制块相关代码:目 录4内部变量初始化内部变量初始化 56创建任务创建任务 启动多任务环境启动多任务环境 23整体规划整体规划 任务控制块任务控制块 tnOsInit()void tnOsInit(void)TN_OS_TASK_HANDLE thTask;/操作的任务操作的任务 for(thTask=0;thTask TN_OS_MAX_TASKS;thTask+)_GtcbTasksthTask.ucTaskStat=_TN_TASK_FLG_DEL;/任务
11、初始处于删除状态任务初始处于删除状态 _GtcbTasksthTask.uiTicks =0;/设置初值设置初值 _GthTaskCur=0;/初始运行初始运行0号任务号任务 由于TCB增加了一个uiTicks,则在tnOsInit()中进行初始化。OS初始化函数代码:目 录5创建任务创建任务67启动多任务环境启动多任务环境 任务调度任务调度 34任务控制块任务控制块内部变量初始化内部变量初始化 通常,为了提高可移植性,采用一个宏或函数来编写实现开中断和关中断程序。由于TinyOS51仅适合80C51系列单片机,故直接使用“EA=0”和“EA=1”。创建任务函数tnOsTaskCreate()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时间 片轮询多 任务 操作系统 教材 dpoj
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内