文档库 最新最全的文档下载
当前位置:文档库 › 实时操作系统实验

实时操作系统实验

实时操作系统实验
实时操作系统实验

实时操作系统实验报告

专业:10通信工程

学号:20100306110

姓名: 汪洁

指导老师:申屠浩

实验一任务管理实验

实验目的:

1.理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程;

2.掌握μC/OS-II 中任务管理的基本方法(挂起、解挂);

3.熟练使用μC/OS-II 任务管理的基本系统调用。

实验要求与思路:

为了体现任务的各个基本状态及其变迁过程,本实验设计了T0、T1 和T3

三个任务,它们交替运行,如图所示

说明:

在系统完成初始化后,可以先创建并启动优先级最低的TaskStart,由它创

建其他3 个应用任务T0、T1 和T2,之后整个系统的运行流程如下:

1)优先级最高的T0 开始执行,之后T0 挂起自己;

2)然后系统调度选中T1 开始执行,之后T1 挂起自己;

3)接着系统调度选中T2,之后唤醒T0;

4)如此循环

实验程序:

#include "includes.h"

#define TASK_STK_SIZE 512

OS_STK TaskStk1[TASK_STK_SIZE];

OS_STK TaskStk2[TASK_STK_SIZE];

OS_STK TaskStk3[TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE];

void Task1(void *data);

void Task2(void *data);

void Task3(void *data); /* Function prototypes of tasks*\

void TaskStart(void *data); /* Function prototypes of Startup

task */

static void TaskStartCreateTasks(void);

static void TaskStartDispInit(void);

void main (void)

{

PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK); /* Clear the screen */ OSInit(); /* Initialize uC/OS-II */

PC_DOSSaveReturn(); /* Save environment to return to DOS */

PC_VectSet(uCOS, OSCtxSw); /* Install uC/OS-II's context switch vector */

OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_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 s[100];

INT16S key;

pdata = pdata;

TaskStartDispInit(); /* Initialize the display */

OS_ENTER_CRITICAL();

PC_VectSet(0x08, OSTickISR); /* Install uC/OS-II's clock tick ISR */

PC_SetTickRate(OS_TICKS_PER_SEC); /* Reprogram tick rate */ OS_EXIT_CRITICAL();

OSStatInit(); /* Initialize uC/OS-II's statistics */

OSTaskCreate(Task1, (void *)0, &TaskStk1[TASK_STK_SIZE - 1], 1);

OSTaskCreate(Task2, (void *)0, &TaskStk2[TASK_STK_SIZE - 1], 2);

OSTaskCreate(Task3, (void *)0, &TaskStk3[TASK_STK_SIZE - 1], 3);

OSTaskSuspend(2);/* Prevent compiler warning */

OSTaskSuspend(3);

for (;;) {

if (PC_GetKey(&key) == TRUE) { /* See if key has been pressed */ if (key == 0x1B) { /* Yes, see if it's the ESCAPE key */

PC_DOSReturn(); /* Return to DOS */ }

}

OSCtxSwCtr = 0; /* Clear context switch counter */ OSTimeDly(1);

}

}

static void TaskStartDispInit (void)

{

PC_DispStr( 0, 0, " uC/OS-II, The Real-Time Kernel ", DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);

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

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

PC_DispStr( 0, 3, " Time EXAMPLE ", 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, " <-PRESS 'ESC' TO QUIT-> ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);

}

void Task1 (void *pdata)

{

char ss[30];

INT8U err;

pdata=pdata;

for (;;) {

PC_DispStr(40, 10, "Task1 running", DISP_FGND_RED + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40, 11, "Task2 Suspend ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40, 12, "Task3 Suspend ", DISP_FGND_GREEN + DISP_BGND_LIGHT_GRAY);

OSTimeDlyHMSM(0, 0, 1, 0); /* Wait one second */ OSTaskResume(2); /* Delay 1 clock tick */ OSTaskSuspend(OS_PRIO_SELF);

}

}

void Task2 (void *pdata)

{

char ss[30];

INT8U err;

pdata=pdata;

for (;;) {

PC_DispStr(40, 10, "Task1 Suspend ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40, 11, "Task2 running ", DISP_FGND_RED + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40, 12, "Task3 Suspend ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY); OSTimeDlyHMSM(0, 0, 1, 0); /* Wait one second */ /* Delay 1 clock tick */ OSTaskResume(3); /* Delay 1 clock tick */ OSTaskSuspend(OS_PRIO_SELF);

}

}

void Task3 (void *pdata)

{

char ss[30];

INT8U err;

pdata=pdata;

for (;;) {

PC_DispStr(40, 10, "Task1 Suspend ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40, 11, "Task2 Suspend ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40, 12, "Task3 running ", DISP_FGND_RED + DISP_BGND_LIGHT_GRAY); OSTimeDlyHMSM(0, 0, 1, 0); /* Wait one second */ /* Delay 1 clock tick */ OSTaskResume(1); /* Delay 1 clock tick */ OSTaskSuspend(OS_PRIO_SELF);

}

}

实验截图:

实验感想

通过这次实验使我掌握μC/OS-II 中任务管理的基本方法(挂起、解挂),首先在主函数中创建初始任务OSTaskCreate,执行OSTaskCreate后,在调用TaskStartCreateTasks ,在TaskStartCreateTasks实现3 个应用任务T0、T1 和T2循环挂起和唤醒,每个任务运行时要保证其他任务被挂起,而且要在挂起之前唤醒下一个任务。显示设置可以修改TaskStartDispInit函数或者在Task0 Task1 Task2修改。

实验二信号量编程实验

实验目的:

●理解信号量的作用,特别是互斥操作和同步操作;

●掌握利用信号量操作函数实现简单的生产者/消费者问题;

●掌握下列信号量操作函数及其使用方法:

?OSSemCreate、OSSemPend、OSSemPost

实验要求与思路:

在该实验中,实现简单的生产者消费者问题,如图2-4所示,两个生产者任务和一个消费者任务,调用同一个输出函数。即Task1和Task2竞争使用Fun 函数,它们属于生产者,而Task3是消费者,消费者和生产者之间轮流使用Fun 函数。

实验程序:

******************************************************************************* **************************

* uC/OS-II

* The Real-Time Kernel

* EXAMPLE

******************************************************************************* **************************

*/

#include "includes.h"

/*

******************************************************************************* **************************

* CONSTANTS

******************************************************************************* **************************

*/

#define TASK_STK_SIZE 512 /* Size of each task's stacks (# of WORDs) */

/*

******************************************************************************* **************************

* VARIABLES

******************************************************************************* **************************

*/

OS_STK Task1Stk[TASK_STK_SIZE];

OS_STK Task2Stk[TASK_STK_SIZE]; /* Tasks stacks */ OS_STK TaskStartStk[TASK_STK_SIZE];

INT8U line=5;

OS_EVENT *PEvent;

/******************************************************************************

****************************

* FUNCTION PROTOTYPES

******************************************************************************* **************************

*/

void Task1(void *data); /* Function prototypes of tasks */ void Task2(void *data);

void TaskStart(void *data); /* Function prototypes of Startup task */ static void TaskStartCreateTasks(void);

static void TaskStartDispInit(void);

/*

******************************************************************************* **************************

* MAIN

******************************************************************************* **************************

*/

void main (void)

{

PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK); /* Clear the screen */ OSInit(); /* Initialize uC/OS-II */ PC_DOSSaveReturn(); /* Save environment to return to DOS */ PC_VectSet(uCOS, OSCtxSw); /* Install uC/OS-II's context switch vector */ OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 2);

OSStart(); /* Start multitasking */ }

