全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一实验原理:掌握在基于嵌入式实时操作系统C/OS-II的应用中,任务使用信号量的一般原理。通过哲学家问题实验,了解如何利用信号量来对共享资源进行互斥访问。二实验平台:PC、XP操作系统、ADS集成开发环境三实验目的复习对进程同步的机制,并加强学生动手能力,不仅让学生从原理上懂得操作系统,而且让学生实践,让学生自己动手写操作系统部分代码。四:实验内容: 哲学家动作: thinking hungry eating ph 1 thinking! ph 2 thinking! . ph 1 hungry! ph 2 hungry! .ph 1 eating! ph 2 eating! . 实现:while( 1 ) 显示ph x thinking; OSTimeDly()随机延时; 显示ph x hungry; OSTimeDly()随机延时; 显示ph x eating; OSTimeDly()随机延时; 五:实验要求: 能在屏幕上输出5个哲学家的动作,分别是thinking,hungry,eating,如下所示: 哲学家 1 thinking, 哲学家 2 thinking, . 哲学家 1 hungry, 哲学家 2 hungry, . 哲学家 1 eating, 哲学家 2 eating, .六:实验代码: 在ADS1.2中先后导入一下文件 最后编写主函数main的程序,代码如下:#include./ucos-ii/includes.h /* uC/OS interface */#include string.h#include gui.h/task stack size#ifdef SEMIHOSTED#defineTASK_STACK_SIZE(64+SEMIHOSTED_STACK_NEEDS)#else#defineTASK_STACK_SIZE10*1024#endif/*define task*/#define TASK_PRIO 2#define TASK_STK_SIZE 512INT8U *err; /用于退出的键OS_EVENT *SEM5; /定义对应的信号量指针数组extern char keyflag;OS_STK MyTaskStk1TASK_STK_SIZE; /定义任务堆栈区OS_STK MyTaskStk2TASK_STK_SIZE;OS_STK MyTaskStk3TASK_STK_SIZE;OS_STK MyTaskStk4TASK_STK_SIZE;OS_STK MyTaskStk5TASK_STK_SIZE;void Mytask1(void *pd) char buf128; while(1) sprintf(buf,ph%d is thinkingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPend(SEM0,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is hungryn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM1); /发送一个信号量 OSSemPend(SEM0,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is eatingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM1); /发送一个信号量 OSTimeDlyHMSM(0,0,0,200); /等待200ms void Mytask2(void *pd) char buf128; while(1) sprintf(buf,ph%d is thinkingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPend(SEM1,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is hungryn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM2); /发送一个信号量 OSSemPend(SEM1,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is eatingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM2); /发送一个信号量 OSTimeDlyHMSM(0,0,0,200); /等待200ms void Mytask3(void *pd) char buf128; while(1) sprintf(buf,ph%d is thinkingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPend(SEM2,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is hungryn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM3); /发送一个信号量 OSSemPend(SEM2,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is eatingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM3); /发送一个信号量 OSTimeDlyHMSM(0,0,0,200); /等待200ms void Mytask4(void *pd) char buf128; while(1) sprintf(buf,ph%d is thinkingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPend(SEM3,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is hungryn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM4); /发送一个信号量 OSSemPend(SEM3,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is eatingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM4); /发送一个信号量 OSTimeDlyHMSM(0,0,0,200); /等待200ms void Mytask5(void *pd) char buf128; while(1) sprintf(buf,ph%d is thinkingn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM0); /发送一个信号量 OSSemPend(SEM4,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is hungryn,(unsigned int )pd+1); armulPrintf(buf); OSSemPost(SEM0); /发送一个信号量 OSSemPend(SEM4,0,err); /请求一个信号量,没有时间限制 sprintf(buf,ph%d is eatingn,(unsigned int )pd+1); armulPrintf(buf); OSTimeDlyHMSM(0,0,0,200); /等待200ms /*/main function/*/int Main(int argc, char *argv) int i;/Init ARM hardware ARMTargetInit(); /Init uCOS-IIOSInit();for(i=0;i5;i+) SEMi=OSSemCreate(0); /建立计数器初值为0的信号量 /for(i=0;iNUM;i+) /OSTaskCreate(Mytask,(void*)i,&MyTaskStkTASK_STK_SIZE-1,TASK_PRIO+i); OSTaskCreate(Mytask1,(void*)0,&MyTaskStk1TASK_STK_SIZE-1,TASK_PRIO); OSTaskCreate(Mytask2,(void*)1,&MyTaskStk2TASK_STK_SIZE-1,TASK_PRIO+1); OSTaskCreate(Mytask3,(void*)2,&MyTaskStk3TASK_STK_SIZE-1,TASK_PRIO+2); OSTaskCreate(Mytask4,(void*)3,&MyTaskStk4TASK_STK_SIZE-1,TASK_PRIO+3); OSTaskCreate(Mytask5,(void*)4,&MyTaskStk5TASK_STK_SIZE-1,TASK_PRIO+4); /Create Task ARMTargetStart(); /Start uCOS-II OSStart();/*/while(1); return 0; /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江2025年下半年湖州市事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 借用公司电脑协议书
- 江西上饶市市县乡事业单位统一组织招考实施意见(试行)易考易错模拟试题(共500题)试卷后附参考答案
- 亲属共同签订协议书
- 校车老师安全协议书
- 广西事业单位联考考试招考易考易错模拟试题(共500题)试卷后附参考答案
- 机动车过户合同范本
- 广东揭阳普宁市市场监督管理局属下事业单位招聘“商事登记服务专员”易考易错模拟试题(共500题)试卷后附参考答案
- 上屋间出售合同范本
- 广东省汕头市潮阳区多校联考2025-2026学年九年级上学期期中语文试题(含答案及解析)
- 3分接变压器试验报告
- 《危险化学品目录(2022调整版)》
- 旋转机械振动故障诊断及分析课件
- 现代电子材料与元器件
- 网约车资格证考试题库与答案
- 撬装加油站管理制度
- 麦西腊拜铝土矿 矿业权出让收益计算书
- 2023年定陶县广播电视台(融媒体中心)招聘笔试模拟试题及答案解析
- 自主游戏中教师观察分析的要领
- 项目三 金属的塑性变形与再结晶
- 初中信息技术-《初识3DOne软件》教学教学课件
评论
0/150
提交评论