第4章任务管理 (1)
4.0建立任务,OSTaskCreate() (2)
4.1建立任务,OSTaskCreateExt() (6)
4.2任务堆栈 (9)
4.3堆栈检验,OSTaskStkChk() (11)
4.4删除任务,OSTaskDel() (14)
4.5请求删除任务,OSTaskDelReq() (17)
4.6改变任务的优先级,OSTaskChangePrio() (20)
4.7挂起任务,OSTaskSuspend() (23)
4.8恢复任务,OSTaskResume() (25)
4.9获得有关任务的信息,OSTaskQuery() (26)
第4章任务管理
在前面的章节中,笔者曾说过任务可以是一个无限的循环,也可以是在一次执行完毕后被删除掉。这里要注意的是,任务代码并不是被真正的删除了,而只是μC/OS-Ⅱ不再理会该任务代码,所以该任务代码不会再运行。任务看起来与任何C函数一样,具有一个返回类型和一个参数,只是它从不返回。任务的返回类型必须被定义成void型。在本章中所提到的函数可以在OS_TASK文件中找到。如前所述,任务必须是以下两种结构之一:
void YourTask (void *pdata)
{
for (;;) {
/* 用户代码 */
调用μC/OS-Ⅱ的服务例程之一:
OSMboxPend();
OSQPend();
OSSemPend();
OSTaskDel(OS_PRIO_SELF);
OSTaskSuspend(OS_PRIO_SELF);
OSTimeDly();
OSTimeDlyHMSM();
/* 用户代码 */
}
}
或
void YourTask (void *pdata)
{
/* 用户代码 */
OSTaskDel(OS_PRIO_SELF);
}
本章所讲的内容包括如何在用户的应用程序中建立任务、删除任务、改变任务的优先级、挂起和恢复任务,以及获得有关任务的信息。
μC/OS-Ⅱ可以管理多达64个任务,并从中保留了四个最高优先级和四个最低优先级的任务供自己使用,所以用户可以使用的只有56个任务。任务的优先级越高,反映优先级的值则越低。在最新的μC/OS-Ⅱ版本中,任务的优先级数也可作为任务的标识符使用。
4.0建立任务,OSTaskCreate()
想让μC/OS-Ⅱ管理用户的任务,用户必须要先建立任务。用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务:OSTaskCreate() 或 OSTaskCreateExt()。OSTaskCreate()与μC/OS是向下兼容的,OSTaskCreateExt()是OSTaskCreate()的扩展版本,提供了一些附加的功能。用两个函数中的任何一个都可以建立任务。任务可以在多任务调度开始前建立,也可以在其它任务的执行过程中被建立。在开始多任务调度(即调用OSStart())前,用户必须建立至少一个任务。任务不能由中断服务程序(ISR)来建立。
OSTaskCreate()的代码如程序清单 L4.1所述。从中可以知道,OSTaskCreate()需要四个参数:task是任务代码的指针,pdata是当任务开始执行时传递给任务的参数的指针,ptos 是分配给任务的堆栈的栈顶指针(参看4.02,任务堆栈),prio是分配给任务的优先级。
程序清单 L4.1 OSTaskCreate()
INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio)
{
void *psp;
INT8U err;
if (prio > OS_LOWEST_PRIO) { (1)
return (OS_PRIO_INVALID);
}
OS_ENTER_CRITICAL();
if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { (2)
OSTCBPrioTbl[prio] = (OS_TCB *)1; (3)
OS_EXIT_CRITICAL(); (4)
psp = (void *)OSTaskStkInit(task, pdata, ptos, 0); (5)
err = OSTCBInit(prio, psp, (void *)0, 0, 0, (void *)0, 0); (6)
if (err == OS_NO_ERR) { (7)
OS_ENTER_CRITICAL();
OSTaskCtr++; (8)
OSTaskCreateHook(OSTCBPrioTbl[prio]); (9)
OS_EXIT_CRITICAL();
if (OSRunning) { (10)
OSSched(); (11)
}
} else {
OS_ENTER_CRITICAL();
OSTCBPrioTbl[prio] = (OS_TCB *)0; (12)
OS_EXIT_CRITICAL();
}
return (err);
} else {
OS_EXIT_CRITICAL();
return (OS_PRIO_EXIST);
}
}
OSTaskCreate()一开始先检测分配给任务的优先级是否有效[L4.1(1)]。任务的优先级必须在0到OS_LOWEST_PRIO之间。接着,OSTaskCreate()要确保在规定的优先级上还没有建立任务[L4.1(2)]。在使用μC/OS-Ⅱ时,每个任务都有特定的优先级。如果某个优先级是空闲的,μC/OS-Ⅱ通过放置一个非空指针在OSTCBPrioTbl[]中来保留该优先级[L4.1(3)]。这就使得OSTaskCreate()在设置任务数据结构的其他部分时能重新允许中断[L4.1(4)]。
然后,OSTaskCreate()调用OSTaskStkInit()[L4.1(5)],它负责建立任务的堆栈。该函数是与处理器的硬件体系相关的函数,可以在OS_CPU_C.C文件中找到。有关实现OSTaskStkInit()的细节可参看第8章——移植μC/OS-Ⅱ。如果已经有人在你用的处理器上成功地移植了μC/OS-Ⅱ,而你又得到了他的代码,就不必考虑该函数的实现细节了。OSTaskStkInit()函数返回新的堆栈栈顶(psp),并被保存在任务的0S_TCB中。注意用户得将传递给OSTaskStkInit()函数的第四个参数opt置0,因为OSTaskCreate()与OSTaskCreateExt()不同,它不支持用户为任务的创建过程设置不同的选项,所以没有任何选项可以通过opt参数传递给OSTaskStkInit()。
μC/OS-Ⅱ支持的处理器的堆栈既可以从上(高地址)往下(低地址)递减也可以从下往上递增。用户在调用OSTaskCreate()的时候必须知道堆栈是递增的还是递减的(参看所用处理器的OS_CPU.H中的OS_STACK_GROWTH),因为用户必须得把堆栈的栈顶传递给OSTaskCreate(),而栈顶可能是堆栈的最高地址(堆栈从上往下递减),也可能是最低地址(堆栈从下往上长)。
一旦OSTaskStkInit()函数完成了建立堆栈的任务,OSTaskCreate()就调用OSTCBInit()[L4.1(6)],从空闲的OS_TCB池中获得并初始化一个OS_TCB。OSTCBInit()的代码如程序清单 L4.2所示,它存在于0S_CORE.C文件中而不是OS_TASK.C文件中。OSTCBInit()函数首先从OS_TCB缓冲池中获得一个OS_TCB[L4.2(1)],如果OS_TCB池中有空闲的OS_TCB[L4.2(2)],它就被初始化[L4.2(3)]。注意一旦OS_TCB被分配,该任务的创建者就已经完全拥有它了,即使这时内核又创建了其它的任务,这些新任务也不可能对已分配的OS_TCB作任何操作,所以OSTCBInit()在这时就可以允许中断,并继续初始化OS_TCB 的数据单元。
程序清单 L 4.2 OSTCBInit()
INT8U OSTCBInit (INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT16U stk_size, void *pext, INT16U opt)
{
OS_TCB *ptcb;
OS_ENTER_CRITICAL();
ptcb = OSTCBFreeList; (1) if (ptcb != (OS_TCB *)0) { (2) OSTCBFreeList = ptcb->OSTCBNext;
OS_EXIT_CRITICAL();
ptcb->OSTCBStkPtr = ptos; (3) ptcb->OSTCBPrio = (INT8U)prio;
ptcb->OSTCBStat = OS_STAT_RDY;
ptcb->OSTCBDly = 0;
#if OS_TASK_CREATE_EXT_EN
ptcb->OSTCBExtPtr = pext;
ptcb->OSTCBStkSize = stk_size;
ptcb->OSTCBStkBottom = pbos;
ptcb->OSTCBOpt = opt;
ptcb->OSTCBId = id;
#else
pext = pext;
stk_size = stk_size;
pbos = pbos;
opt = opt;
id = id;
#endif
#if OS_TASK_DEL_EN
ptcb->OSTCBDelReq = OS_NO_ERR;
#endif
ptcb->OSTCBY = prio >> 3;
ptcb->OSTCBBitY = OSMapTbl[ptcb->OSTCBY];
ptcb->OSTCBX = prio & 0x07;
ptcb->OSTCBBitX = OSMapTbl[ptcb->OSTCBX];
#if OS_MBOX_EN || (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_SEM_EN
ptcb->OSTCBEventPtr = (OS_EVENT *)0;
#endif
#if OS_MBOX_EN || (OS_Q_EN && (OS_MAX_QS >= 2))
ptcb->OSTCBMsg = (void *)0;
#endif
OS_ENTER_CRITICAL(); (4)
OSTCBPrioTbl[prio] = ptcb; (5)
ptcb->OSTCBNext = OSTCBList;
ptcb->OSTCBPrev = (OS_TCB *)0;
if (OSTCBList != (OS_TCB *)0) {
OSTCBList->OSTCBPrev = ptcb;
}
OSTCBList = ptcb;
OSRdyGrp |= ptcb->OSTCBBitY; (6)
OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
OS_EXIT_CRITICAL();
return (OS_NO_ERR); (7)
} else {
OS_EXIT_CRITICAL();
return (OS_NO_MORE_TCB);
}
}
当OSTCBInit()需要将OS_TCB插入到已建立任务的OS_TCB的双向链表中时[L4.2(5)],它就禁止中断[L4.2(4)]。该双向链表开始于OSTCBList,而一个新任务的OS_TCB常常被插入到链表的表头。最后,该任务处于就绪状态[L4.2(6)],并且OSTCBInit()向它的调用者[OSTaskCreate()]返回一个代码表明OS_TCB已经被分配和初始化了[L4.2(7)]。
现在,我可以继续讨论OSTaskCreate()(程序清单 L4.1)函数了。从OSTCBInit()返回后,OSTaskCreate()要检验返回代码[L4.1(7)],如果成功,就增加OSTaskCtr[L4.1(8)],OSTaskCtr用于保存产生的任务数目。如果OSTCBInit()返回失败,就置OSTCBPrioTbl[prio]
的入口为0[L4.1(12)]以放弃该任务的优先级。然后,OSTaskCreate()调用OSTaskCreateHook()[L4.1(9)],OSTaskCreateHook()是用户自己定义的函数,用来扩展OSTaskCreate()的功能。例如,用户可以通过OSTaskCreateHook()函数来初始化和存储浮点寄存器、MMU寄存器的内容,或者其它与任务相关的内容。一般情况下,用户可以在内存中存储一些针对用户的应用程序的附加信息。OSTaskCreateHook()既可以在OS_CPU_C.C中定义(如果OS_CPU_HOOKS_EN置1),也可以在其它地方定义。注意,OSTaskCreate()在调用OSTaskCreateHook()时,中断是关掉的,所以用户应该使OSTaskCreateHook()函数中的代码尽量简化,因为这将直接影响中断的响应时间。OSTaskCreateHook()在被调用时会收到指向任务被建立时的OS_TCB的指针。这意味着该函数可以访问OS_TCB数据结构中的所有成员。
如果OSTaskCreate()函数是在某个任务的执行过程中被调用(即OSRunning置为True[L4.1(10)]),则任务调度函数会被调用[L4.1(11)]来判断是否新建立的任务比原来的任务有更高的优先级。如果新任务的优先级更高,内核会进行一次从旧任务到新任务的任务切换。如果在多任务调度开始之前(即用户还没有调用OSStart()),新任务就已经建立了,则任务调度函数不会被调用。
4.1建立任务,OSTaskCreateExt()
用OSTaskCreateExt()函数来建立任务会更加灵活,但会增加一些额外的开销。OSTaskCreateExt()函数的代码如程序清单 L4.3所示。
我们可以看到OSTaskCreateExt()需要九个参数!前四个参数(task,pdata,ptos和prio)与OSTaskCreate()的四个参数完全相同,连先后顺序都一样。这样做的目的是为了使用户能够更容易地将用户的程序从OSTaskCreate()移植到OSTaskCreateExt()上去。
id参数为要建立的任务创建一个特殊的标识符。该参数在μC/OS以后的升级版本中可能会用到,但在μC/OS-Ⅱ中还未使用。这个标识符可以扩展μC/OS-Ⅱ功能,使它可以执行的任务数超过目前的64个。但在这里,用户只要简单地将任务的id设置成与任务的优先级一样的值就可以了。
pbos是指向任务的堆栈栈底的指针,用于堆栈的检验。
stk_size用于指定堆栈成员数目的容量。也就是说,如果堆栈的入口宽度为4字节宽,那么stk_size为10000是指堆栈有40000个字节。该参数与pbos一样,也用于堆栈的检验。
pext是指向用户附加的数据域的指针,用来扩展任务的OS_TCB。例如,用户可以为每个任务增加一个名字(参看实例3),或是在任务切换过程中将浮点寄存器的内容储存到这个附加数据域中,等等。
opt用于设定OSTaskCreateExt()的选项,指定是否允许堆栈检验,是否将堆栈清零,任务是否要进行浮点操作等等。μCOS_Ⅱ.H文件中有一个所有可能选项(OS_TASK_OPT_STK_CHK,OS_TASK_OPT_STK_CLR和OS_TASK_OPT_SAVE_FP)的常数表。每个选项占有opt的一位,并通过该位的置位来选定(用户在使用时只需要将以上OS_TASK_OPT_???选项常数进行位或(OR)操作就可以了)。
程序清单 L 4.3 OSTaskCreateExt()
INT8U OSTaskCreateExt (void (*task)(void *pd),
void *pdata,
OS_STK *ptos,
INT8U prio,
INT16U id,
OS_STK *pbos,
INT32U stk_size,
void *pext,
INT16U opt)
{
void *psp;
INT8U err;
INT16U i;
OS_STK *pfill;
if (prio > OS_LOWEST_PRIO) { (1) return (OS_PRIO_INVALID);
}
OS_ENTER_CRITICAL();
if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { (2) OSTCBPrioTbl[prio] = (OS_TCB *)1; (3) OS_EXIT_CRITICAL(); (4)
if (opt & OS_TASK_OPT_STK_CHK) { (5) if (opt & OS_TASK_OPT_STK_CLR) {
Pfill = pbos;
for (i = 0; i < stk_size; i++) {
#if OS_STK_GROWTH == 1
*pfill++ = (OS_STK)0;
#else
*pfill-- = (OS_STK)0;
#endif
}
}
}
psp = (void *)OSTaskStkInit(task, pdata, ptos, opt); (6) err = OSTCBInit(prio, psp, pbos, id, stk_size, pext, opt); (7)
if (err == OS_NO_ERR) { (8)
OS_ENTER_CRITICAL;
OSTaskCtr++; (9)
OSTaskCreateHook(OSTCBPrioTbl[prio]); (10)
OS_EXIT_CRITICAL();
if (OSRunning) { (11)
OSSched(); (12)
}
} else {
OS_ENTER_CRITICAL();
OSTCBPrioTbl[prio] = (OS_TCB *)0; (13)
OS_EXIT_CRITICAL();
}
return (err);
} else {
OS_EXIT_CRITICAL();
return (OS_PRIO_EXIST);
}
}
OSTaskCreateExt()一开始先检测分配给任务的优先级是否有效[L4.3(1)]。任务的优先级必须在0到OS_LOWEST_PRIO之间。接着,OSTaskCreateExt()要确保在规定的优先级上还没有建立任务[L4.3(2)]。在使用μC/OS-Ⅱ时,每个任务都有特定的优先级。如果某个优先级是空闲的,μC/OS-Ⅱ通过放置一个非空指针在OSTCBPrioTbl[]中来保留该优先级[L4.3(3)]。这就使得OSTaskCreateExt()在设置任务数据结构的其他部分时能重新允许中断[L4.3(4)]。
为了对任务的堆栈进行检验[参看4.03,堆栈检验,OSTaskStkChk()],用户必须在opt 参数中设置OS_TASK_OPT_STK_CHK标志。堆栈检验还要求在任务建立时堆栈的存储内容都是0(即堆栈已被清零)。为了在任务建立的时候将堆栈清零,需要在opt参数中设置OS_TASK_OPT_STK_CLR。当以上两个标志都被设置好后,OSTaskCreateExt()才能将堆栈清零[L4.3(5)]。
接着,OSTaskCreateExt()调用OSTaskStkInit()[L4.3(6)],它负责建立任务的堆栈。该函数是与处理器的硬件体系相关的函数,可以在OS_CPU_C.C文件中找到。有关实现OSTaskStkInit()的细节可参看第八章——移植μC/OS-Ⅱ。如果已经有人在你用的处理器上成功地移植了μC/OS-Ⅱ,而你又得到了他的代码,就不必考虑该函数的实现细节了。OSTaskStkInit()函数返回新的堆栈栈顶(psp),并被保存在任务的0S_TCB中。
μC/OS-Ⅱ支持的处理器的堆栈既可以从上(高地址)往下(低地址)递减也可以从下往上递增(参看4.02,任务堆栈)。用户在调用OSTaskCreateExt()的时候必须知道堆栈是递增的还是递减的(参看用户所用处理器的OS_CPU.H中的OS_STACK_GROWTH),因为用户必须得把
堆栈的栈顶传递给OSTaskCreateExt(),而栈顶可能是堆栈的最低地址(当OS_STK_GROWTH 为0时),也可能是最高地址(当OS_STK_GROWTH为1时)。
一旦OSTaskStkInit()函数完成了建立堆栈的任务,OSTaskCreateExt()就调用OSTCBInit() [L4.3(7)],从空闲的OS_TCB缓冲池中获得并初始化一个OS_TCB。OSTCBInit()的代码在OSTaskCreate()中曾描述过(参看 4.00节), 从OSTCBInit()返回后,OSTaskCreateExt()要检验返回代码[L4.3(8)],如果成功,就增加OSTaskCtr[L4.3(9)],OSTaskCtr用于保存产生的任务数目。如果OSTCBInit()返回失败,就置OSTCBPrioTbl[prio]的入口为0[L4.3(13)]以放弃对该任务优先级的占用。然后,OSTaskCreateExt()调用OSTaskCreateHook()[L4.3(10)],OSTaskCreateHook()是用户自己定义的函数,用来扩展OSTaskCreateExt()的功能。OSTaskCreateHook()可以在OS_CPU_C.C中定义(如果OS_CPU_HOOKS_EN置1),也可以在其它地方定义(如果OS_CPU_HOOKS_EN置0)。注意,OSTaskCreateExt()在调用OSTaskCreateHook()时,中断是关掉的,所以用户应该使OSTaskCreateHook()函数中的代码尽量简化,因为这将直接影响中断的响应时间。OSTaskCreateHook()被调用时会收到指向任务被建立时的OS_TCB的指针。这意味着该函数可以访问OS_TCB数据结构中的所有成员。
如果OSTaskCreateExt()函数是在某个任务的执行过程中被调用的(即OSRunning置为True[L4.3(11)]),以任务调度函数会被调用[L4.3(12)]来判断是否新建立的任务比原来的任务有更高的优先级。如果新任务的优先级更高,内核会进行一次从旧任务到新任务的任务切换。如果在多任务调度开始之前(即用户还没有调用OSStart()),新任务就已经建立了,则任务调度函数不会被调用。
4.2任务堆栈
每个任务都有自己的堆栈空间。堆栈必须声明为OS_STK类型,并且由连续的内存空间组成。用户可以静态分配堆栈空间(在编译的时候分配)也可以动态地分配堆栈空间(在运行的时候分配)。静态堆栈声明如程序清单 L4.4和4.5所示,这两种声明应放置在函数的外面。
程序清单L4.4 静态堆栈
static OS_STK MyTaskStack[stack_size];
或
程序清单L4.5 静态堆栈
OS_STK MyTaskStack[stack_size];
用户可以用C编译器提供的malloc()函数来动态地分配堆栈空间,如程序清单 L4.6所示。在动态分配中,用户要时刻注意内存碎片问题。特别是当用户反复地建立和删除任务时,内存堆中可能会出现大量的内存碎片,导致没有足够大的一块连续内存区域可用作任务堆栈,这时malloc()便无法成功地为任务分配堆栈空间。
程序清单 L L4.6 用malloc()为任务分配堆栈空间
OS_STK *pstk;
pstk = (OS_STK *)malloc(stack_size);
if (pstk != (OS_STK *)0) { /* 确认malloc()能得到足够地内存空间 */
Create the task;
}
图4.1表示了一块能被malloc()动态分配的3K字节的内存堆 [F4.1(1)]。为了讨论问题方便,假定用户要建立三个任务(任务A,B和C),每个任务需要1K字节的空间。设第一个1K字节给任务A, 第二个1K字节给任务B, 第三个1K字节给任务C[F4.1(2)]。然后,用户的应用程序删除任务A和任务C,用free()函数释放内存到内存堆中[F4.1(3)]。现在,用户的内存堆虽有2K字节的自由内存空间,但它是不连续的,所以用户不能建立另一个需要2K字节内存的任务(即任务D)。如果用户并不会去删除任务,使用malloc()是非常可行的。
图 F4.1 内存碎片
μC/OS-Ⅱ支持的处理器的堆栈既可以从上(高地址)往下(低地址)长也可以从下往上长(参看4.02,任务堆栈)。用户在调用OSTaskCreate()或OSTaskCreateExt()的时候必须知道堆栈是怎样长的,因为用户必须得把堆栈的栈顶传递给以上两个函数,当OS_CPU.H文件中的OS_STK_GROWTH置为0时,用户需要将堆栈的最低内存地址传递给任务创建函数,如程序清单4.7所示。
程序清单 L4.7 堆栈从下往上递增
OS_STK TaskStack[TASK_STACK_SIZE];
OSTaskCreate(task, pdata, &TaskStack[0], prio);
当OS_CPU.H文件中的OS_STK_GROWTH置为1时,用户需要将堆栈的最高内存地址传递给任务创建函数,如程序清单4.8所示。
程序清单 L4.8 堆栈从上往下递减
OS_STK TaskStack[TASK_STACK_SIZE];
OSTaskCreate(task, pdata, &TaskStack[TASK_STACK_SIZE-1], prio);
这个问题会影响代码的可移植性。如果用户想将代码从支持往下递减堆栈的处理器中移植到支持往上递增堆栈的处理器中的话,用户得使代码同时适应以上两种情况。在这种特殊情况下,程序清单 L4.7和4.8可重新写成如程序清单 L4.9所示的形式。
程序清单 L 4.9 对两个方向增长的堆栈都提供支持
OS_STK TaskStack[TASK_STACK_SIZE];
#if OS_STK_GROWTH == 0
OSTaskCreate(task, pdata, &TaskStack[0], prio);
#else
OSTaskCreate(task, pdata, &TaskStack[TASK_STACK_SIZE-1], prio);
#endif
任务所需的堆栈的容量是由应用程序指定的。用户在指定堆栈大小的时候必须考虑用户的任务所调用的所有函数的嵌套情况,任务所调用的所有函数会分配的局部变量的数目,以及所有可能的中断服务例程嵌套的堆栈需求。另外,用户的堆栈必须能储存所有的CPU寄存器。
4.3堆栈检验,OSTaskStkChk()
有时候决定任务实际所需的堆栈空间大小是很有必要的。因为这样用户就可以避免为任务分配过多的堆栈空间,从而减少自己的应用程序代码所需的RAM(内存)数量。μC/OS-Ⅱ提供的OSTaskStkChk()函数可以为用户提供这种有价值的信息。
在图4.2中,笔者假定堆栈是从上往下递减的(即OS_STK_GROWTH被置为1),但以下的讨论也同样适用于从下往上长的堆栈[F4.2(1)]。μC/OS-Ⅱ是通过查看堆栈本身的内容来决定堆栈的方向的。只有内核或是任务发出堆栈检验的命令时,堆栈检验才会被执行,它不会自动地去不断检验任务的堆栈使用情况。在堆栈检验时,μC/OS-Ⅱ要求在任务建立的时候堆栈中存储的必须是0值(即堆栈被清零)[F4.2(2)]。另外,μC/OS-Ⅱ还需要知道堆栈栈底(BOS)的位置和分配给任务的堆栈的大小[F4.2(2)]。在任务建立的时候,BOS的位置及堆栈的这两个值储存在任务的OS_TCB中。
为了使用μC/OS-Ⅱ的堆栈检验功能,用户必须要做以下几件事情: z 在OS_CFG.H 文件中设OS_TASK_CREATE_EXT 为1。
z 用OSTaskCreateExt()建立任务,并给予任务比实际需要更多的内存空间。 z
在OSTaskCreateExt()中,将参数opt 设置为OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_ CLR。注意如果用户的程序启动代码清除了所有的RAM,并且从未删除过已建立了的任务,那么用户就不必设置选项OS_TASK_OPT_STK_CLR 了。这样就会减少OSTaskCreateExt()的执行时间。
z 将用户想检验的任务的优先级作为OSTaskStkChk()的参数并调用之。
图 4.2 堆栈检验
OSTaskStkChk()顺着堆栈的栈底开始计算空闲的堆栈空间大小,具体实现方法是统计储存值为0的连续堆栈入口的数目,直到发现储存值不为0的堆栈入口[F4.2(5)]。注意堆栈入口的储存值在进行检验时使用的是堆栈的数据类型(参看OS_CPU.H 中的OS_STK)。换句话说,如果堆栈的入口有32位宽,对0值的比较也是按32位完成的。所用的堆栈的空间大小是指从用户在OSTaskCreateExt()中定义的堆栈大小中减去了储存值为0的连续堆栈入口以后的大小。OSTaskStkChk()实际上把空闲堆栈的字节数和已用堆栈的字节数放置在0S_STK_DATA 数据结构中(参看μCOS_Ⅱ.H)。注意在某个给定的时间,被检验的任务的堆栈指针可能会指向最初的堆栈栈顶(TOS)与堆栈最深处之间的任何位置[F4.2(7)]。每次在调用OSTaskStkChk()的时候,用户也可能会因为任务还没触及堆栈的最深处而得到不同的堆栈的空闲空间数。 用户应该使自己的应用程序运行足够长的时间,并且经历最坏的堆栈使用情况,这样才能得到正确的数。一旦OSTaskStkChk()提供给用户最坏情况下堆栈的需求,用户就可以重新设置堆栈的最后容量了。为了适应系统以后的升级和扩展,用户应该多分配
10%-100%
的堆栈空间。在堆栈检验中,用户所得到的只是一个大致的堆栈使用情况,并不能说明堆栈使用的全部实际情况。
OSTaskStkChk()函数的代码如程序清单 L4.10所示。0S_STK_DATA(参看μCOS_Ⅱ.H)数据结构用来保存有关任务堆栈的信息。笔者打算用一个数据结构来达到两个目的。第一,把OSTaskStkChk()当作是查询类型的函数,并且使所有的查询函数用同样的方法返回,即返回查询数据到某个数据结构中。第二,在数据结构中传递数据使得笔者可以在不改变OSTaskStkChk()的API(应用程序编程接口)的条件下为该数据结构增加其它域,从而扩展OSTaskStkChk()的功能。现在,0S_STK_DATA只包含两个域:OSFree和OSUsed。从代码中用户可看到,通过指定执行堆栈检验的任务的优先级可以调用OSTaskStkChk()。如果用户指定0S_PRIO_SELF[L4.10(1)],那么就表明用户想知道当前任务的堆栈信息。当然,前提是任务已经存在[L4.10(2)]。要执行堆栈检验,用户必须已用OSTaskCreateExt()建立了任务并且已经传递了选项OS_TASK_OPT_CHK[L4.10(3)]。如果所有的条件都满足了,OSTaskStkChk()就会象前面描述的那样从堆栈栈底开始统计堆栈的空闲空间[L4.10(4)]。最后,储存在0S_STK_DATA中的信息就被确定下来了[L4.10(5)]。注意函数所确定的是堆栈的实际空闲字节数和已被占用的字节数,而不是堆栈的总字节数。当然,堆栈的实际大小(用字节表示)就是该两项之和。
程序清单 L 4.10 堆栈检验函数
INT8U OSTaskStkChk (INT8U prio, OS_STK_DATA *pdata)
{
OS_TCB *ptcb;
OS_STK *pchk;
INT32U free;
INT32U size;
pdata->OSFree = 0;
pdata->OSUsed = 0;
if (prio > OS_LOWEST_PRIO && prio != OS_PRIO_SELF) {
return (OS_PRIO_INVALID);
}
OS_ENTER_CRITICAL();
if (prio == OS_PRIO_SELF) { (1)
prio = OSTCBCur->OSTCBPrio;
}
ptcb = OSTCBPrioTbl[prio];
if (ptcb == (OS_TCB *)0) { (2)
OS_EXIT_CRITICAL();
return (OS_TASK_NOT_EXIST);
}
if ((ptcb->OSTCBOpt & OS_TASK_OPT_STK_CHK) == 0) { (3)
OS_EXIT_CRITICAL();
return (OS_TASK_OPT_ERR);
}
free = 0; (4)
size = ptcb->OSTCBStkSize;
pchk = ptcb->OSTCBStkBottom;
OS_EXIT_CRITICAL();
#if OS_STK_GROWTH == 1
while (*pchk++ == 0) {
free++;
}
#else
while (*pchk-- == 0) {
free++;
}
#endif
pdata->OSFree = free * sizeof(OS_STK); (5)
pdata->OSUsed = (size - free) * sizeof(OS_STK);
return (OS_NO_ERR);
}
4.4删除任务,OSTaskDel()
有时候删除任务是很有必要的。删除任务,是说任务将返回并处于休眠状态(参看3.02,任务状态),并不是说任务的代码被删除了,只是任务的代码不再被μC/OS-Ⅱ调用。通过调用OSTaskDel()就可以完成删除任务的功能(如程序清单 L4.11所示)。OSTaskDel()一开始应确保用户所要删除的任务并非是空闲任务,因为删除空闲任务是不允许的[L4.11(1)]。不过,用户可以删除statistic任务[L4.11(2)]。接着,OSTaskDel()还应确保用户不是在ISR 例程中去试图删除一个任务,因为这也是不被允许的[L4.11(3)]。调用此函数的任务可以通过指定OS_PRIO_SELF参数来删除自己[L4.11(4)]。接下来OSTaskDel()会保证被删除的任务是确实存在的[L4.11(3)]。如果指定的参数是OS_PRIO_SELF的话,这一判断过程(任务是否存在)自然是可以通过的,但笔者不准备为这种情况单独写一段代码,因为这样只会增加代码并延长程序的执行时间。
程序清单 L 4.11 删除任务
INT8U OSTaskDel (INT8U prio)
{
OS_TCB *ptcb;
OS_EVENT *pevent;
if (prio == OS_IDLE_PRIO) { (1)
return (OS_TASK_DEL_IDLE);
}
if (prio >= OS_LOWEST_PRIO && prio != OS_PRIO_SELF) { (2) return (OS_PRIO_INVALID);
}
OS_ENTER_CRITICAL();
if (OSIntNesting > 0) { (3)
OS_EXIT_CRITICAL();
return (OS_TASK_DEL_ISR);
}
if (prio == OS_PRIO_SELF) { (4)
Prio = OSTCBCur->OSTCBPrio;
}
if ((ptcb = OSTCBPrioTbl[prio]) != (OS_TCB *)0) { (5) if ((OSRdyTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) { (6)
OSRdyGrp &= ~ptcb->OSTCBBitY;
}
if ((pevent = ptcb->OSTCBEventPtr) != (OS_EVENT *)0) { (7)
if ((pevent->OSEventTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) {
pevent->OSEventGrp &= ~ptcb->OSTCBBitY;
}
}
Ptcb->OSTCBDly = 0; (8)
Ptcb->OSTCBStat = OS_STAT_RDY; (9)
OSLockNesting++; (10)
OS_EXIT_CRITICAL(); (11)
OSDummy(); (12)
OS_ENTER_CRITICAL();
OSLockNesting--; (13)
OSTaskDelHook(ptcb); (14)
OSTaskCtr--;
OSTCBPrioTbl[prio] = (OS_TCB *)0; (15)
if (ptcb->OSTCBPrev == (OS_TCB *)0) { (16)
ptcb->OSTCBNext->OSTCBPrev = (OS_TCB *)0;
OSTCBList = ptcb->OSTCBNext;
} else {
ptcb->OSTCBPrev->OSTCBNext = ptcb->OSTCBNext;
ptcb->OSTCBNext->OSTCBPrev = ptcb->OSTCBPrev;
}
ptcb->OSTCBNext = OSTCBFreeList; (17)
OSTCBFreeList = ptcb;
OS_EXIT_CRITICAL();
OSSched(); (18)
return (OS_NO_ERR);
} else {
OS_EXIT_CRITICAL();
return (OS_TASK_DEL_ERR);
}
}
一旦所有条件都满足了,OS_TCB就会从所有可能的μC/OS-Ⅱ的数据结构中移除。OSTaskDel()分两步完成该移除任务以减少中断响应时间。首先,如果任务处于就绪表中,它会直接被移除[L4.11(6)]。如果任务处于邮箱、消息队列或信号量的等待表中,它就从自己所处的表中被移除[L4.11(7)]。接着,OSTaskDel()将任务的时钟延迟数清零,以确保自己重新允许中断的时候,ISR例程不会使该任务就绪[L4.11(8)]。最后,OSTaskDel()置任务的.OSTCBStat标志为OS_STAT_RDY。注意,OSTaskDel()并不是试图使任务处于就绪状态,而是阻止其它任务或ISR例程让该任务重新开始执行(即避免其它任务或ISR调用OSTaskResume()[L4.11(9)])。这种情况是有可能发生的,因为OSTaskDel()会重新打开中断,而ISR可以让更高优先级的任务处于就绪状态,这就可能会使用户想删除的任务重新开始执行。如果不想置任务的.OSTCBStat标志为OS_STAT_RDY,就只能清除OS_STAT_SUSPEND 位了(这样代码可能显得更清楚,更容易理解一些),但这样会使得处理时间稍长一些。
要被删除的任务不会被其它的任务或ISR置于就绪状态,因为该任务已从就绪任务表中删除了,它不是在等待事件的发生,也不是在等待延时期满,不能重新被执行。为了达到删除任务的目的,任务被置于休眠状态。正因为这样,OSTaskDel()必须得阻止任务调度程序[L4.11(10)]在删除过程中切换到其它的任务中去,因为如果当前的任务正在被删除,它不可能被再次调度!接下来,OSTaskDel()重新允许中断以减少中断的响应时间[L4.11(11)]。
这样,OSTaskDel()就能处理中断服务了,但由于它增加了OSLockNesting,ISR执行完后会返回到被中断任务,从而继续任务的删除工作。注意OSTaskDel()此时还没有完全完成删除任务的工作,因为它还需要从TCB链中解开OS_TCB,并将OS_TCB返回到空闲OS_TCB表中。
另外需要注意的是,笔者在调用OS_EXIT_CRITICAL()函数后,马上调用了OSDummy() [L4.11(12)],该函数并不会进行任何实质性的工作。这样做只是因为想确保处理器在中断允许的情况下至少执行一个指令。对于许多处理器来说,执行中断允许指令会强制CPU禁止中断直到下个指令结束!Intel 80x86和Zilog Z-80处理器就是如此工作的。开中断后马上关中断就等于从来没开过中断,当然这会增加中断的响应时间。因此调用OSDummy()确保在再次禁止中断之前至少执行了一个调用指令和一个返回指令。当然,用户可以用宏定义将OSDummy()定义为一个空操作指令(译者注:例如MC68HC08指令中的NOP指令),这样调用OSDummy()就等于执行了一个空操作指令,会使OSTaskDel()的执行时间稍微缩短一点。但笔者认为这种宏定义是没价值的,因为它会增加移植μCOS-Ⅱ的工作量。
现在,OSTaskDel()可以继续执行删除任务的操作了。在OSTaskDel()重新关中断后,它通过锁定嵌套计数器(OSLockNesting)减一以重新允许任务调度[L4.11(13)]。接着,OSTaskDel()调用用户自定义的OSTaskDelHook()函数[L4.11(14)],用户可以在这里删除或释放自定义的TCB附加数据域。然后,OSTaskDel()减少μCOS-Ⅱ的任务计数器。OSTaskDel()简单地将指向被删除的任务的OS_TCB的指针指向NULL[L4.11(15)],从而达到将OS_TCB从优先级表中移除的目的。再接着,OSTaskDel()将被删除的任务的OS_TCB从OS_TCB双向链表中移除[L4.11(16)]。注意,没有必要检验ptcb->OSTCBNext==0的情况,因为OSTaskDel()不能删除空闲任务,而空闲任务就处于链表的末端(ptcb->OSTCBNext==0)。接下来,OS_TCB 返回到空闲OS_TCB表中,并允许其它任务的建立[L4.11(17)]。最后,调用任务调度程序来查看在OSTaskDel()重新允许中断的时候[L4.11(11)],中断服务子程序是否曾使更高优先级的任务处于就绪状态[L4.11(18)]。
4.5请求删除任务,OSTaskDelReq()
有时候,如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失。在这种情况下,用户可以想法子让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己。用户可以通过OSTaskDelReq()函数来完成该功能。
发出删除任务请求的任务(任务B)和要删除的任务(任务A)都需要调用OSTaskDelReq()函数。任务B的代码如程序清单 L4.12所示。任务B需要决定在怎样的情况下请求删除任务[L4.12(1)]。换句话说,用户的应用程序需要决定在什么样的情况下删除任务。如果任务需要被删除,可以通过传递被删除任务的优先级来调用OSTaskDelReq()[L4.12(2)]。如果要被删除的任务不存在(即任务已被删除或是还没被建立),OSTaskDelReq()返回OS_TASK_NOT_EXIST。如果OSTaskDelReq()的返回值为OS_NO_ERR,则表明请求已被接受但任务还没被删除。用户可能希望任务B等到任务A删除了自己以后才继续进行下面的工作,这时用户可以象笔者一样,通过让任务B延时一定时间来达到这个目的[L4.12(3)]。笔者延时了一个时钟节拍。如果需要,用户可以延时得更长一些。当任务A完全删除自己后,[L4.12(2)]中的返回值成为0S_TASK_NOT_EXIST,此时循环结束[L4.12(4)]。
程序清单 L 4.12 请求删除其它任务的任务(任务B)
void RequestorTask (void *pdata)
INT8U err;
pdata = pdata;
for (;;) {
/* 应用程序代码 */
if ('TaskToBeDeleted()' 需要被删除) { (1) while (OSTaskDelReq(TASK_TO_DEL_PRIO) != OS_TASK_NOT_EXIST) {
(2) OSTimeDly(1); (3) }
}
/*应用程序代码*/ (4) }
}
程序清单 L 4.13 需要删除自己的任务(任务A)
void TaskToBeDeleted (void *pdata)
{
INT8U err;
pdata = pdata;
for (;;) {
/*应用程序代码*/
If (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ) { (1) 释放所有占用的资源; (2)
释放所有动态内存;
OSTaskDel(OS_PRIO_SELF); (3) } else {
/*应用程序代码*/
}
}
需要删除自己的任务(任务A)的代码如程序清单 L4.13所示。在OS_TAB中存有一个标志,任务通过查询这个标志的值来确认自己是否需要被删除。这个标志的值是通过调用OSTaskDelReq(OS_PRIO_SELF)而得到的。当OSTaskDelReq()返回给调用者OS_TASK_DEL_REQ[L4.13(1)]时,则表明已经有另外的任务请求该任务被删除了。在这种情况下,被删除的任务会释放它所拥有的所用资源[L4.13(2)],并且调用OSTaskDel(OS_PRIO_SELF)来删除自己[L4.13(3)]。前面曾提到过,任务的代码没有被真正的删除,而只是μC/OS-Ⅱ不再理会该任务代码,换句话说,就是任务的代码不会再运行了。但是,用户可以通过调用OSTaskCreate()或OSTaskCreateExt()函数重新建立该任务。
OSTaskDelReq()的代码如程序清单 L4.14所示。通常OSTaskDelReq()需要检查临界条件。首先,如果正在删除的任务是空闲任务,OSTaskDelReq()会报错并返回[L4.14(1)]。接着,它要保证调用者请求删除的任务的优先级是有效的[L4.14(2)]。如果调用者就是被删除任务本身,存储在OS_TCB中的标志将会作为返回值[L4.14(3)]。如果用户用优先级而不是OS_PRIO_SELF指定任务,并且任务是存在的[L4.14(4)],OSTaskDelReq()就会设置任务的内部标志[L4.14(5)]。如果任务不存在,OSTaskDelReq()则会返回OS_TASK_NOT_EXIST,表明任务可能已经删除自己了[L4.14(6)]。
程序清单 L 4.14 OSTaskDelReq().
INT8U OSTaskDelReq (INT8U prio)
{
BOOLEAN stat;
INT8U err;
OS_TCB *ptcb;
if (prio == OS_IDLE_PRIO) { (1)
return (OS_TASK_DEL_IDLE);
}
if (prio >= OS_LOWEST_PRIO && prio != OS_PRIO_SELF) {
(2)
return (OS_PRIO_INVALID);
}
if (prio == OS_PRIO_SELF) { (3)
OS_ENTER_CRITICAL();
stat = OSTCBCur->OSTCBDelReq;
OS_EXIT_CRITICAL();
return (stat);
学生寝室管理系统项目任务分解 完成时间:2017年9 月22 日 1.系统功能模块
(图一) 本小组采用的任务分解方法为自上向下法,从项目的大局出发,然后逐步分解子项目,将项目变为更细更完善部分。在总的学生公寓管理系统我们将宿舍管理系统分为五个大的功能模块:用户帐号模块、宿舍管理模块、学生信息查询模块、卫生评比模块、出入登记模块。每个模块将实现不同的功能。下面将具体进行介绍。 1.3 用户帐号模块
系统分支(用户帐号模块)功能模块图 用户帐号模块包括:用户设置,退出系统二个部分。 1.3.1 用户设置 实现系统管理人员、普通人员登录和密码修改。 1.3.2 退出系统 实现正常退出宿舍管理系统。 1.4 宿舍管理模块 系统分支(宿舍管理模块)功能模块图 公寓管理模块包括:入住管理、退宿管理、员工管理、晚归管理、公物报修五个大的部分。 1.4.1.入住管理 登记学校所有住宿楼情况。 1.4. 2.退宿管理 登记学校所有宿舍退宿人员的情况。 1.4.3.公物报修 登记学校所有住宿楼公物损坏上报情况 1.5信息查询模块 系统分支(信息查询模块)功能模块图 信息查询模块基本上包括:学生查询(要实现按多种条件的查询)。
1.5.1学生查询 实现每个学生基本信息情况的查询功能。 1.6卫生评比模块 系统分支(卫生评比模块)功能模块图 卫生评比模块基本上包括:周扣分、扣分统计卫生评比。 1.6.1周扣分 纪录每周每个宿舍楼每个宿舍每个人的扣分情况 1.6.2扣分统计 按班级和宿舍两种不同分法在一段时间内的个人扣分的名单的统计情况。 1.6.3卫生评比 实现宿舍先进集体和先进个人的名单的统计。 1.7出入管理模块 系统分支(出入管理模块)功能模块图 出入登记模块包括:来访登记、进出楼登记、两个功能模块。 1.7.1.来访登记 详细登记进入宿舍楼的外来人员情况和离开情况。 1.7. 2.进出楼登记 详细登记某学生搬入和搬出宿舍楼的物品情况。 根据对本项目的需求规格的分析,采用上述图表的方式进行分解,其分解结果如图一所示,它是按照功能组成标准进行的寝室系统功能部分的任务分解,其
高考遇到任务驱动型作文:7种方法+7篇范文助你轻松拿满分! 将近一年的高三教学实践中,我对任务驱动型作文有了一点粗浅的认识,写下了这份心得,不足之处,敬请指教! 一、条陈理由,彻解问题 “任务驱动型作文”写作的基本框架 任务驱动型作文的全称是叙事体新材料任务驱动型作文。其实质也就是有些地方所说“时评类”作文,其本质还依然是材料作文,只是在材料的基础上,增加了明确的指向性任务,意在增强写作的目的性、防止套作。这种作文题重在考查学生对一事物或社会现象的态度与看法,思维的深度与广度,表达的清晰与晓畅。因此,在写作这类作文时,有些基本的东西是必不可少的,只有具备了其中的基本要素,才能达到要求;只有具备了其中的基本框架,才能在考场中立于不败之地。 任务驱动型作文的基本框架有哪些构件组成呢?笔者认为,有如下五部分。 就是在审题的基础上,明确立意,选择写作的角度,拟定一个有抢眼的题目。这个标题应尽量是从材料中抽取而出的“核心立意”,并就此选取材料中关键词句加以组合而成的简洁短语或句子。尽力不用态度而用看法或观点。能运用约定俗成的词句加以改造更为上策。能标新立异就更加理想。 正文第一段就用“引述+表态+ 观点”的形式,以达到“闪亮登场”的效果。引述可是直接的,也可以是间接的,但必须是有针对性的。表态一定要坚决、果断和明确。观点的呈现,不要拖泥带水,而要开门见山。 有了态度与观点,没有理由就站不住脚。因此,作文的第三步必然阐述你的理由。阐述一定要具有条理性,就是分点;还要注意内容的层次性,如由浅及深,由表及里,有具体到抽象等。如此才能展示一个学生思维的深广度。 这个步骤一般的同学很难发挥。到底要怎样才能深入呢?笔者认为,最基本的办法就是针对问题提出可行的有时代意义的解决方法,即解决问题。另外,还可以“横向拓展” “纵向挖掘”和进行简易的批驳。尤其是反驳,可以预设反方,然后,进行委婉的劝说,以体现作者思维的周密性,达到任务型作文“文明说理”的要求。 任何一篇文章都要考虑其现实意义,如果没有了现实意义,该文章就逊色许多。因此,学生习作也好,考场作文也好,联系实际是必需的。但是,这一环节不能太婆婆妈妈,应如一部乐曲演奏完毕,戛然而止、曲终人散、回味无穷。 一篇习作具备了上述五个部件构建而成,已是有模有样、中规中矩,若能加上一些必备的调味品,如菜肴之于姜葱蒜,而后定然可取得高分好评。 【实例品析】阅读下面的材料,根据要求写一篇不少于800字的文章。 为了督促学生学习,某职业技术学院的焦老师想出在课后用微信发红包的“新招”,对出勤率高、学习成绩好和上课认真的同学,都发了红包。此举一出,他的课学生没一个逃课,课堂气氛活跃,师 生关系变好。此事传出,该校老师和学生表示认可,觉得这个做法有新意。媒体报道后,引发争议,有家长明确反对老师这种做法,认为用“钱”引导学生上课,会让孩子变得功利,使教育变味。 对以上这件事,你怎么看?请就焦老师、学生或家长的表现,表明自己的态度,阐述自己的看法。要求综合材料内容及含意,选好角度,确定立意,完成写作任务。 范文: 教书育人也应有“新招”(标题简洁、响亮) 为了督促学生学习,某职业技术学院的焦老师想出在课后用微信发红包的“新招”,对出勤率高、学习成绩好和上课认真的同学,都发了红包。此举一出,师生认可,又在社会上引发了争议,还有家长认为这样会使教育变味。我认为,焦老师是个敢于创新的老师。在如此沉闷的教育背景下,教书育人也的确应该有新招,才能激活教育的正能量。(引述+态度+观点) 首先,传统的育人方式是以班级集体授课制为主,以灌输为主的应试教育让学生们抵触厌烦,远远达不到教育的目的。在这样的情况下,老师们“八仙过海,各显神通”,采用一些新的顺应时代的招数,本是理所应当的,只有不断更新方法,才能不断激活学习的动力。 其次,微信发红包的新招效果明显。大焦老师的课没有一个逃课,课堂气氛活跃,师生关系很好。暂且不论其效果的持久性,但就这点,已经证明新招的可行性。 其三,如果能把“发红包”这种新事物与传统的教书育人方法有机整合起来,还可以给人们提供一种新的思维和教育理念。如在互联网时代,用好移动技术,对学生进行时时处处地引导与教育,定能激发出无数的能量。因此,焦老师的新招肯定能在教育界激发波波涟漪。(分点分层阐述理由) 有家长明确反对老师这种做法,认为用“钱”引导学生上课,会让孩子变得功利,使教育变味。的确,现代学生本就生长在“物欲横流”的环境中,一味用钱去引导学习,极有可能变得功利,使教育变味。但是,教育不能因存在某种风险而畏首畏尾或举步不前。只要是“在课后”,“用小钱”,方式恰当,不变本加厉,在红包激励的同时仍以精神感化、正面教育为主线,发红包这样的新举动一定能在教育中起到重要的激活辅助作用。(预设反方,简易批驳) 古语云:亲其师,信其道。发红包能让学生更亲近其师,“信其道”就不言而喻了。又云:教学相长。学生的学习热情因红包而唤起,那么,学生的热情必然会影响老师的激情,终将达到“相长”的目的。教师的魅力关键在于学术与人格。一个教师若能紧紧依靠自身的学术与人格魅力,辅以新巧的方法,定能让各种因素相得益彰,形成合力,促进教书育人功能的巨大提高。(横向拓展) 如今,我国的教育因各种原因而困难重重,多几个像焦老师那样不甘平庸、敢于创新的老师,拿出更多的新招,必然能冲破重重阴霾,走向教育强国的康庄大道。(联系实际,快速收尾) 【点评】这一篇习作基本按照五部分基本框架来写,说理清晰,有条理,有深度,也有广度,适度的引用名言,具有较强的时代意义,是一篇难得的考生值得参照的优秀作文。 二、依事设问,分层论述 面对叙事体新材料任务驱动型作文,许多同学不知所措,莫衷一是。在此,介绍一种十分基本实用的方法,即“依事设问,分层论述”,它既能解决无话可说的问题,又可以凭此提升深入阐述事理的能力。 方法指导: 1.依据任务梳理材料,选定角度,表明你的态度,发表你的看法或观点。 2.从材料出发,引述材料,分析并提出新颖、与众不同的中心论点(标题)。
120急救调度工作常见问题及处理 南通市急救中心吴娅莉 120急救调度是院前急救医学的重要组成部分,是近年来迅速发展的一门新兴学科,是挽救患者生命的前沿阵地。随着社会流动人口的增加和市民自我保护能力的不断加强,急救调度的纠纷时有发生。现将调度工作中常见问题及防范措施总结如下。 (一)120骚扰电话的防范 120电话是为医疗急救而设置的免费电话,但一些无聊市民胡乱拨打120,造成医疗资源的巨大浪费,影响了120求救电话接通工作,我们在借鉴了兄弟单位比较成功的经验的同时结合本中心的实际情况在防范各类骚扰电话方面有了比较好的措施。 初期,在04年中心120指挥调度系统建立之初,面对并不太多的骚扰电话,我们要不就是挂电话,要不就是劝其不要再拨打,如果比较严重的屡教不改的,我们与110联系,请求协助打击,也确实发挥了一些作用。 后来,骚扰电话越来越多,110、119也经常受到骚扰,防不胜防,我们就及时的更新了电脑程序,采取了电脑锁定的措施,有效的阻止了骚扰电话的进入。当然,我们对骚扰电话的认定和锁定是比较慎重的,特别是“无声电话”,因为确实有的呼救者在拨通120后语言表达不清甚至有失语言能力的情况,还有误拨错拨的情况会发生,因此,不允许轻易的判定为骚扰电话,不允许轻易的锁定,以避免失误。 再后来,随着电话、手机、网络电话的普及,骚扰电话越来越多,又不能都轻易的锁定,调度人员受的委屈越来越大,有时甚至会出现个别调度人员情绪激动时回骂的现象。当然回骂并不能减少和消除骚扰电话,也不利调度人员正常开展工作,我们就要求调度人员在受到骚扰时要指明对方的骚扰是违法的和不利于其他患者呼救的,并且告知对方已与110联系,劝告和警告并用,然后挂断了之。 (二)如何减少调度人员上当的次数 从事调度工作的这几年中,有时候,救护车风急火燎的赶到,面对的却是空荡荡的一片,120救护车出车放空有几种情况:有的是地址搞错了,有的是患者等不及自行走了;有的是个别人捣乱,现场就没有这个门牌号码或是没有病人;有的是个别人搞恶作剧泄私愤,现场有这个“病人”但是没有病;有的是现场根本没有发生任何情况。后三种情况都属于调度人员上当,调度员上当是不可避免的,但尽量减少上当放空车的次数还是可能的。 先介绍一个案例:某日,本中心接到来自崇川区钟秀社区某一工厂内发生火灾,有人员受伤,呼救人情绪激动,语速较快,当调度员询问主叫电话号码时,呼救者报的电话与受理台上显示的号码一致,调度员还询问呼救者是否拨打过110和119请求帮助,经呼救者确认后,调度员才派出前往进行施救。救护车到了后发现并没有任何事情发生,更不存在有人受伤的情况。之后调度员又反复拨打呼救者电话,呼救者电话关机。 从调度人员的角度来看,在与呼救者沟通时,除了要受理呼救信息外,还要注意倾听、体会和识别呼救的真伪: 1.“呼救者”的区域:“呼救者”所报现场地址与电话、手机所在局向不符的,骗车率大。如地址在崇川区的电话号码的局向大多为“855、835、852等”这个局向在南通的市中心或东片。过去,固定电话移机是移机带号功能,但现在毕竟是少数。手机局向在呼救电话时,如受理台显示手机号前有“0”则是外地手机号,所以主叫号码局向与地理位置不符的应该问一下。 2、“呼救者”的电话:受理120电话时应该主动询问一下呼救者所用的电话的号码。如果所报的电话号码与调度电话所显示的号码不符的,要问一下为什么;该呼救者不报自己使用的电话,不愿意报或报患者或其他人的电话,骗车的机率大;当看不到主叫号码时,可以在呼救者未挂断电话时,用其它电话拨叫呼救者所报电话,如果是忙音(占线声)或号码不存在,证实此电话不是要车电话;还有就是在呼救者挂断电话后,过一会儿或在将车辆派车后,再一次拨打呼救者电话,证实此电话的真实性。
以职业能力需求为基础的校企合作开发课程 职业能力需求的校企课程开发是指以提高从事某一职业的专门技术和综合能力为根本出发点,他是校企联合进行课程开发的基础。 这种以职业能力为需求的校企合作开发课程具备以下几个特点: 1、以职业能力为导向的课程价值取向。 2、关注个体、企业、行业三个层面的需求。 3、课程围绕职业分析进行设计。 通信技术专业依托现有的校企合作基础,以职业能力需求为基础共同开发课程,主要体现在:教学师资、教材选取、教学内容、教学方式及考核方式几个方面。下面以光传输技术为例,来说明下校企合作开发课程的具体过程及特点。 一、教学团队的组建 以往的授课方式,以理论为主,同时授课的主体为学院的教师。但是这样的教学团队并不能适应高职教育的特点。因此在进行教学团队组建时,吸纳有丰富工程经验的企业教师加入。这些教师的加入能带来行业中最新的操作规程及方法。同 二、教材的选取 教材作为重要的教学资料,必须要适应高职教育的特点以及实际授课中所采用的教学内容和教学方法。由于采用的是分情境的任务式驱动教学,必须要有对应工作场景和工作任务将课程的内容进行贯穿和组织。基于以上的考虑,采用的是由中兴公司开发的任务驱动式教材,这本教材改变了以往的先理论,后实践的教学
模式。将理论和实践融合进具体的项目中。 三、教学内容 在对具体教学内容选取时,选取了一个光传输网络由组建到维护的过程,将这个过程划分成三个情境,再将任务情境划分成不同的工作任务,每个工作任务对应一个到多个单项工作任务,而每个单项工作任务对应学生必须要掌握的一项职业
在进行授课时,采用课程实施一体化的教学方式,主要体现在实施主体、教学过程和教学场所三方面的变化。教学主体由教师转变为学生,同时结合通信行业的特点,将学生划分成不同的小组,以小组的形式完成项目,构建以合作为主题的新型师生关系和生生关系,真正凸显学习者的中心地位;教学过程与工作过程相结合,做到学生心理过程与行动过程一体;教学场所将传统的教室、专业教室和实训室相结合,融合“教、学、做”一体的教学环境。
调度管理的基本概念和任务 刘方兴 本讲稿简单的介绍了电网调度管理的基本概念,围绕着调度管理任务的基本要求,重点讲述了调度机构为用户提供优质、经济、稳定可靠电能的有关问题和工作,文中有不妥之处,恳请批评指正。
调度管理的基本概念和任务 (一)调度管理的基本概念 一电网为什么设置调度机构 电网调度机构的设置与电力生产的特点有关,电力是社会的重要能源,它和其他形式的能源不同,有如下特点: 1 电能不能储存,产供销同时完成,生产和消费必须时刻保持等量的平衡。 2 电力系统暂态过程很短,自动化程度很高。 3 与人民和社会的各部门有极其密切的关系。 由于电力具有以上特点,所以其生产输送分配和消费的过程必须构成统一的系统,此系统称做电力系统,习惯谓之电网。随着国民经济的发展和用电水平的提高,电网由小到大逐步成长,用电负荷由过去的几百万千瓦的孤立电网发展到几亿千瓦涵盖各省的特大电网。现在,全国大部分地区已构筑了以500千伏电网为骨干的网架,750千伏输变电线路也投入运行,除新疆、西藏、海南、台湾外,全国性的互联电网已初步形成,±800千伏特高压直流输电工程和交流1000千伏特高压试验示范工程的投运,标志着我国已进入更高电压等级电网的发展阶段。大电网有许多优点,例如能减少装机的备用容量,优化资源配置,提高供电的可靠性等。 电网(电力系统)由发电设备(生产)送变电设备(输送)配电设备(分配)及电力用户(消费)以及保证上述设备安全、经济
运行所需的继电保护安全自动装置、电力计量装置、电力通信设施和电网调度自动化设施等构成,如图一所示。它们之间有机的结合在一起,为了组织、指挥、指导、协调电网各部门的工作,必须设置调度机构,实现电网的统一指挥。它由本级电网经营企业直接领导,既是生产运行单位,又是职能管理部门,在电力系统运行中行使调度权。 图一电力系统的基本构成 近30年来,信息、通信和控制技术发生了翻天覆地的变化,传统的电网必须跟上技术变革步伐,美国、加拿大、澳大利亚、日本以及欧洲各国都相继开展了智能电网的相关研究。2009年,中国国家电网公司为适应未来可持续发展的要求,结合基本国情和特高压实践,提出了建设统一坚强智能电网的发展目标:以特高压电网为骨干网架、各级电网协调发展的坚强电网为基础,利用先进的通信、信息和控制技术,构建以信息化、自动化、互动化为特征的自主创新、国际领先的坚强智能电网。智能电网已经成为未来电网的发展方向和当
任务驱动型优秀作文(广东) 2016广州一模作文 18.阅读下面的材料,根据要求写一篇不少于800字的文章。 某报为了发掘有温度和人情味的新闻,引导读者以温暖的视角看待社会,开设了《暖闻》专栏。编辑部收到三则新闻: 一位卖油条的青年多年坚持不用有害的“复炸油”炸油条,给顾客提供新鲜健康的油条,被网友称赞为最帅的良心“油条哥”。 一位老父亲从外地来医院看望儿子,看到儿子正在坐诊,忙得抬不起头,根本说不上话。老人家等了两个多小时后,只好挂了个号,和儿子见了一面。 某地举办珍品画展,一位男孩在探身观赏时不慎跌倒,损坏了一幅珍贵名画。主办方认为男孩只有12岁,又不是故意的,因此仅备案而未报案,希望男孩的心理不要受到影响。 从以上新闻中选择一则刊登在《暖闻》专栏上,你认为哪一则更合适?请综合材料内容及含意作文,体现你的思考、权衡与选择。 要求选好角度,确定立意,明确文体,自拟标题;不要套作,不得抄袭。 范文 愿阳光温暖你的眼睛 珍贵名画被人损坏,习惯阴谋的心灵会因索要赔偿而产生对簿公堂的结局。我们本可拥有另一种思维。主办方的体谅与宽恕,驱散我们习以为常的暴躁与冷漠。他们像一缕阳光,温暖了所有曾习惯阴冷的眼睛。 我愿将它刊登于《暖闻》专栏,因为我愿阳光温暖你的眼睛。 最温暖的目光是宽恕的目光。“有一言而可以终身行之者乎?”“其恕乎!”早在千年以前,孔子便阐明了宽恕的重要。我们都会犯错,所以原谅他人就是原谅可能犯错的自己。社会生活充满摩擦,收起下意识的指责,便会温暖一颗局促的心。于是,主办方不予追究的宽恕让人格外温暖。他们是受损方,他们占据道德的制高点,但面对畏缩、惶恐的少年,他们仍毫不犹豫地选择了谅解。这不仅省去了针锋相对时双方共受的折磨,更重要的是,小小少年的心头将不会有阴翳。不难想象,当他长大后,当他面临同样的抉择,他也会选择宽恕,选择温暖另一颗心灵。 “一个伟大的人有两颗心灵,一颗用来流血,另一颗用来宽恕。”纪伯伦如是说。宽恕,它是如此温暖,既拔除了自己心中的荆棘,也让他人感受到世界的善意。愿它温暖你的眼睛,让你的眼角捕捉到一幅受损的画时,流露出温暖的宽恕。 最温暖的视角,是带有善意的视角。主办方对少年行为的谅解,没有沾上一丝恶意。是心灵,决定了你看待世界的方式。善意或恶意的视角,将让你看到的世界必不同。主办方认为男孩是因认真看画而不慎损坏珍贵的名画,那么所有游客都一样善良;若他们恶意度衡,那么所有游客便都是潜在的危险分子。主办方也许要加上厚厚的防滑罩,再不敢办画展,逢人便说世风日下,人心险恶……这些熟悉的视角与话语在生活中处处可见。所以,我愿这束阳光温暖你的眼睛,让你开始懂得用带有温度的眼光看待这个世界。 如今,我们常叹息世事艰辛。有人不恕:车主被交警开罚单后而痛骂交警全家,不依不饶,路上一点碰擦便怒火冲天,硬要拼个你死我活。有人怀疑:他们用最大的恶意看待世界,孝子是装的,好人是为搏出名。他们甚至赞颂恶人,因为他们至少“真实”。我们的社会,急速发展的同时又有多少人习惯了冷漠与暴躁?我看见许多人对其他人满是防备,我看见许多人对身处的世界满是怀疑,我看见许多人的眼角挂满冰霜……
文件编号:TP-AR-L3917 In Terms Of Organization Management, It Is Necessary To Form A Certain Guiding And Planning Executable Plan, So As To Help Decision-Makers To Carry Out Better Production And Management From Multiple Perspectives. (示范文本) 编订:_______________ 审核:_______________ 单位:_______________ 电力系统调度管理的任 务(正式版)
电力系统调度管理的任务(正式版) 使用注意:该安全管理资料可用在组织/机构/单位管理上,形成一定的具有指导性,规划性的可执行计划,从而实现多角度地帮助决策人员进行更好的生产与管理。材料内容可根据实际情况作相应修改,请在使用时认真阅读。 电力系统调度负责电力系统的生产运行工作,其任务主要包括以下五个方面: 1.尽设备最大能力满足负荷的需要 随着经济建设的发展和人民生活的不断的提高,全社会的用电需求日益增长。这就从客观上要求电力系统具备充足的发、供电设备和足够的可利用的动力资源。因此,必须加快电力建设、保证燃料供应。这是整个电力工业的任务。现在存在的主要问题季节缺电,这就要求我们要尽快设备最大能力满足负荷的需
要。如果装机少,燃料供应不足,也没有备用容量,那么调度也是难办的。有了设备,如何高度好,如高峰负荷时,把备用机组开起来;如果有备用机组而不开,到时满足不了负荷需要,那就是没调度好;当然多开机组可以充分满足负荷需要,但若不经济,那也是没调度好。如水电来水多时,应尽量多安排火电机组检修,夏季高峰负荷时尽量少安排机组检修。这就要求灵活调度,巧妙安排,尽设备的最大能力来满足负荷需要。 2.使整个电网安全可靠运行和连续供电 电能不易储存,电网停止供电将造成损失。电网要对电力用户连续不断地供电,首先就必须保证整个电网安全可靠运行。
高考语文任务驱动型作文范文十篇 1.阅读下面的材料,根据要求写一篇不少于800字的文章。 2015年10月7日,经过连续搜救,17名擅自进入广西来宾市自然保护区露营被困失联的驴友,成功获救。来宾市为此次营救,耗费了巨大的公共资源,更严重的是营救中救援人员也面临巨大的危险。这一事件引起了社会的强烈反响:当地政府呼吁驴友要严格遵守相关法律法规,不要擅自行动。有网友认为,驴友是公民,作为纳税人,有权享受公共服务,不应为救援买单;又有网友说“人生需要…说走就走?的旅行”,并为他们的行为点zan。 对此你有何看法?请选好角度,自定立意,自拟标题作文;不要套作,不得抄袭。 旅游遵法,顾全大局 近日,一些擅自进入旅游区露营被困失联的驴友,经过连续搜救,耗费巨大公共资源之后被成功获救。对此我认为,驴友应当自觉遵循相关法规,顾全大局。 驴友擅自露营失联使得救援人员耗费巨大人力物力去营救,究其原因,无外乎两个:表面看是驴友的贪玩心理的驱使,使其忽视法度;然而从深层次看,则是当代人们以自我为中心,不顾大局的缩影。擅自露营的驴友,有没有想过失联后给救援人员造成麻烦的后果?这样不负责任的行为与损人不利己大同小异。 驴友持着贪玩好奇之心便任意作为,这实质上也是自我保护意识不高、思想浅薄的表现。在这个信息发展的时代,人们依赖于新技术给人们带来的便利,对于自己错误的行为竟不加纠正。然而,从另一方面上看,营救人员又何其不是耗费了巨大的资源、甚至奋不顾身投身于救援之中、陷入危险境地才得以成功营救他们?王小波说:“现代技术的发展使人们过度依赖技术,人们以为自己征服了技术,而我们又何尝不是被技术捆绑着不能自主行走。”由此可见,当驴友们过度依赖技术,将自我保护意识蒙蔽于此,被困失联也便是自然而然的事了。 深究其源,驴友无视法度、抛弃责任心的行为更是整个时代自我中心观强烈的表现。信息技术的蒸蒸日上,带来经济利益的同时人们也渐渐利欲熏心,让自我中心观肆意膨胀泛滥,驴友的行为便是个很好的例证。获诺贝尔医学奖的大禹良点坦言:”制造出的新型病菌是为了服务于人民!”自我中心观一旦在社会上泛滥成灾,那么谁会像大禹良点一样为社会服务?长此以往,试问社会的和谐发展由何而来?民族国家的复兴壮大又该怎么继续? 诚然,有人认为驴友们这么做值得肯定,纳税人有权享受公共服务,不应为救援买单。而我认为,这样忽视法度、不顾全大局的行为,是这个文明不断发展的时代的滥觞! 驴友被困失联已是既定的事实,如今我们需要做的,就是加强公民的道德修养,加大法律的监管力度,使法制为先的观念深入人心。龙应台有言:“做事应得三思,切勿让个人主义滋长而使他人步入危险的境地。”旅游遵法,顾全大局,是一个公民应当遵循的基本准则。 2.阅读下面的材料,根据要求写一篇不少于800字的文章。(60分) 每天下午五点,南京市盐仓桥附近都会有一对老夫妇在道路停车带搬凳子坐下,“人肉”占车位,等待儿女开车回家,如果孩子回来迟,两人就轮换着坐,直到孩子归来。针对此事,各方有不同反应。有的人感叹,可怜天下父母心;附近车主气愤又无奈:那是社会公共车位,不是他家私人的,但总不能出手对两个人怎么样吧?老夫妇的儿女也很委屈:附近车位确实太紧张,但也劝父母不要这样风雨无阻,却拗不过两位老人。 对于以上事情,你怎么看?请你就其中某一个或某一群人的表现,表明你的态度,阐述你的看法。要请综合材料内容及含意,选好角度,确定立意,自拟标题,不得抄袭。 在一定限度内给予温情理解 南京市一位老夫妇“人肉”占车位等待下班归来的儿女,让附近车气愤又无奈。此事也引起社会不同的反应。我认为,在一定限度内,应给予中国的父母温情的理解。 这对夫妇的儿女曾劝自己的父母不要风雨无阻,而结果是拗不过两位老人。此时就不
课程设计任务书完整题目
————————————————————————————————作者:————————————————————————————————日期:
发电厂电气部分课程设计任务书 发电厂电气部分课程设计目的和要求 1.课程设计的目的: 发电厂电气部分课程设计是在学习电力系统基础课程后的一次综合性训练,通过课程设计的实践达到: (1)巩固“发电厂电气部分”、“电力系统分析”等课程的理论知识。 (2)熟悉国家能源开发策略和有关的技术规范、规定、导则等。 (3)掌握发电厂(或变电所)电气部分设计的基本方法和内容。 (4)学习工程设计说明书的撰写。 (5)培养学生独立分析问题、解决问题的工作能力和实际工程设计的基本技能。 2.课程设计的任务要求: (1)分析原始资料 (2)设计主接线 (3)计算短路电流 (4)电气设备选择 3.设计成果: (1)完整的主接线图一张 (2)设计说明书一份
发电厂电气部分课程设计说明书 1.前言(简要介绍本次设计任务的内容、设计的原则、依据和要求) 2.原始资料分析 3.主接线方案确定 3.1 主接线方案拟定(2~3个,小图) 3.2 主接线方案评定(可靠、灵活、经济) (本章要求在说明书中明确画出方案拟定示意图,针对图示可以从主接线的三个基本要求列表评价所初选的方案,最终得出结论,对可靠性的定量计算评价,不做要求)。 4.厂用电(所用电)接线设计 5.主变压器(或发电机)的确定 (确定主变压器(或发电机)的型号、容量、台数,列出技术参数表,说明变压器的相数、绕组数、冷却方式等,简要说明确定的理由,为下一章的短路电流计算做准备) 6. 短路电流计算 (画出短路电流计算用的等值阻抗图,注明短路点的选择,列出短路电流计算表,具体的阻抗变换过程、计算过程放在附录中。) 7.电气设备选择 (包括QF、QS、CT、PT、母线、电缆、馈线、电抗器等,按照参考资料积极推荐使用成熟的新产品,不得使用淘汰产品。按照主接线的电压等级,列出各级电压下的电气设备明细表,具体的设备选择及校验过程放在附录中) 8.继电保护和自动装置(本次不涉及) 9.防雷设计(本次不涉及) 10.配电装置(本次不涉及) 结论 结论是课程设计的总结,单独作为一章编写,是整个设计的归宿。要求准确阐述自己的创造性工作或新的见解及其意义和作用,还可进一步提出需要讨论的问题和建议。 参考文献:西北电力设计院.电力工程设计手册.中国电力出版社 熊信银.发电厂电气部分. 中国电力出版社 黄纯华.发电厂电气部分课程设计参考资料.中国电力出版社王荣藩.工厂供电设计与实验[M].天津大学出版社,1998,05 傅知兰.电力系统电气设备选择与计算,中国电力出版社 曹绳敏.电力系统课程设计及毕业设计参考资料. 中国电力出版社,1995
高考全国卷任务驱动型作文汇总,十个题目十篇参考作文! 作者:厦大附中郭培旺 2016年高考有26个省市使用全国卷,且这一数字将有增无减,针对2015年高考语文全国卷作文,任务驱动型作文的概念逐渐深入人心。 第一篇:教育部考试中心命制(全国一卷) 18.阅读下面的材料,根据要求写一篇不少于800字的文章。(60分) 因父亲总是在高速路上开车时接电话,家人屡劝不改,女大学生小陈迫于无奈,更出于生命安全的考虑,通过微博私信向警方举报了自己的父亲;警方查实后,依法对老陈进行了教育和处罚,并将这起举报发在官方微博上。此事赢得众多网友点赞,也引发一些质疑,经媒体报道后,激起了更大范围、更多角度的讨论。 对于以上事情,你怎么看?请给小陈、老陈或其他相关方写一封信,表明你的态度,阐述你的看法。 要求:综合材料内容及含意,选好角度,确定立意,完成写作任务。明确收信人,统一以“明华”为写信人,不得泄露个人信息。 有一种爱或许无需别人理解(中国青年报曹林) 小陈: 你好,我叫明华,看到有关你的新闻后深有感触。很惭愧,像你父亲一样,我以前开车时也有接听和拨打电话的陋习,受你爱父之心和此举的感动,以后一定会改掉。想起前几天,我的孩子批评我吃饭时还在刷手机,内心也无比温暖。谨以此信向你表达支持与敬意。 你的行为赢得了多数人的支持,也有少数人质疑和反对——你要宽容这种七嘴八舌的杂音,这就是舆论,当有关你的新闻变成一个大众传播事件后,很多评论就跟你、跟事件本身无关了,你不要被这些争议所干扰,不要被“举报父亲”这个渲染性标签压得喘不过气来,坚信自己是以这种父亲能接受的方式表达对父亲的爱。我知道,你这样做,绝不是“吾爱吾父,吾更爱原则”——而就是纯粹的爱父亲,以这种让父亲记忆深刻的方式改掉陋习。这种爱,只要父亲能够理解就足够了,无须别人的理解。 之所以有一些争议和质疑,是因为他们没有站在一个爱父亲的女生的角度来看这个问题,没有将心比心,没有同情的理解,而是一个凑热闹的看客和冰冷的旁观者。当这件事成为一个大众话题时,你已经成为一个被消费的热点。大众传媒工业从这条新闻中各取所需:网友需要的是伦理冲突和情法争议,媒体需要的是劲爆新闻和反常故事,评论员需要的是噱头和谈资,交警需要的是普法案例,律师需要的是以案说法,道学家需要的是道德高地,微博需要的是能增加点击的热点,微信圈需要的是能刷屏的温暖鸡汤。 而这一切,与你的需要没有关系。作为一个曾一直努力想让父亲改掉抽烟习惯的我知道,作为女儿的你,要的只是父亲能改掉这个开车陋习,要的是父亲免于被这种陋习所伤害,要的是开车的父亲平平安安回到家中和你一起吃晚餐。从新闻看,你的目的已经达到,父亲老陈后来领悟到“觉得女儿确实说的很有道理,她是在对家人的生命负责,也是对家人爱的一种体现”。——父亲理解了你的良苦用心,读到了你的爱,那就足够了。
四个大 课程确立 对流程图的说明: 1、培训课程的确立: 培训课程设置 包括培训需求调查、培训课程说明置、培训 果程的说 明3个环节。 1.1、培训需求调查 通过绩效考核、民主评议等方法确认员工现 课程内容设计调查 位或期望岗位要求应 具备的观念、技能与员工现实的观念和技能的差距。分析产生上述差距的原 确定课程大纲 岗集资 因,可通过培训解决的差距就是培训需求 卷调 查法、点 调查方法:访谈法L 团队初步开发 (编写讲义初稿) 调查对象:员工、直接上级、人力资源 参与人员:文化与培训部策划处、课程 1.2、培训课程设置:由文化与培训部 根据调查得到 $培训需求结果, 1.3、课程说明:由文化 培训对象、参训人数、课时、帅资、课程开; 培对培训 II 课程进行说试 讲 包括对课程目标、 发策略(讲行开发、外部引进、 或与外部培训机构合彳 ―、 课程归档 2、课程开发: 包括课程内容设计调查、搜集资料、确定课程大纲、初步 课程开发流程规范 为“加强员工培训,提高员工综合素质水平” ,加强公司培训体系建设,规范培训 课程的开发与设计工作,加强公司培训工作的规范化、制度化,特制订本规范。 一、课程开发流程 培训课程开发流程主要包括: 课程确立、课程开发、课程评估、课程归档 的阶段,每个阶段又包括具体的、更详细的环节。流程图如下所示: 培训需求调查 、部项门总经讨、总裁室成员。 开发处、实施支持处全体人员, 部门 培训负责人、培训专岗,讲师,咨询公 ____________ 对特定对象的培训需求设置相应的培训课程 所需资源(培训设备、冻料、成本预算)等 -------- 已归档的课程定期更新 开发(编写讲义初稿)、专项小组研讨、编写课程资料 6个环节。 2. 1课程内容设计的调查: 通过调查,进一步了解学员的问题和期望、 方面的说明。
高考任务驱动型作文范文十篇 1.阅读下面的材料,根据要求写一篇不少于800字的文章。 2015年10月7日,经过连续搜救,17名擅自进入广西来宾市自然保护区露营被困失联的驴友,成功获救。来宾市为此次营救,耗费了巨大的公共资源,更严重的是营救中救援人员也面临巨大的危险。这一事件引起了社会的强烈反响:当地政府呼吁驴友要严格遵守相关法律法规,不要擅自行动。有网友认为,驴友是公民,作为纳税人,有权享受公共服务,不应为救援买单;又有网友说“人生需要…说走就走?的旅行”,并为他们的行为点赞。 对此你有何看法?请选好角度,自定立意,自拟标题作文;不要套作,不得抄袭。 旅游遵法,顾全大局 近日,一些擅自进入旅游区露营被困失联的驴友,经过连续搜救,耗费巨大公共资源之后被成功获救。对此我认为,驴友应当自觉遵循相关法规,顾全大局。 驴友擅自露营失联使得救援人员耗费巨大人力物力去营救,究其原因,无外乎两个:表面看是驴友的贪玩心理的驱使,使其忽视法度;然而从深层次看,则是当代人们以自我为中心,不顾大局的缩影。擅自露营的驴友,有没有想过失联后给救援人员造成麻烦的后果?这样不负责任的行为与损人不利己大同小异。 驴友持着贪玩好奇之心便任意作为,这实质上也是自我保护意识不高、思想浅薄的表现。在这个信息发展的时代,人们依赖于新技术给人们带来的便利,对于自己错误的行为竟不加纠正。然而,从另一方面上看,营救人员又何其不是耗费了巨大的资源、甚至奋不顾身投身于救援之中、陷入危险境地才得以成功营救他们?王小波说:“现代技术的发展使人们过度依赖技术,人们以为自己征服了技术,而我们又何尝不是被技术捆绑着不能自主行走。”由此可见,当驴友们过度依赖技术,将自我保护意识蒙蔽于此,被困失联也便是自然而然的事了。 深究其源,驴友无视法度、抛弃责任心的行为更是整个时代自我中心观强烈的表现。信息技术的蒸蒸日上,带来经济利益的同时人们也渐渐利欲熏心,让自我中心观肆意膨胀泛滥,驴友的行为便是个很好的例证。获诺贝尔医学奖的大禹良点坦言:”制造出的新型病菌是为了服务于人民!”自我中心观一旦在社会上泛滥成灾,那么谁会像大禹良点一样为社会服务?长此以往,试问社会的和谐发展由何而来?民族国家的复兴壮大又该怎么继续? 诚然,有人认为驴友们这么做值得肯定,纳税人有权享受公共服务,不应为救援买单。而我认为,这样忽视法度、不顾全大局的行为,是这个文明不断发展的时代的滥觞! 驴友被困失联已是既定的事实,如今我们需要做的,就是加强公民的道德修养,加大法律的监管力度,使法制为先的观念深入人心。龙应台有言:“做事应得三思,切勿让个人主义滋长而使他人步入危险的境地。”旅游遵法,顾全大局,是一个公民应当遵循的基本准则。 2.阅读下面的材料,根据要求写一篇不少于800字的文章。(60分) 每天下午五点,南京市盐仓桥附近都会有一对老夫妇在道路停车带搬凳子坐下,“人肉”占车位,等待儿女开车回家,如果孩子回来迟,两人就轮换着坐,直到孩子归来。针对此事,各方有不同反应。有的人感叹,可怜天下父母心;附近车主气愤又无奈:那是社会公共车位,不是他家私人的,但总不能出手对两个人怎么样吧?老夫妇的儿女也很委屈:附近车位确实太紧张,但也劝父母不要这样风雨无阻,却拗不过两位老人。 对于以上事情,你怎么看?请你就其中某一个或某一群人的表现,表明你的态度,阐述你的看法。要请综合材料内容及含意,选好角度,确定立意,自拟标题,不得抄袭。 在一定限度内给予温情理解 南京市一位老夫妇“人肉”占车位等待下班归来的儿女,让附近车气愤又无奈。此事也引起社会不同的反应。我认为,在一定限度内,应给予中国的父母温情的理解。 这对夫妇的儿女曾劝自己的父母不要风雨无阻,而结果是拗不过两位老人。此时就不能以“没素质”
以职业能力需求为基础的校企合作开发课程职业能力需求的校企课程开发是指以提高从事某一职业的专门技术和综合能力为根本出发点,他是校企联合进行课程开发的基础。 这种以职业能力为需求的校企合作开发课程具备以下几个特点: 1、以职业能力为导向的课程价值取向。 2、关注个体、企业、行业三个层面的需求。 3、课程围绕职业分析进行设计。 通信技术专业依托现有的校企合作基础,以职业能力需求为基础共同开发课程,主要体现在:教学师资、教材选取、教学内容、教学方式及考核方式几个方面。下面以光传输技术为例,来说明下校企合作开发课程的具体过程及特点。 一、教学团队的组建 以往的授课方式,以理论为主,同时授课的主体为学院的教师。但是这样的教学团队并不能适应高职教育的特点。因此在进行教学团队组建时,吸纳有丰富工程经验的企业教师加入。这些教师的加入能带来行业中最新的操作规程及方法。同时这些教师也能带来课程所需的项目资料运用于实际的教学过程中。 二、教材的选取 教材作为重要的教学资料,必须要适应高职教育的特点以及实际授课中所采用的教学内容和教学方法。由于采用的是分情境的任务式驱动教学,必须要有对应工作场景和工作任务将课程的内容进行贯穿和组织。基于以上的考虑,采用的是由中兴公司开发的任务驱动式教材,这本教材改变了以往的先理论,后实践的
教学模式。将理论和实践融合进具体的项目中。 三、教学内容 在对具体教学内容选取时,选取了一个光传输网络由组建到维护的过程,将这个过程划分成三个情境,再将任务情境划分成不同的工作任务,每个工作任务对应一个到多个单项工作任务,而每个单项工作任务对应学生必须要掌握的一项职业岗位能力。
2020高考语文-任务驱动型作文高分模式及范文 两种最优化文章结构 文章最优化结构模型①——“起、承、转、合” 文章最优化结构模型②——“起、转、承、合” 一、起承转合 【真题】阅读下面的材料,根据要求写一篇不少于800字的文章。 几个同学聚在一起谈论传家宝。小张说,他家的传家宝是一个青花罐,有年头有故事。小杜说,他家的传家宝是爷爷留下的几枚勋章。小程说,她家把“忠厚传家久,诗书继世长”的祖训当传家宝。 你认为什么样的传家宝更有价值?请综合材料内容及含意作文,体现你的思考、权衡与选择。 文章写作思维模型?六段式:概念界定+因果分析+比较分析 1.【起】概念界定,概括比较,定任务,表态度。 2.【一承】具体比较一,原因分析。 3.【二承】具体比较二,原因分析。
4.【三承】由表及里,分析深层原因,文化原因或心理原因或历史原因。 5.【转】联系当下,背景分析,凸显其“最有价值”。 6.【合】再次概括比较,重申态度。 (运用三到四次的因果分析,加以三到四次的比较分析) 【主体分析部分】三承一转 范文:良训胜千金,传家更有价 思路框架如下: 1.所谓“传家宝”,……。三种“传家宝”各有价值。小张家的青花罐,……;小杜家的勋章,……;小程家的祖训,……。在我看来,小程家的传家宝最有价值。(概念界定,概括比较,选定任务,表明态度) 2.与小张家的传家宝青花罐相比,小程家的传家宝祖训,在……更有价值。……(具体比较一,原因分析) 3.与小杜家的传家宝勋章相比,小程家的传家宝祖训,在……更有价值。……(具体比较二,原因分析) 4.其实,小程家的传家宝祖训(“忠厚传家久,诗书继世长”)之所以更有价值,对于我们来讲,还有更深层的原因,那就是它承载在中华民族优秀的文化精神。忠厚者,……;诗书者,……。所以,在我看来,小程家的祖训,不仅是一
附件 一体化课程开发技术规程 (试行) 目录 1.一体化课程概念与开发原则 1 1.1一体化课程概念 1 1.2一体化课程开发原则 1 2.一体化课程内容结构与方案编写体例 1 2.1一体化课程内容结构 1 2.2一体化课程方案编写实例 2 3.一体化课程开发程序 5 3.1职业与工作调研分析 5 3.2典型工作任务提炼7 3.3一体化课程框架确立8 3.4一体化课程方案制定9 3.5一体化课程资源建设10 附件11 1.一体化课程概念与开发原则 1.1一体化课程概念 一体化课程是按照经济社会发展需要和技能人才培养规律,根据国家职业标准,以综合职业能力为培养目标,通过典型工作任务分析,构建课程体系,并以具体工作任务为学习载体,按照工作过程和学习者自主学习要求设计和安排教学活动的课程。 一体化课程体现理论教学和实践教学融通合一,专业学习和工作实践学做合一,能力培养和岗位对接合一的特征。 1.2一体化课程开发原则
1.2.1科学性原则 课程开发要以就业为导向,遵循技能人才成长和职业发展规律,充分体现职业特征,满足学生职业生涯发展需要。 1.2.2梯次性原则 课程开发要符合国家职业标准等级要求,形成以中级工、高级工、预备技师为主的人才培养课程层次。 1.2.3可操作性原则 课程开发要尊重技工院校办学现状和地域特征差异,各项要求力求具体、明确、清晰,目标可度量、可检验。 1.2.4规范性原则 开发课程所用的术语、符号、体例等应符合国家有关标准、技术规范和约定俗称的表述,内容、结构、格式、表达形式应符合本规程的要求。 2.一体化课程内容结构与方案编写体例 2.1一体化课程内容结构 一体化课程由一体化课程方案和一体化课程资源两部分构成,其内容与结构见图1.
2018高考任务驱动型作文的类型及试题范 例 XX 年开始,新材料作文在高考试卷中出现,XX年,新 材料作文形式相对成熟,并在全国推广。新材料作文给定材料不给定话题或题目,也不限文体。它既不同于话题作文那样放得过宽,又与命题作文、以往的材料作文限制过多、文体单一不同。材料涉及的内容就是写作的话题范围,材料在某种程度上起到了话题的作用,其不同角度下的众多立意是考生可写的主旨范围,新材料作文之“新”正是材料的多义性导致的立意多样和文体不限。它要求考生有对材料文字的感悟能力、阅读审题能力和一定深度广度的思考力。但新材料作文不确定的角度也为套作和宿构提供了空间。因此在新材料型作文中增加任务驱动型指令则较好地解决了新材料型作文的泛角度与话题、命题作文限制性之间的矛盾,这类作文在英美等国的作文考试中比较常见。试题往往是给学生创作出一个情境,出现对立性的问题,让考生通过写作,提出解决处理问题的想法和方案。近年在继承自主空间大,立意角度自然、多元等传统优势的同时,又在避免套作、宿构方面进行了新的尝试和探索,通过增加如XX年全国新课标 甲卷要求考生给“女儿举报”事件相关方写信来入情入理地谈问题、讲道理,全国新课标乙卷要求考生在深入思考“当 代风采人物”推选标准的基础上优中选优。这些做法从不同角度
拓展了材料作文的测试功能,使材料型作文的考查功能不断完善。二、作文材料 美国漫画家罗素?迈尔斯系列漫画《女巫希尔迈》中有这样一个故事:两座悬崖,中间隔着一条又深又宽的峡谷。女巫站在这边,秃鹫站在那边。秃鹫不断召唤女巫跳到它那边来。女巫说,峡谷太宽,她跳不过去。秃鹫对女巫说,不要用消极的思想打败自己,只要她有热情和积极的态度,就能做成任何事情。女巫在秃鹫煽动下,热血沸腾起来,她真的开始感到世界上没有她做不到的事,于是,一挺胸,一弓腰,向对面的悬崖猛冲过去。结果,女巫并没有跳过峡谷。 秃鹫看着掉入峡谷的女巫,自言自语道:看来,光鼓动她的激情是不够的,还得教她如何锻炼腿部肌肉。 要求选好角度,确定立意,明确文本,白拟标题;不要 脱离材料内容及含意的范围作文;不要套作,不得抄袭,不得透漏个人相关信息;书写规范,正确使用标点符号。 三、材料立意分析 任务驱动型材料作文的审题方法很多,立意方向也呈现多样化特点。但是有一点必须加以重视,只有那些抓住核心立意及重要立意方向的作文才能得一类分。教育部考试中心专家余闻曾说过,材料作文审题时要注意立意的核心角度、重要角度、次要角度、沾边角度。这四种角度显然有优劣之分。我们平时指导学生作文时应该着力引导学生从核心角度、重要角度来立意。