/*

******************************************************************************* **************************

* STARTUP TASK

******************************************************************************* **************************

*/

void TaskStart (void *pdata)

{

#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr;

#endif

char s[100];

INT16S key;

char bsus=0;

pdata = pdata; /* Prevent compiler warning */ TaskStartDispInit(); /* Initialize the display */

OS_ENTER_CRITICAL();

PC_VectSet(0x08, OSTickISR); /* Install uC/OS-II's clock tick ISR */

PC_SetTickRate(OS_TICKS_PER_SEC); /* Reprogram tick rate */

OS_EXIT_CRITICAL();

OSStatInit(); /* Initialize uC/OS-II's statistics */

PEvent=OSSemCreate(1);

OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1], 3);

OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1], 4);

for (;;) {

if (PC_GetKey(&key) == TRUE) { /* See if key has been pressed */ if (key == 0x1B) { /* Yes, see if it's the ESCAPE key */

PC_DOSReturn(); /* Return to DOS */ }

else

{

if(bsus)

{

OSTaskResume(3);

OSTaskResume(4);

bsus=0;

}

else

{

OSTaskSuspend(3);

OSTaskSuspend(4);

bsus=1;

}

}

}

OSCtxSwCtr = 0; /* Clear context switch counter */ OSTimeDly(1);

}

}

/*

*******************************************************************************

**************************

* INITIALIZE THE DISPLAY

*******************************************************************************

**************************

*/

static void TaskStartDispInit (void)

