操作系统课程设计报告书.docx

上传人:b****5 文档编号:6471130 上传时间:2023-01-06 格式:DOCX 页数:54 大小:302.10KB
下载 相关 举报
操作系统课程设计报告书.docx_第1页
第1页 / 共54页
操作系统课程设计报告书.docx_第2页
第2页 / 共54页
操作系统课程设计报告书.docx_第3页
第3页 / 共54页
操作系统课程设计报告书.docx_第4页
第4页 / 共54页
操作系统课程设计报告书.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

操作系统课程设计报告书.docx

《操作系统课程设计报告书.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计报告书.docx(54页珍藏版)》请在冰豆网上搜索。

操作系统课程设计报告书.docx

操作系统课程设计报告书

 

《操作系统》

课程设计报告

实验1

一、实验描述

实验1有13个任务(包括μCOS-II的空闲任务)。

μCOS-II增加了两个内部任务:

空闲任务和一个计算CPU利用率的任务。

实验一1建立了11个其它任务。

TaskStart()任务是在函数main()中建立的;它的功能是建立其它任务并且在屏幕上显示如下统计信息:

●每秒钟任务切换次数;

●CPU利用百分率;

●寄存器切换次数;

●目前日期和时间;

●μCOS-II的版本号;

TaskStart()还检查是否按下ESC键,以决定是否返回到DOS。

其余10个任务基于相同的代码——Task();每个任务在屏幕上随机的位置显示一个0到9的数字。

二、问题分析

1、功能分析

在屏幕上显示如下统计信息:

●每秒钟任务切换次数;

●CPU利用百分率;

●寄存器切换次数;

●目前日期和时间;

●μCOS-II的版本号;

在屏幕上随机的位置显示一个0到9的数字。

2、数据对象分析

在屏幕随机位置显示0~9的数字

3、代码设计

Includes文件中

#include0*

#defineOS_MAX_FLAGS5*Max.numberofEventFlagGroupsinyourapplication...**...MUSTbe>0*

#defineOS_MAX_MEM_PART5*Max.numberofmemorypartitions...**...MUSTbe>0*

#defineOS_MAX_QS2*Max.numberofqueuecontrolblocksinyourapplication...**...MUSTbe>0*

#defineOS_MAX_TASKS11*Max.numberoftasksinyourapplication...**...MUSTbe>=2*

#defineOS_LOWEST_PRIO12*Definesthelowestprioritythatcanbeassigned...**...MUSTNEVERbe63!

*

#defineOS_TASK_IDLE_STK_SIZE512*Idletaskstacksize(#ofOS_STKwideentries)*

#defineOS_TASK_STAT_EN1*Enable

(1)orDisable(0)thestatisticstask*

#defineOS_TASK_STAT_STK_SIZE512*Statisticstaskstacksize(#ofOS_STKwideentries)*

#defineOS_ARG_CHK_EN1*Enable

(1)orDisable(0)argumentchecking*

#defineOS_CPU_HOOKS_EN1*uCOS-IItheprocessorportfiles**-----------------------EVENTFLAGS------------------------*

#defineOS_FLAG_EN1*Enable

(1)orDisable(0)codegenerationforEVENTFLAGS*

#defineOS_FLAG_WAIT_CLR_EN1*IncludecodeforWaitonClearEVENTFLAGS*

#defineOS_FLAG_ACCEPT_EN1*IncludecodeforOSFlagAccept()*

#defineOS_FLAG_DEL_EN1*IncludecodeforOSFlagDel()*

#defineOS_FLAG_QUERY_EN1*IncludecodeforOSFlagQuery()**--------------------MESSAGEMAILBOXES---------------------*

#defineOS_MBOX_EN1*Enable

(1)orDisable(0)codegenerationforMAILBOXES*

#defineOS_MBOX_ACCEPT_EN1*IncludecodeforOSMboxAccept()*

#defineOS_MBOX_DEL_EN1*IncludecodeforOSMboxDel()*

