ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:302.10KB ,
资源ID:6471130      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6471130.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计报告书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、操作系统课程设计报告书操作系统课程设计报告实验1一、实验描述实验1有13个任务(包括 COS-II 的空闲任务)。COS-II 增加了两个内部任务:空闲任务和一个计算CPU利用率的任务。实验一1建立了11个其它任务。TaskStart()任务是在函数main()中建立的;它的功能是建立其它任务并且在屏幕上显示如下统计信息: 每秒钟任务切换次数; CPU利用百分率; 寄存器切换次数; 目前日期和时间; COS-II的版本号;TaskStart()还检查是否按下ESC键,以决定是否返回到DOS。其余10个任务基于相同的代码Task();每个任务在屏幕上随机的位置显示一个0到9的数字。二、问题分析1

2、、功能分析在屏幕上显示如下统计信息: 每秒钟任务切换次数; CPU利用百分率; 寄存器切换次数; 目前日期和时间; COS-II的版本号;在屏幕上随机的位置显示一个0到9的数字。2、数据对象分析 在屏幕随机位置显示09的数字3、代码设计Includes文件中#include 0 *#define OS_MAX_FLAGS 5 * Max. number of Event Flag Groups in your application . * * . MUST be 0 *#define OS_MAX_MEM_PART 5 * Max. number of memory partitions .

3、 * * . MUST be 0 *#define OS_MAX_QS 2 * Max. number of queue control blocks in your application . * * . MUST be 0 *#define OS_MAX_TASKS 11 * Max. number of tasks in your application . * * . MUST be = 2 *#define OS_LOWEST_PRIO 12 * Defines the lowest priority that can be assigned . * * . MUST NEVER b

4、e 63! *#define OS_TASK_IDLE_STK_SIZE 512 * Idle task stack size (# of OS_STK wide entries) *#define OS_TASK_STAT_EN 1 * Enable (1) or Disable(0) the statistics task *#define OS_TASK_STAT_STK_SIZE 512 * Statistics task stack size (# of OS_STK wide entries) *#define OS_ARG_CHK_EN 1 * Enable (1) or Dis

5、able (0) argument checking *#define OS_CPU_HOOKS_EN 1 * uCOS-II the processor port files * * - EVENT FLAGS - *#define OS_FLAG_EN 1 * Enable (1) or Disable (0) code generation for EVENT FLAGS *#define OS_FLAG_WAIT_CLR_EN 1 * Include code for Wait on Clear EVENT FLAGS *#define OS_FLAG_ACCEPT_EN 1 * In

6、clude code for OSFlagAccept() *#define OS_FLAG_DEL_EN 1 * Include code for OSFlagDel() *#define OS_FLAG_QUERY_EN 1 * Include code for OSFlagQuery() * * - MESSAGE MAILBOXES - *#define OS_MBOX_EN 1 * Enable (1) or Disable (0) code generation for MAILBOXES *#define OS_MBOX_ACCEPT_EN 1 * Include code fo

7、r OSMboxAccept() *#define OS_MBOX_DEL_EN 1 * Include code for OSMboxDel() *#define OS_MBOX_POST_EN 1 * Include code for OSMboxPost() *#define OS_MBOX_POST_OPT_EN 1 * Include code for OSMboxPostOpt() *#define OS_MBOX_QUERY_EN 1 * Include code for OSMboxQuery() * * - MEMORY MANAGEMENT - *#define OS_ME

8、M_EN 1 * Enable (1) or Disable (0) code generation for MEMORY MANAGER *#define OS_MEM_QUERY_EN 1 * Include code for OSMemQuery() * * - MUTUAL EXCLUSION SEMAPHORES - *#define OS_MUTEX_EN 1 * Enable (1) or Disable (0) code generation for MUTEX *#define OS_MUTEX_ACCEPT_EN 1 * Include code for OSMutexAc

9、cept() *#define OS_MUTEX_DEL_EN 1 * Include code for OSMutexDel() *#define OS_MUTEX_QUERY_EN 1 * Include code for OSMutexQuery() * * - MESSAGE QUEUES - *#define OS_Q_EN 1 * Enable (1) or Disable (0) code generation for QUEUES *#define OS_Q_ACCEPT_EN 1 * Include code for OSQAccept() *#define OS_Q_DEL

10、_EN 1 * Include code for OSQDel() *#define OS_Q_FLUSH_EN 1 * Include code for OSQFlush() *#define OS_Q_POST_EN 1 * Include code for OSQPost() *#define OS_Q_POST_FRONT_EN 1 * Include code for OSQPostFront() *#define OS_Q_POST_OPT_EN 1 * Include code for OSQPostOpt() *#define OS_Q_QUERY_EN 1 * Include

11、 code for OSQQuery() * * - SEMAPHORES - *#define OS_SEM_EN 1 * Enable (1) or Disable (0) code generation for SEMAPHORES *#define OS_SEM_ACCEPT_EN 1 * Include code for OSSemAccept() *#define OS_SEM_DEL_EN 1 * Include code for OSSemDel() *#define OS_SEM_QUERY_EN 1 * Include code for OSSemQuery() * * -

12、 TASK MANAGEMENT - *#define OS_TASK_CHANGE_PRIO_EN 1 * Include code for OSTaskChangePrio() *#define OS_TASK_CREATE_EN 1 * Include code for OSTaskCreate() *#define OS_TASK_CREATE_EXT_EN 1 * Include code for OSTaskCreateExt() *#define OS_TASK_DEL_EN 1 * Include code for OSTaskDel() *#define OS_TASK_SU

