嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)

上传人:kms****20 文档编号:51241934 上传时间:2018-08-13 格式:PPT 页数:13 大小:373.50KB
返回 下载 相关 举报
嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)_第1页
第1页 / 共13页
嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)_第2页
第2页 / 共13页
嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)_第3页
第3页 / 共13页
嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)_第4页
第4页 / 共13页
嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)》由会员分享,可在线阅读,更多相关《嵌入式μcos-ii内核实验四(哲学家就餐问题的实现)(13页珍藏版)》请在金锄头文库上搜索。

1、内核实验(四)哲学家就餐问题的实现实验目的掌握在基于嵌入式实时操作系统C/OS-II的应 用中,任务使用信号量的一般原理。通过经典的 哲学家就餐实验,了解如何利用信号量来对共享 资源进行互斥访问。 5个任务:Task0、Task1、 Task2、 Task3、 Task4 5个信号量:Sem0, Sem1, Sem2, Sem3, Sem4 优先级: Task0Task1Task2Task3Task4 每个任务i均作相同的工作: 申请信号量i, (i+1) mod 5; 保持信号量; 释放信号量(i+1) mod 5,i实验设计实验设计1、Task0 Task4先后执行,显示“thinking

2、” , 然后挂起;2、Task0 Task4延时先后到期,显示“hungry” ,然后挂起;3、 Task0、2、4、1、3先后获得信号量号,显示“eating ”,然后挂起 ;4、运行流程#define OS_TASK_CREATE_EN 1 /*允许使用OSTaskCreate()*/#define OS_MAX_TASKS 6 /*最多可以创建6个任务*/#define OS_TASK_STAT_EN 0 /* 禁止统计任务*/ #define OS_TASK_CREATE_EXT_EN 1 /*是否允许使用OSTaskCreateExt()*/操作系统配置#define OS_TICK

3、S_PER_SEC 200 /*设置每秒之内的时钟节拍数目*/#define OS_SEM_EN 1 /*是否允许使用信号量功能*/#define OS_MAX_EVENTS 5 /*最多可以有5个事件*/#define OS_LOWEST_PRIO 7/*任务优先级不可以大于7*/操作系统配置 OSSemCreate() :建立并初始化一个信号量本实验中所用到的C/OS-II相关函数 OSSemPend() :申请信号量 OSSemPost() :释放信号量 OSTimeDly():将一个任务延时若干个时钟节拍 OSTaskCreateExt () : 创建一个任务、创建起始任务TaskSt

4、artOSTaskCreateExt(TaskStart,(void *)0,源程序说明TaskStart负责:安装时钟中断服务例程 ucos_x86_idt_set_handler(0x20,(void *)OSTickISR,0x8e00);初始化操作系统时钟 ucos_timer_init();创建信号量 forki = OSSemCreate(1);创建应用任务 TaskStartCreateTasks();源程序说明2、创建应用任务Task0, ,Task4for (i = 0; i N_TASKS; i+) TaskDatai = i; OSTaskCreate(Task, (void *) 3、应用任务源程序说明void Task (void *pdata) for (;) /* 无限循环 */TASK_Thinking_To_Hungry(i);OSSemPend(forki, 0, OSSemPend(forkj, 0, /* Acquire semaphores to eat */TASK_Eat(i);OSSemPost(forkj);OSSemPost(forki); /* Release semaphore */OSTimeDly(200); /* Delay 100 clock tick */源程序说明输出信息

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号