#defineOS_MBOX_POST_EN1*IncludecodeforOSMboxPost()*

#defineOS_MBOX_POST_OPT_EN1*IncludecodeforOSMboxPostOpt()*

#defineOS_MBOX_QUERY_EN1*IncludecodeforOSMboxQuery()**---------------------MEMORYMANAGEMENT--------------------*

#defineOS_MEM_EN1*Enable

(1)orDisable(0)codegenerationforMEMORYMANAGER*

#defineOS_MEM_QUERY_EN1*IncludecodeforOSMemQuery()**----------------MUTUALEXCLUSIONSEMAPHORES---------------*

#defineOS_MUTEX_EN1*Enable

(1)orDisable(0)codegenerationforMUTEX*

#defineOS_MUTEX_ACCEPT_EN1*IncludecodeforOSMutexAccept()*

#defineOS_MUTEX_DEL_EN1*IncludecodeforOSMutexDel()*

#defineOS_MUTEX_QUERY_EN1*IncludecodeforOSMutexQuery()**----------------------MESSAGEQUEUES----------------------*

#defineOS_Q_EN1*Enable

(1)orDisable(0)codegenerationforQUEUES*

#defineOS_Q_ACCEPT_EN1*IncludecodeforOSQAccept()*

#defineOS_Q_DEL_EN1*IncludecodeforOSQDel()*

#defineOS_Q_FLUSH_EN1*IncludecodeforOSQFlush()*

#defineOS_Q_POST_EN1*IncludecodeforOSQPost()*

#defineOS_Q_POST_FRONT_EN1*IncludecodeforOSQPostFront()*

#defineOS_Q_POST_OPT_EN1*IncludecodeforOSQPostOpt()*

#defineOS_Q_QUERY_EN1*IncludecodeforOSQQuery()**------------------------SEMAPHORES------------------------*

#defineOS_SEM_EN1*Enable

(1)orDisable(0)codegenerationforSEMAPHORES*

#defineOS_SEM_ACCEPT_EN1*IncludecodeforOSSemAccept()*

#defineOS_SEM_DEL_EN1*IncludecodeforOSSemDel()*

#defineOS_SEM_QUERY_EN1*IncludecodeforOSSemQuery()**---------------------TASKMANAGEMENT----------------------*

#defineOS_TASK_CHANGE_PRIO_EN1*IncludecodeforOSTaskChangePrio()*

#defineOS_TASK_CREATE_EN1*IncludecodeforOSTaskCreate()*

#defineOS_TASK_CREATE_EXT_EN1*IncludecodeforOSTaskCreateExt()*

#defineOS_TASK_DEL_EN1*IncludecodeforOSTaskDel()*

#defineOS_TASK_SUSPEND_EN1*IncludecodeforOSTaskSuspend()andOSTaskResume()*

#defineOS_TASK_QUERY_EN1*IncludecodeforOSTaskQuery()**---------------------TIMEMANAGEMENT----------------------*

#defineOS_TIME_DLY_HMSM_EN1*IncludecodeforOSTimeDlyHMSM()*

#defineOS_TIME_DLY_RESUME_EN1*IncludecodeforOSTimeDlyResume()*

#defineOS_TIME_GET_SET_EN1*IncludecodeforOSTimeGet()andOSTimeSet()**----------------------MISCELLANEOUS-----------------------*

#defineOS_SCHED_LOCK_EN1*IncludecodeforOSSchedLock()andOSSchedUnlock()*

#defineOS_TICKS_PER_SEC200*Setthenumberofticksinonesecond*

typedefINT16UOS_FLAGS;*Datetypeforeventflagbits(8,16or32bits)*

Test1文件中

#include"includes.prototypesoftasks*

voidTaskStart(void*data);*FunctionprototypesofStartuptask*

staticvoidTaskStartCreateTasks(void);

staticvoidTaskStartDispInit(void);

StaticvoidTaskStartDisp(void);*$PAGE*voidmain(void){PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);*Clearthescreen*