{

PC_DispStr( 0, 0, " uC/OS-II, The Real-Time Kernel ", DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);

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

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

PC_DispStr( 0, 3, " Time EXAMPLE ", 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, " <-PRESS 'ESC' TO QUIT-> ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);

}

/*

******************************************************************************* **************************

* TASKS

******************************************************************************* **************************

*/

void func(char x)

{char ss[30];

sprintf(ss,"TASK%d use func = %ld",x,OSTimeGet());

PC_DispStr(40, line++, ss, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

OSTimeDly(2*OS_TICKS_PER_SEC);

sprintf(ss,"TASK%d func Filsh= %ld",x,OSTimeGet());

PC_DispStr(40, line++, ss, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

}

void Task1 (void *pdata)

{

char ss[30];

INT8U err;

pdata=pdata;

for (;;) {

sprintf(ss,"TASK1 Pending = %ld",OSTimeGet());

PC_DispStr(40, line++, ss, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

OSSemPend(PEvent,0,&err);

func(1);

OSSemPost(PEvent);

OSTimeDlyHMSM(0, 0, 3, 0); /* Wait one second */ /* Delay 1 clock tick */ }

}

void Task2 (void *pdata)

{

char ss[30];

INT8U err;

pdata=pdata;

for (;;) {

sprintf(ss,"TASK2 Pending = %ld",OSTimeGet());

PC_DispStr(40, line++, ss, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

OSSemPend(PEvent,0,&err);

func(2);

OSSemPost(PEvent);

OSTimeDlyHMSM(0, 0, 1, 0); /* Wait one second */ /* Delay 1 clock tick */

}

}

实验截图:

实验感想

通过本次实验,我理解了信号量的作用,特别是同步操作和互斥操作;了解了如何利用信号量操作函数实现简单的生产者和消费者问题;掌握了OSSemCreate、OSSemPend、OSSemPost这三个信号量操作函数的使用方法。

实验三邮箱编程实验

实验目的:

●了解邮箱编程原理,熟悉下列函数的使用。

?OSMboxCreate 创建邮箱

?OSMboxPost 发送邮件

?OSMboxPend 接收邮件

实验要求与思路:

创建一个邮箱,在此基础上创建一个任务负责往邮箱发送消息,而创建两个任务接收邮箱消息,考虑邮箱空和满的情况

实验程序:

/****************************************************************************** ****************************

* uC/OS-II

* The Real-Time Kernel

* EXAMPLE

******************************************************************************* ***************************/

#include "includes.h"

/****************************************************************************** ****************************

* CONSTANTS

******************************************************************************* ***************************/

#define TASK_STK_SIZE 512 /* Size of each task's stacks (# of WORDs) */ /****************************************************************************** ****************************

* VARIABLES

******************************************************************************* ***************************/

OS_STK Task1Stk[TASK_STK_SIZE]; /* Tasks stacks */

OS_STK Task2Stk[TASK_STK_SIZE]; /* Tasks stacks */

OS_STK TaskStartStk[TASK_STK_SIZE];

OS_EVENT * pEvent;

char msg[30];

INT8U y=5;

/****************************************************************************** ****************************

* FUNCTION PROTOTYPES

******************************************************************************* ***************************/

void Task1(void *data); /* Function prototypes of tasks */ void Task2(void *data); /* Function prototypes of tasks */ void TaskStart(void *data); /* Function prototypes of Startup task */

static void TaskStartCreateTasks(void);

static void TaskStartDispInit(void);

/****************************************************************************** ****************************

* MAIN

******************************************************************************* ***************************/

void main (void)

{

PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK); /* Clear the screen */ OSInit(); /* Initialize uC/OS-II */ PC_DOSSaveReturn(); /* Save environment to return to DOS */ PC_VectSet(uCOS, OSCtxSw); /* Install uC/OS-II's context switch vector */ OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 2);

OSStart(); /* Start multitasking */

}

/****************************************************************************** ****************************

* STARTUP TASK

******************************************************************************* ***************************/

void TaskStart (void *pdata)

{

#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr;

#endif

char s[100];

INT16S key;

pdata = pdata; /* Prevent compiler warning */ TaskStartDispInit(); /* Initialize the display */ OS_ENTER_CRITICAL();

PC_VectSet(0x08, OSTickISR); /* Install uC/OS-II's clock tick ISR */ PC_SetTickRate(OS_TICKS_PER_SEC); /* Reprogram tick rate */ OS_EXIT_CRITICAL();

OSStatInit(); /* Initialize uC/OS-II's statistics */ pEvent=OSMboxCreate(0);

OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1], 4);

OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1], 5);

for (;;) {

if (PC_GetKey(&key) == TRUE) { /* See if key has been pressed */ if (key == 0x1B) { /* Yes, see if it's the ESCAPE key */ PC_DOSReturn(); /* Return to DOS */ }

}

OSCtxSwCtr = 0; /* Clear context switch counter */ OSTimeDly(1);

}

}

/*

*******************************************************************************

**************************

* INITIALIZE THE DISPLAY

*******************************************************************************

**************************

*/

static void TaskStartDispInit (void)