13、SPEND_EN 1 * Include code for OSTaskSuspend() and OSTaskResume() *#define OS_TASK_QUERY_EN 1 * Include code for OSTaskQuery() * * - TIME MANAGEMENT - *#define OS_TIME_DLY_HMSM_EN 1 * Include code for OSTimeDlyHMSM() *#define OS_TIME_DLY_RESUME_EN 1 * Include code for OSTimeDlyResume() *#define OS_TI

14、ME_GET_SET_EN 1 * Include code for OSTimeGet() and OSTimeSet() * * - MISCELLANEOUS - *#define OS_SCHED_LOCK_EN 1 * Include code for OSSchedLock() and OSSchedUnlock() *#define OS_TICKS_PER_SEC 200 * Set the number of ticks in one second *typedef INT16U OS_FLAGS; * Date type for event flag bits (8, 16

15、 or 32 bits) *Test1文件中#includeincludes. prototypes of tasks * void TaskStart(void *data); * Function prototypes of Startup task *static void TaskStartCreateTasks(void);static void TaskStartDispInit(void);Static void TaskStartDisp(void);*$PAGE*void main (void) PC_DispClrScr(DISP_FGND_WHITE + DISP_BGN

16、D_BLACK); * Clear the screen * OSInit(); * Initialize uCOS-II *PC_DOSSaveReturn(); * Save environment to return to DOS * PC_VectSet(uCOS, OSCtxSw); * Install uCOS-IIs context switch vector * RandomSem = OSSemCreate(1); * Random number semaphore * OSTaskCreate(TaskStart, (void *)0, &TaskStartStkTASK_

17、STK_SIZE - 1, 0); OSStart(); * Start multitasking *void TaskStart (void *pdata)#if OS_CRITICAL_METHOD = 3 * Allocate storage for CPU status register * OS_CPU_SR cpu_sr;#endif char s100;INT16S key; pdata = pdata; * Prevent compiler warning * TaskStartDispInit(); * Initialize the display *OS_ENTER_CRI

18、TICAL(); PC_VectSet(0x08, OSTickISR); * Install uCOS-IIs clock tick ISR * PC_SetTickRate(OS_TICKS_PER_SEC); * Reprogram tick rate * OS_EXIT_CRITICAL(); OSStatInit(); * Initialize uCOS-IIs statistics * TaskStartCreateTasks(); * Create all the application tasks * for (;) TaskStartDisp(); * Update the

19、display * if (PC_GetKey(&key) = TRUE) * See if key pressed * if (key = 0x1B) * Yes, see if its the ESCAPE key * PC_DOSReturn(); * Return to DOS * OSCtxSwCtr = 0; * Clear context switch counter * OSTimeDlyHMSM(0, 0, 1, 0); * Wait one second * *$PAGE*static void TaskStartDispInit (void)* 1111111111222

20、222222233333333334444444444555555555566666666667777777777 * 01234567890123456789012345678901234567890123456789012345678901234567890123456789 * PC_DispStr( 0, 0, uCOS-II, The Real-Time Kernel , DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK); PC_DispStr( 0, 1, Jean J. Labrosse , DISP_FGND_BLACK + DISP_

21、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_FG

22、ND_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, ,

23、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(

24、 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); P

25、C_DispStr( 0, 21, , DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY); PC_DispStr( 0, 22, #Tasks : CPU Usage: % , DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY); PC_DispStr( 0, 23, #Task switchsec: , DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY); PC_DispStr( 0, 24, , DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);*

26、1111111111222222222233333333334444444444555555555566666666667777777777 * 01234567890123456789012345678901234567890123456789012345678901234567890123456789 *$PAGE* UPDATE THE DISPLAY*static void TaskStartDisp (void) char s80; sprintf(s, %5d, OSTaskCtr); * Display #tasks running * PC_DispStr(18, 22, s,

27、 DISP_FGND_YELLOW + DISP_BGND_BLUE);#if OS_TASK_STAT_EN 0 sprintf(s, %3d, OSCPUUsage); * Display CPU usage in % * PC_DispStr(36, 22, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);#endif sprintf(s, %5d, OSCtxSwCtr); * Display #context switches per second * PC_DispStr(18, 23, s, DISP_FGND_YELLOW + DISP_BGND_B

28、LUE); sprintf(s, V%1d.%02d, OSVersion() 100, OSVersion() % 100); * Display uCOS-IIs version number * PC_DispStr(75, 24, s, DISP_FGND_YELLOW + DISP_BGND_BLUE); switch (_8087) * Display whether FPU present * case 0: PC_DispStr(71, 22, NO FPU , DISP_FGND_YELLOW + DISP_BGND_BLUE); break; case 1: PC_DispStr(71, 22, 8087 FPU, DISP_FGND_YELLOW + DISP_BGND_BLUE); break; case 2: PC_DispStr(71, 22, 80287 FPU, DISP_FGND_YELLOW + DISP_BGND_BLUE); break; case 3: PC_DispStr(71, 22, 80387 FPU, DISP_FGND_YELLOW + DISP_BGND_BLUE); break; *$PAGE* CREATE TASKS*

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

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