- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式操作系统答案
1板级支持包BSP?Answer: 位于硬件平台与操作系统之间,主要用于配置系统硬件使其处于正常的状态,完成硬件与软件之间的消息交互,为操作系统与上层应用程序提供了一个与硬件无关的软件平台,即对上层软件屏蔽各种硬件相关性。2引导加载程序的工作:Answer:引导加载程序负责搬运操作系统的内核映像和setup.s文件到内存相应的位置。内核加载完后,系统调到setup.s文件的开始位置开始执行,仍工作在实模式下。3ucos的调度机制:Answer:ucos是抢占式的实时多任务内核,优先级最高的任务一旦准备就绪,则拥有cpu的所有权开始运行。Ucos不支持时间片轮转法,每个任务的优先级要求不一样且是唯一的,所以任务调度的工作就是:查找准备就绪的最高优先级的任务并进行上下文切换。存在任务级调度OSSched()和中断级任务调度OSIntExt();4linux的调度机制:Answer:linux使用比较简单的基于优先级的进程调度算法选择新的进程。2.6内核为抢占式内核。5嵌入式操作系统的特点并列举几个:Answer:嵌入式操作系统面向特定的对象,以应用为中心,以计算机为基础,软硬件可裁剪,功能,可靠性、成本、体积、功耗要求严格的专用计算机系统。也就是可靠性高、软件具有实时性、开发需要专门的开发工具与环境。例子:linux,ucos-ii,vxwork,palmos ,nuclear6优先级反转:Answer:ucos使用信号量的方法对共享资源提供保护机制。创建一个信号量并对其进行初始化,当一个任务需要一个共享资源时,他必须先申请得到一个信号量。在这个过程中即使有优先级高的任务处于就绪态,因为无法得到信号量,也就不能使用该资源而运行。简单得说就是高优先级的任务必须等待低优先级的任务完成。7请给出ucos的任务基本形式和应用程序框:Answer:任务形式:Void task(void *pdata){….相关配置For(;;){Do something用于延时的系统调用Do something}应用程序框:Main(void){OSInit();…相关配置OSTaskCreate(void (*task)(void *),pdata,OS_STK[TASK_SIZE-1],prio);\\OSTaskCreateExt(task,(void*)0,TaskStartSTK[Task_Size-1],prio,id,TaskStartStk[0],Task_Size,TaskUserData[id]);…相关操作OSStart();}8请使用linux下创建多进程的函数完成多进程的创建:Answer:用到函数:fork();exec();exit();main1.c#include stdio.h#include stdlib.h#include unistd.hint main(){intpid;printf(programming1 strated\n);pid=fork();if(pid0) {exit(1); }if(pid==0) {execv(./main2,NULL); }if(pid0)printf(I am father\n);sleep(5);printf(Programming1 finished\n);exit(0);}Main2.c#include stdio.h#include stdlib.hint main(){printf(programming2 strated\n);sleep(5);printf(Programming2 finished\n);exit(0);}$gcc–o main1 main1.c$gcc–o main2 mian2.c$./main19使用ucos的创建和信号量管理函数完成下面场景的程序。要完成两个任务MyTask和YouTaks的对单缓冲区的存取的同步操作。#include “stdio.h”#define TASK_STK_SIZE 64IntMyTaskSTK[TASK_STK_SIZE];IntYouTaskSTK[TASK_STK_SIZE];Void MyTask(void *pdata);Void YouTask(void *pdata);OS_EVENT *OSSem;IntBuffer[100];Mian(){OSInit();OSSem=OSSemCreate(1);OSTaskCreate(MyTask,(void *)0,MyTaskSTK[TASK_STK_SIZE-1],1);OSTaskCreate(YouTask,(void*)0,YouTaskSTK[TASK_STK_SIZE-1],2);OSStart();}Void MyT
文档评论(0)