{

PC_DispStr( 0, 0, " uC/OS-II, The Real-Time Kernel ", DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);

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

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

PC_DispStr( 0, 3, " Time EXAMPLE ", 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, " <-PRESS 'ESC' TO QUIT-> ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);

}

/*

*******************************************************************************

**************************

* TASKS

*******************************************************************************

**************************

*/

void Task1 (void *pdata)

{

char ss[30];

INT8U err;

unsigned long lValue;

pdata=pdata;

for (;;) {

lValue=OSTimeGet();

sprintf(ss,"Task1 Post Time = %ld",lValue);

PC_DispStr(40, y++, ss, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

sprintf(msg,"msg Time = %ld",lValue);

OSMboxPost(pEvent,(void *)lValue);

OSTimeDlyHMSM(0, 0, 5, 0);

}

}

void Task2 (void *pdata)

{

char ss[30];

INT8U err;

unsigned long lValue;

pdata=pdata;

for (;;) {

sprintf(ss,"Task2 Pend Time = %ld",OSTimeGet());

PC_DispStr(40, y++, ss, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

lValue=(unsigned long)OSMboxPend(pEvent,0,&err);

sprintf(ss,"msg = %ld",lValue);

PC_DispStr(40, y++, ss, DISP_FGND_RED + DISP_BGND_LIGHT_GRAY);

OSTimeDlyHMSM(0, 0, 1, 0); /* Wait one second */ /* Delay 1 clock tick */ }

}

实验截图:

实验感想:

通过本次实验使我了解了消息邮箱的操作,熟悉了OSMboxCreate 创建邮箱、OSMboxPost 发送邮件、OSMboxPend 接收邮件等函数的作用。首先调用函数OSMboxCreate()先定义msg的初始值;其次通过调用函数OSMboxPost()来向消息邮箱发送消息;最后需要通过调用函数OSMboxPend()来向消息邮箱请求消息。

通过5次实验的操作练习,让我对嵌入式操作系统有了更加具体化的认识,通过在实验中的编译、运行、发现错误、改正错误等一系列看似简单的操作中,不仅大大的提高了我的学习的耐性,还培养了我发现问题、解决问题的能力,感谢老师的耐心、仔细的讲解帮助,老师的诲人不倦的精神我提高了学习好专业知识的信心。

网页设计实验报告

实验报告 课程名称网络技术基础实验项目TCP/IP协议配置实验仪器计算机 系别 专业 班级/学号 学生姓名 实验日期 成绩 指导教师

实验一 TCP/IP协议配置 一、实验目的(标题黑体小四) 1.熟练掌握模板的用法。 2.掌握CSS的用法。 3.掌握网站发布的方法。 二、实验内容 1. 创建和使用模板。 2. css的创建和使用。 3. 发布网站。 三、实验课时 4课时 四、实验步骤 创建网站 1、创建一个站点,并创建 images 文件夹存放图片。将示例图片拷贝至images 目录下 2、创建 CSS 文件,名称为 style.css,将其保存至 style文件夹。 3、创建模板文件 tpl.dwt,并保存。结果如下: (1) 给 tpl.dwt 附加样式表 style.css。 在 tpl.dwt 的空白处点击鼠标右键,选择“附加样式表”: 选择 style.css 文件: 完成后,在 tpl.dwt 的 head标签里有如下的代码: (2) 设置模板的背景颜色。打开 CSS 面板,为 style.css 新建一条 css 规则。过程如 下:

将背景颜色设为#ff1e70: 在 style.css 生成如下的代码: body { background-color: #ff1e70? } 3) 制作布局。插入一 2 行 2 列的表格。表格的宽度=316+634=950,其他的设置:让表格居中对齐。 (4) 消除表格两边的空隙。展开 CSS 样式表,双击 body: 双击 body后,打开“body的 CSS 规则定义”对话框,按照下面的方式设置:Style.css 的代码变为: body { background-color: #ff1e70? margin: 0px? }

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

Web网页设计实验报告

WEB系统开发 综合实验报告 题目红尘客栈网上订房页面 专业计算机科学与技术(信息技术及应用) 班级计信2班 学生蒋波涛 重庆交通大学 2013年

目录 一、设计目的 (3) 二、设计题目 (3) 三、结构设计 (3) 四、技术分析 (4) 五、设计过程 (7) 六、实验心得 (10) 七、实验总结 (11)

一、设计目的 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet 应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。我们当代大学生更是离不开网络给我们带来的好处与便利.但是,我们成天浏览的网站网页到底是如何制作的呢?我想这一点很多同学都没有去深究过.所以,这学期我选择了”web网页设计”这门课, 本课程的设计目的是通过实践使同学们经历网页制作的全过程. 通过设计达到掌握网页设计、制作的技巧。 了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。 熟练掌握Photoshop cs3、Dreamweaver cs等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素质。学会和团队配合,逐渐培养做一个完整项目的能力。 二、设计题目 《红尘客栈》 三、结构设计 选定主题,确定题目之后,在做整个网站之前对网站进行需求分析。首先,做好需求调研。调研方式主要是上网查阅资料,在图书馆里翻阅相关书籍。 然后,调研结束之后对整个网站进行功能描述,并对网站进行总体规划,接着逐步细化。 我们选做的主题是个人主页,并且选定题目为“红尘客栈”,其目的是做一个简单的网站,介绍酒店概况,提供一定的资讯信息。 四、技术分析 (一)建立布局 在这次的网页设计中用到大量的布局,所以怎么样建立布局是关键。Dreamweaver cs3是大多数人设计网页的称手兵器,也是众多入门者的捷径。特别是其在布局方面的出色表现,更受青睐。大家都知道,没有表格的帮助,很难组织出一个协调合理的页面。 1.点击“ALT+F6”键,进入布局模式,插入布局表格。建立一个大概的布局。 2.使用背景图片:选中该项,按浏览可以插入一幅准备好的图片作为表格的背景,因为图片是以平铺的形式作为表格背景,所以表格大小和图片尺寸都要控制好。 (二)网页中的图像

实时操作系统报告

实时操作系统课程实验报告 专业:通信1001 学号:3100601025 姓名:陈治州 完成时间:2013年6月11日

实验简易电饭煲的模拟 一.实验目的: 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。 二.实验要求: 1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”; 2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择; 3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间; 4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式; 5.按“X”退出系统,时间区域不显示。 6.煮饭时长为30,煮粥时长为50,煮面时长为40. 三.实验设计: 1.设计思路: 以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。 本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。 2.模块划分图: (1)界面显示: Main() Taskstart() Taskstartdispinit() 在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。

(2)按键查询与响应: Main() Taskstart() 在TaskStart()函数中,用if (PC_GetKey(&key) == TRUE)判断是否有按键输入。然后根据key 的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。 (3)切换功能: l计数“C”按 键的次数 M=l%3 Switch(m) M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“”以“擦出”之前画下的“@”,注意l自增。 四.主要代码: #include "stdio.h" #include "includes.h" #include "time.h" #include "dos.h" #include "sys/types.h" #include "stdlib.h" #define TASK_STK_SIZE 512 #define N_TASKS 2 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; INT8U TaskData[N_TASKS];

操作系统原理复习题库完整

计算机操作系统期末复习题 声明:本题库容仅供参考 注:1-简单2-一般3-较难4-难 第一部分操作系统基本概念 一、选择题(选择最确切的一个答案,将其代码填入括号中) 1、操作系统是一种()。 A、应用软件 B、系统软件 C、通用软件 D、工具软件 答案-1:B 2、计算机系统的组成包括()。 A、程序和数据 B、处理器和存 C、计算机硬件和计算机软件 D、处理器、存储器和外围设备 答案-1:C 3、下面关于计算机软件的描述正确的是()。 A、它是系统赖以工作的实体 B、它是指计算机的程序及文档 C、位于计算机系统的最外层 D、分为系统软件和支撑软件两大类 答案-2:B 4、财务软件是一种()。 A、系统软件 B、接口软件 C、应用软件 D、用户软件 答案-2:C 5、世界上第一个操作系统是()。 A、分时系统 B、单道批处理系统 C、多道批处理系统 D、实时系统 答案-1:B 6、批处理操作系统提高了计算机的工作效率,但()。 A、系统资源利用率不高 B、在作业执行时用户不能直接干预 C、系统吞吐量小 D、不具备并行性 答案-3:B 7、引入多道程序的目的是()。 A、为了充分利用主存储器 B、增强系统的交互能力

C、提高实时响应速度 D、充分利用CPU,减少CPU的等待时间 答案-3:D 8、在多道程序设计的计算机系统中,CPU()。 A、只能被一个程序占用 B、可以被多个程序同时占用 C、可以被多个程序交替占用 D、以上都不对 答案-2:C 9、多道程序设计是指()。 A、有多个程序同时进入CPU运行 B、有多个程序同时进入主存并行运行 C、程序段执行不是顺序的 D、同一个程序可以对应多个不同的进程 答案-3:B 10、从总体上说,采用多道程序设计技术可以()单位时间的算题量,但对每一个算题,从算题开始到全部完成所需的时间比单道执行所需的时间可能要()。 A、增加减少 B、增加延长 C、减少延长 D、减少减少 答案-4:B 11、允许多个用户以交互使用计算机的操作系统是()。 A、分时系统 B、单道批处理系统 C、多道批处理系统 D、实时系统 答案-2:A 12、下面关于操作系统的叙述正确的是()。 A、批处理作业必须具有作业控制信息 B、分时系统不一定都具有人机交互功能 C、从响应时间的角度看,实时系统与分时系统差不多 D、由于采用了分时技术,用户可以独占计算机的资源 答案-3:A 13、操作系统是一组()。 A、文件管理程序 B、中断处理程序 C、资源管理程序 D、设备管理程序 答案-1:C 14、现代操作系统的两个基本特征是()和资源共享。 A、多道程序设计 B、中断处理 C、程序的并发执行 D、实现分时与实时处理 答案-1:C 15、()不是操作系统关心的主要问题。 A、管理计算机裸机

简单网页制作实验总结报告

《大学计算机基础》 实验报告 专业名称: 电子商务2班 学号: xxxxxxxxxxx 姓名: x x 指导教师: x x 2011年12月24日

目录 第一章网站主题设计说明 (1) 1.1 主题内容 (1) 1.2 设计思路 (1) 第二章网站内容设计 (2) 1.1 链接1标题 (2) 1.2 链接2标题 (2) 1.3 flash制作说明 (2) 第三章网站技术难点 (3) 第四章心得体会..................................... ..... ......................... (4)

第一章网站主题设计说明 1.1 主题内容 (1) 网站主题为“四季の花”,包括春夏秋冬四个季节的比较典型的花朵及有关花的诗句,色彩缤纷,十分艳丽夺目。 1.2 设计思路 (2) 大多网站都设计的关于音乐,影视,购物等非常热门的东西,本站设计的主题是花,能让人们在闲下来的时候看看花,品品诗歌,所以做有关花的网页是个不错的选择。同时,让人们分清楚春夏秋冬都各有什么典型的花。

第二章网站内容设计 1.1链接1标题:春の花 春天是生命的季节,在这个季节里,万物复苏。所以就找了虞美人,桃花,牡丹,以及海棠花来作为春天的代表。同时配有与这些花有关的诗句。 1.2 链接2标题:夏の花 夏天充满了激情与阳光,我找了兰花,荷花,百合花等来代表这个季节,色彩艳丽,十分醒目夺人。 1.3 链接3标题:秋の花 大丽花,菊花,月季和牡丹花都竞相出现在本网页,色彩缤纷,赏心悦目。 1.4 链接4标题:冬の花 蝴蝶兰,水仙,迎春花,梅花是冬季的代表,他们刻画了一副傲立冬天的坚强的姿态。

网页制作实验报告

网页制作实验报告 页制作实验报告 实验一:站点设置 一、实验目的及要求 本实例是经过“站点定义为”对话框中的“高级”选项卡创建一具新站点。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域,同时接入国际互联。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装页三剑客(dreamweaver mx;flash mx;fireworks mx)等页设计软件; 三、实验原理 经过“站点定义为”对话框中的“高级”选项卡创建一具新站点。 四、实验办法与步骤 1)执行“站点\治理站点”命令,在弹出的“治理站点”对话框中单击“新建”按钮,在弹出的快捷菜单中挑选“站点”命令。 2)在弹出的“站点定义为”对话框中单击“高级”选项卡。 3)在“站点名称”文本框中输入站点名称,在“默认文件夹”文本框中挑选所创建的站点文件夹。在“默认图象文件夹”文本框中挑选存放图象的文件夹,完成后单击“确定”按钮,返回“治理站点”对话框。 4)在“治理站点”对话框中单击“完成”按钮,站点创建完毕。 五、实验结果 六、讨论与结论 实验开始之前要先建立一具根文件夹,在实验的过程中把站点存在自己建的文件夹里,如此才干使实验条理化,别至于在实验后寻别到自己的站点。在实验过程中会浮现一些选项,计算机普通会有默认的挑选,最后别要去更改,假如要更改要先充分了解清晰该选项的含义,以及它会造成的效果,否则会使实验的结果失真。实验前先熟悉好操作软件是做好该实验的关键。 实验二:页面图像设置 一、实验目的及要求: 本实例的目的是设置页面的背景图像,并创建鼠标经过图像。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域,同时接入国际互联。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装页三剑客(dreamweaver mx;flash mx;fireworks mx)等页设计软件; 4、安装acdsee、photoshop等图形处理与制作软件; 5、其他一些动画与图形处理或制作软件。 三、实验原理 设置页面的背景图像,并创建鼠标经过图像。 四、实验办法与步骤 1) 在“页面属性”对话框中设置页面的背景图像。 2) 在页面文档中单击“”插入鼠标经过图像。 五、实验结果