OSInit();*InitializeuCOS-II*

PC_DOSSaveReturn();*SaveenvironmenttoreturntoDOS*

PC_VectSet(uCOS,OSCtxSw);*InstalluCOS-II'scontextswitchvector*

RandomSem=OSSemCreate

(1);*Randomnumbersemaphore*

OSTaskCreate(TaskStart,(void*)0,&TaskStartStk[TASK_STK_SIZE-1],0);OSStart();*Startmultitasking*

}

voidTaskStart(void*pdata){

#ifOS_CRITICAL_METHOD==3*AllocatestorageforCPUstatusregister*OS_CPU_SRcpu_sr;

#endifchars[100];

INT16Skey;

pdata=pdata;*Preventcompilerwarning*

TaskStartDispInit();*Initializethedisplay*

OS_ENTER_CRITICAL();

PC_VectSet(0x08,OSTickISR);*InstalluCOS-II'sclocktickISR*

PC_SetTickRate(OS_TICKS_PER_SEC);*Reprogramtickrate*

OS_EXIT_CRITICAL();

OSStatInit();*InitializeuCOS-II'sstatistics*

TaskStartCreateTasks();*Createalltheapplicationtasks*

for(;;){TaskStartDisp();*Updatethedisplay*

if(PC_GetKey(&key)==TRUE){*Seeifkeypressed*

if(key==0x1B){*Yes,seeifit'stheESCAPEkey*PC_DOSReturn();*ReturntoDOS*

}

}

OSCtxSwCtr=0;*Clearcontextswitchcounter*

OSTimeDlyHMSM(0,0,1,0);*Waitonesecond*

}

}*$PAGE*

staticvoidTaskStartDispInit(void){

*1111111111222222222233333333334444444444555555555566666666667777777777*

*01234567890123456789012345678901234567890123456789012345678901234567890123456789*

PC_DispStr(0,0,"uCOS-II,TheReal-TimeKernel",DISP_FGND_WHITE+DISP_BGND_RED+DISP_BLINK);

PC_DispStr(0,1,"JeanJ.Labrosse",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,2,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,3,"EXAMPLE#1",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,4,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,5,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,6,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,7,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,8,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,9,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,10,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,11,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,12,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,13,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,14,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,15,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,16,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,17,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,18,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,19,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,20,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,21,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,22,"#Tasks:

CPUUsage:

%",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,23,"#Taskswitchsec:

",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);

PC_DispStr(0,24,"<-PRESS'ESC'TOQUIT->",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY+DISP_BLINK);

*1111111111222222222233333333334444444444555555555566666666667777777777*

*01234567890123456789012345678901234567890123456789012345678901234567890123456789*

}*$PAGE*

***********************************************************************************************************UPDATETHEDISPLAY**********************************************************************************************************

staticvoidTaskStartDisp(void){

chars[80];

sprintf(s,"%5d",OSTaskCtr);*Display#tasksrunning*

PC_DispStr(18,22,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

#ifOS_TASK_STAT_EN>0

sprintf(s,"%3d",OSCPUUsage);*DisplayCPUusagein%*

PC_DispStr(36,22,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

#endif

sprintf(s,"%5d",OSCtxSwCtr);*Display#contextswitchespersecond*

PC_DispStr(18,23,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

sprintf(s,"V%1d.%02d",OSVersion()100,OSVersion()%100);*DisplayuCOS-II'sversionnumber*

PC_DispStr(75,24,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);

switch(_8087){*DisplaywhetherFPUpresent*

case0:

PC_DispStr(71,22,"NOFPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);break;

case1:

PC_DispStr(71,22,"8087FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);break;

case2:

PC_DispStr(71,22,"80287FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);break;

case3:

PC_DispStr(71,22,"80387FPU",DISP_FGND_YELLOW+DISP_BGND_BLUE);break;

}

}*$PAGE*

***********************************************************************************************************CREATETASKS********************************************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1