- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内核实验四(哲学家就餐问题的实现)概要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、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_TICKS_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 () : 创建一个任务 1、创建起始任务TaskStart OSTaskCreateExt(TaskStart, (void *)0, TaskStartStk[TASK_STK_SIZE - 1], TASK_START_PRIO, TASK_START_ID, TaskStartStk[0], TASK_STK_SIZE, TaskUserData[TASK_START_ID], 0); 源程序说明 TaskStart负责: 安装时钟中断服务例程 ucos_x86_idt_set_handler(0x20,(void *)OSTickISR,0x8e00); 初始化操作系统时钟 ucos_timer_init(); 创建信号量 fork[i] = OSSemCreate(1); 创建应用任务 TaskStartCreateTasks(); 源程序说明 2、创建应用任务Task0, ……,Task4 for (i = 0; i N_TASKS; i++) { TaskData[i] = i; OSTaskCreate(Task, (void *)TaskData[i], TaskStk[i][TASK_STK_SIZE - 1], i+1); } 3、应用任务 源程序说明 void Task (void *pdata) { …… for (;;) { /* 无限循环 */ TASK_Thinking_To_
您可能关注的文档
- 冀教版四年级下英语_Lesson16_How do you go to school概要1.ppt
- 冀教版四年级下册英语lesson7Months of the year概要1.ppt
- 校园足球主题班会概要1.ppt
- 树立法治思维 推进依法行政概要1.ppt
- 冀教版四年级英语上册Lesson-10--Brush-and-Wash概要1.ppt
- 冀教版九年级英语unit5 Lesson25概要1.ppt
- 冀教版四年级下册英语Lesson17What Do You Like to Do?概要1.ppt
- 冀教版四年级英语上册教案第二单元新概要1.doc
- 校园、家庭、社会礼仪概要1.ppt
- 冀教版四年级下册Unit 2 Days and Mothers Lesson 7 关于month的介绍概要1.pptx
- 2025年通榆县政协办公室综合保障中心公开选调事业编制工作人员备考题库(1人)附答案详解(研优卷).docx
- 2025年小学语文教师基本功大赛测试题(附答案).docx
- 购物中心对餐饮类商户的运营管理手册.pdf
- 厂区狗牙草绿化养护方案及养护工作计划最新.docx
- 2026年西安铁路职业技术学院单招《数学》能力检测试卷及参考答案详解【培优】.docx
- 2026年西安高新科技职业学院单招《数学》检测卷附答案详解(典型题).docx
- 弹跳锁技术标准.doc
- 2025年初一语文教辅试卷及答案.doc
- 卓越八期项目安全管控策划(可编辑).pptx
- 2026年西昌民族幼儿师范高等专科学校单招《数学》考试彩蛋押题必考附答案详解.docx
原创力文档


文档评论(0)