嵌入式实时操作系统vxworks实验教程[1]

???VxWorks 偠 ? Laboratory Tutorial for Embedded Real ˉtime Operating System VxWorks ?? ? ? ? ? ? ? 2003 10

???VxWorks 偠 ? ? 1 ???? (1) 1.1 ?? (1) 1.2 ??? (7) 2 ? MPC860 (16) 3 ???VxWorks ? ? Tornado (25) 3.1 ???VxWorks (25) 3.2 Tornado? ? (43) 4 VxWorks?BootRom (48) 5 偠 (55) 5.1 偠??Tornado??? (55) 5.2 偠?? ??? ? ? (74) 5.3 偠?? ? ? ?? (78) 5.4 偠 ?? ??? (101) 5.5 偠?? ?????? ?? (110) 5.6 偠 ? ?????? ?? (116) ? A hwa-xpc860 偠 (120)

1 ???? ?? ?? 催? ?? ??? ?? ? ? ?? ??Ё?????? ? ?? ?? ? ? ?? ?? (Embebdded computer) Ё??? ?? ? ??? ⑤?20??60 ?? ????? ? ????? ? 1.1.1 ???? ??? ?? ? Н? ??? ????? ?? ?? ???? ???? ?? ?? ?? ?? ???? ??? ????? ? ?????BIOS? ? ? ???? ?催 ? ? ? ㄝ???? ? ??? ? ? ? ?????????? ???? ?? ? ? ? ? ???? ?? ? ? ???? ?ㄝ???? ???? ??? ? ? ??? ? ???? ? ? ?? ㄝ ?? ? ??? ? ?? ? (control)???Mointer) ??(Managemet)ㄝ ?? 1.1.2 ? ?????? ? ? 1.1. 2.1 ? ?? ? ?? ??4?? ? 1? ? ? ? ?? ? ? ???Ё ????? ???? ?? ? ? ?? ?2? ? ??? ?? ?????? ? ????? ??? П? ??? ??????? ? ?? ???? ? 3? ? ? ? ????? ?? ? 催 ? ? ? 4? ? 乏 ? ?? ?? ? ? ? ??? ? ? Ё??∴??? ?? ?? ?? ? mW??uW??1.1.2.2 ? ???? ???? ?? ?? ? ? ?? ? ??? ?? ? ? ? ? ???1000 ??????? 30 ?? ?

网页制作实验报告

北京理工大学珠海学院课程设计说明书 _2013_—_2014_学年第_1_学期 题目: 《Web应用开发课程设计》 学院:计算机学院 专业班级: 11级软件工程3班 学号: 110202031031 学生姓名:蒋征 指导教师:魏志军 成绩: 时间: 2014/1/5 2014年 1 月 5 日

摘要 本次作品是一个IT技术交流论坛,实现论坛的基本功能,注册、登录、发帖、浏览和回帖。 论坛分三个分板块,网页、C#和JA V A,纵向层次也是三层,主页、板块页和帖子页。网站使用JavaScript实现动态页面。 关键词:计算机技术交流社区JavaScript 网页 I

目录 摘要 ............................................. I 目录 ............................................. II 1 网站结构和布局 (1) 1.1 网站结构 (1) 1.1.1 总体结构 (1) 1.1.2 横向链接结构 (2) 1.2 页面布局 (3) 1.2.1 主页 (3) 1.2.2 分版页面 (6) 1.2.3 帖子页面 (6) 2 技术应用 (8) 2.1 逻辑设计 (8) 2.1.1 HTML和CSS设计 (8) 2.1.2 JavaScript设计 (10) 参考文献 (13) 心得体会 (14) I

教师评语 (15) 成绩评定表 (16) 课程设计答辩记录表 (17) II

1 网站结构 1.1主体结构 1.1.1总结构 网站是以技术交流社区为主题的论坛型网站。 这个网站是按树形结构设计如图1-1-1,页面种类共分三层,分别是主页,分主题页还有就是内容页。 主页连向三个分主题分区页面,分别是MTHL板块,C#板块还有就是JAVA 板块。 主题分区页面下面是内容帖子。 图1-1-1网页关系 1

操作系统实验心得(精选多篇)

操作系统实验心得 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。

大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域 3)其他 例如: <1>定义了指针后记得初始化,在使用的时候记得判断是否为 null <2>在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等 <3>在变量处理的时候变量的格式控制是否合理等

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 2012 年 4 月 1 日

一、实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。掌握在基于优先级的可抢占嵌入式实时操作系统的应用中,出现优先级反转现象的原理及解决优先级反转的策略——优先级继承的原理。 二、实验内容 1.建立并熟悉Borland C 编译及调试环境。 2.使用课本配套光盘中第五章的例程运行(例5-4,例5-5,例5-6),观察运行结果,掌握信号量的基本原理及使用方法,理解出现优先级反转现象的根本原因并提出解决方案。 3.试编写一个应用程序,采用计数器型信号量(初值为2),有3个用户任务需要此信号量,它们轮流使用此信号量,在同一时刻只有两个任务能使用信号量,当其中一个任务获得信号量时向屏幕打印“TASK N get the signal”。观察程序运行结果并记录。 4. 试编写一个应用程序实现例5-7的内容,即用优先级继承的方法解决优先级反转的问题,观察程序运行结果并记录。 5.在例5-8基础上修改程序增加一个任务HerTask,它和YouTask一样从邮箱Str_Box里取消息并打印出来,打印信息中增加任务标识,即由哪个任务打印的;MyTask发送消息改为当Times为5的倍数时才发送,HerTask接收消息采用无等待方式,如果邮箱为空,则输出“The mailbox is empty”, 观察程序运行结果并记录。 三、实验原理 1. 信号量 μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样μC/OS-II 才能支持信号量。

单片机实时操作系统RTOS

51单片机实时操作系统 作者:徐少伟日期:2013年12月07日 摘要本文着重介绍了运行在51单片机上基于片轮询式实时操作系统RTOS的构建,讨论了实时操作系统的运行原理和设计思路。关键词:51单片机、片轮询、实时操作系统RTOS 1前言 随着计算机技术的发展,计算机已经被广泛地应用到各个领域中。而在控制领域,人们更多地关心计算机的低成本、小体积、运行的可靠性和控制的灵活性。特备是智能仪表、智能传感器、智能家电、智能办公设备、汽车及军事电子设备等应用系统要求计算机嵌入这些设备中。而作为嵌入式计算机的单片机因其体积小、可靠性高、控制功能强以及非凡的嵌入式应用形态,使得单片机应用技术已经成为电子应用系统设计中最为常用的技术手段。 在工业控制方面,因工业环境对计算机的可靠性和实时性的要求特别高,而诸如51系列的单片机的片上资源比较有限,因此开发并构建一种应用于单片机上的实时多任务操作系统已成为一种迫切的需求。 2实时操作系统设计概述2.1实时多任务操作系统(RTOS)简介 过去一个单片机应用程序所控制的任务和外设不多,采用一个主程序和几个子程序模块的调用,即可满足要求。但随着应用的复杂化,对单片机软件提出了更高的要求。一个控制器系统可

能需要同时控制或监控很多外设,要求有实时响应;有很多处理的任务,各种任务之间有信息的传递。如果仍采用原来的程序设计方法,将会存在两个问题。一是中断可能得不到及时响应,处理时间过长。二是系统任务多,要考虑的各种可能也多,各种资源如调度不当就会发生死锁,降低软件的可靠性,程序编写的任务量成指数增加。 实时操作系统是一段系统启动后首先执行的背景程序,用户的应用程序是运行在RTOS之上的各个任务。RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。 实时多任务操作系统,以分时方式运行的多个任务,看上去好像是多个任务“同时”运行。标准的RTOS应具有任务调度、中断处理、事件管理、定时器管理、循环队列管理、资源管理、存储管理、自动掉电管理等功能,基于优先服务方式的RTOS才是真正的实时操作系统。 本文主要讨论了基于时间分片轮询方式,即片轮询方式的多任务操作系统,重点介绍多任务实时操作系统的原理和构建方法,为深入研究真正意义上的实时多任务操作系统RTOS奠定一定的理论和思想基础。 2.2实时多任务操作系统(RTOS)任务切换 在实时操作系统RTOS中,任务的切换方式有三种:协同方式、时间片轮询方式以及抢占优先级方式。 2.2.1协同方式 所谓“协同方式”,是指一个任务在持续运行而不释放资源,其他任务是没有机会获得运行

Dreamweaver网页制作实训报告

广西科技大学鹿山学院 课程设计报告 课程名称:网页制作课程设计 课题名称:我的梦幻网 指导教师:韦灵 班级:计软141班 姓名:邓康言 学号: 20141409 成绩评定:

指导教师签字: 2015 年 07 月 07 日 目录 一. 网页制作课程设计目的 (3) 二. 1.实训意义: (3) 2.实训目的: (3) 二、课程设计内容 (5) 1.网站主题《我的梦幻网》 (5) 2.网站材料 (5) 3.网站规划 (5) 三、课程设计步骤 (6) 四、网站各模块实现 (7) 1.我的梦幻网模块功能: (7) 2.背景故事模块功能: (8) 3.宠物介绍模块功能: (9) 4.门派介绍模块功能 (10) 5.装备模块功能介绍: (11) 6.人物模块功能介绍: (12)

7.地图介绍模块功能: (14) 7.我的梦幻模块功能: (15) 五、总结及心得体会 (17) 一.网页制作课程设计目的 1.实训意义: 本次网页设计与制作实训是网页教学过程中重要的实践性教学环节.它是根据网页教学计划的要求.在教师的指导下进行网页制作专业技能的训练,培养学生综合运用理论知识分析和解决实际问题的能力,实现由理论知识向操作技能的培养过程.因此加强实践教学环节,搞好实训教学,对实现本专业的培养目标,提高学生的综合素质有着重要的作用. 2.实训目的: 通过综合实训进一步巩固,深化和加强我的理论知识 (1) 掌握规划网站的内容结构,目录结构,链接结构的方法。 (2) 熟练掌握网页制作软件Dreamweaver8和基本操作和使

用。 (3) 掌握页面的整体控制和头部内容设置的方法。 (4) 熟练掌握网页页面布局的各种方法。 (5) 熟练掌握在网页中输入,设置标题和正文文字的方法。 (6) 熟练掌握在网页中插入图像,Flash动画和背景音乐的方法。 (7) 熟练建立各种形式的超级链接的方法。 (8) 掌握表单网页制作方法。 (9) 掌握网页特效制作方法。 (10) 掌握网站测试的方法。 2. 训练和培养我获取信息和处理信息的能力,充分培养和提高动手能力,学会通过网站、书籍、素材等方式收集所需的文字资料、图像资料、Flash动画和网页特效等。 3. 培养我运用所学的理论知识和技能解决网站开发过程中所遇到的实际问题的能力及基本工作素质。 4. 培养我的理论联系实际的工作作风,严肃认真的科学态度以及独立工作的能力,树立自信心。

操作系统实验报告

实验报告 实验课程名称:操作系统 实验地点:南主楼七楼机房 2018—2019学年(一)学期 2018年 9月至 2019 年 1 月 专业: 班级: 学号: 姓名: 指导老师:刘一男

实验一 实验项目:分时系统模拟 实验学时:2实验日期: 2018-10-25 成绩: 实验目的利用程序设计语言模拟分时系统中多个进程按时间片轮转调度算法进行进程调度的过程; 假设有五个进程A,B,C,D,E,它们的到达时间及要求服务的时间分别为:进程名 A B C D E 到达时间0 1 2 3 4 服务时间 4 3 4 2 4 时间片大小为1,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。 执行过程并计算各进程的周转时间及带权周转时间。 轮转调度:BDACE

(1)修改时间片大小为2,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。 轮转调度:ADBCE (2)修改时间片大小为4,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间.

顺序:ABCDE 1、思考 时间片的大小对调度算法产生什么影响?对计算机的性能产生什么影响?答:通过对时间片轮转调度算法中进程最后一次执行时间片分配的优化,提出了一种改进的时间片轮转调度算法,该算法具有更好的实时性,同时减少了任务调度次数和进程切换次数,降低了系统开销,提升了CPU的运行效率,使操作系统的性能得到了一定的提高。 A B C D E 时间片为1 周转时间12 9 14 8 13 3 3 3.5 4 3.25 带权周转 时间 时间片为2 周转时间8 12 13 7 13 2 4 3.25 3.5 3.25 带权周转 时间 时间片为4 周转时间 4 6 9 10 13 1 2 2.25 5 3.25 带权周转 时间

网页设计实验报告书_范文

北京信息科技大学网页美术设计实验报告 学院/系人文社科系 学生姓名代俊丽 专业行政管理 学号 2010012299 班级行政1001 实验教师李晋

二Ο一二年 5 月 14 日实验报告

实验报告书 一实验目的 1.学习html语言和dreamweaver等工具 2.掌握在本地环境下运用dreamweaver技术实现一个简单的电子商务网站 二实验的方法和原理 三实验过程 1.资料的搜集。 2.熟悉制作软件。 做网页主要用的工具便是dremweaver、photoshop、flash软件。在这些软件我对dremweaver、photoshop相对比较熟悉,因为在平时上课是老师带领我们运用过。所以我还可以正常的运用,但是出现的问题还是有很多。有很多不懂如何操作,只有通过在次去看书才能够了解,这也体现了我学习方面的缺点,它是我平时不够认真的具体表现。 3.构建站点框架。 打开dremweaver后第一步便是新建站点 4设计主页及二级页面。 5实现网页间的链接 链接的过程其实很简单,主要是把要链接的文字选择在选择工具栏的链接按钮最后选择自己要链接的网页(欢迎访问零二七范文网https://www.wendangku.net/doc/4212467603.html,,零二七范文大全)单击确定便可以了。 6向静态网页插入动态效果 四实验心得 在经济迅速发展的今天,internet显得更为重要它是人们发布信息与传递信息的重要渠道,为了与社会发展同步,为了让我们成为真正的技术性人才。学校在本周为我们安排了维持三周的网页制作专用周是实习,让我们把平时所学知识运用到实习中做到真正的学以致用而不只是纸上谈兵。通过本周的实习使我获得了更多的新知识同时也使我使我认识到了自己在学习上的许多不足。 近三个星期的实训将要结束,其中的酸甜苦辣我会在今后的日子里不断地去咀嚼,去回味,去探索。从制作网页过程中,我学到了新的美化网页的方法,运用了更多以前未运用的技巧。这使我学到了更多的知识,并且为我自己在制作网页这方面积累了一些经验。这些将是我人生中的一次重要的经历,将是我今后走上社会后的一笔巨大的财富。这次实习的收获对我来说有不少,我自己感觉在知识、技能等方面都有了不少的收获。总体来说这次是对我的综合素质的培养,锻炼和提高。

实时操作系统实验报告2

实时操作系统实验报告 专业:11通信工程 学号:20110306136 姓名: 王帅 指导老师:申屠浩

实验二 任务管理实验 实验目的: 1、理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程; 2、掌握μC/OS -II 中任务管理的基本方法(挂起、解挂); 3、熟练使用μC/OS -II 任务管理的基本系统调用。 实验要求与思路: 为了体现任务的各个基本状态及其变迁过程,本实验设计了T0、T1和T3三个任务,它们交替运行,如图2-2所示。 T0 T1 T2 T3 T4 T5 T6 T7 T8 图2-2 注意: 图中的栅格并不代表严格的时间刻度,而仅仅表现各任务启动和执行的相对先后关系。 说明: 在系统完成初始化后,可以先创建并启动优先级最低的TaskStart ,由它创建其他3个应用任务T0、T1和T2,之后整个系 T0 T2 T1 T0 T1 T2 T1 T0

统的运行流程如下: 1)优先级最高的T0开始执行,之后T0挂起自己; 2)然后系统调度选中T1开始执行,之后T1挂起自己; 3)接着系统调度选中T2,之后唤醒T0; 4)如此循环 实现提示: 在启动任务中创建三个任务后,应挂起任务1和任务2。 在每个任务恢复其它任务并挂起自己之前,显示当前三个任务的状态,并延时1秒。 函数说明: void PC_GetDateTime (char *s); 获取"YYYY-MM-DD HH:MM:SS"格式的时间字串存放在字符串s中,s的长度最少为21字节。 void PC_DispStr (INT8U x, INT8U y, INT8U *s, INT8U color); 在y行x列以color颜色值显示字串s,注意color由背景色和前景色两种颜色构成。 INT8U OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U milli); 按时、分、秒、毫秒设置进行延时。 void OSTimeDly (INT16U ticks) 按ticks值进行延时,1 ticks一般为10ms。 INT32U OSTimeGet (void)

相关文档
相关文档 最新文档