DI93AHESG440355R3需要各种通信机制如信号量,消息邮箱,队列等来实现。
4、什么是抢占式调度?
调度的概念,通俗的说就是系统在多个任务中选择合适的任务执行。系统如何知道何时该执行哪个任务?可以为每个任务安排一个的优先级别,当同时有多个任务就绪时,优先运行优先级较高的任务。同时,任务的优先级也作为任务的标识号。代码中都是对标识号来完成对任务的操作的。
所谓“抢占式调度”是指:一旦就绪状态中出现优先权更高的任务,便立即剥夺当前任务的运行权,把CPU分配给更高优先级的任务。这样CPU总是执行处于就绪条件下优先级的任务。
5、多任务系统的时间管理
与人一样,多任务系统也需要一个“心跳”来维持其正常运行,这个心跳叫做时钟节拍,通常由定时器产生一个固定周期的中断来充当。
OSTimeDly函数就是以时钟节拍为基准来延时的(在时钟的中断服务函数中,依次对各个延时任务的延时节拍数减1。若发现某个任务的延时节拍数变为0,则把它从挂起态置为就绪态。)。这个函数完成功能很简单,就是先挂起当起当前任务,设定其延时节拍数,然后进行任务切换,在指定的时钟节拍数到来之后,将当前任务恢复为就绪状态。任务必须通过OSTImeDly或OSTaskSusp让出CPU的使用权(延时或等待事件),使更低优先级任务有机会运行。
6、如何实现多任务?
只有一个CPU,如何在同一时间实现多个独立程序的运行?要实现多任务,条件是每个任务互相独立。人如何才能独立,有自己的私有财产。任务也一样,如果一个任务有自己的CPU,堆栈,程序代码,数据存储区,那这个任务就是一个独立的任务。(CPU是通过多任务机制获得的,其他的需要你分配)
TIPS:
如果一个任务正在运行某个公共函数时(如Printf),被另一个高优先级的任务抢占,那么当这个高优先级的任务也调用同一个公共函数时,极有可能破坏原任务的数据。因为两个任务可能共用一套数据。为了防止这种情况发生,常采用两种措施:可重入设计和互斥调用。

ELAUiSH100/30044/0/1/00/0/00/11/00
ELAUiSH-DIO8
WOODWARD9907-166
GEIS200JPDMG1ADC
GEIS200JPDMG1A
ELAUSM-140/30/290/P0/45/M1/B0
ELAUMC-4/11/05/230
ELAUMC-4/11/01/400
REXROTHMSK071D-0300-NN-M1-UG1-NNNN
EMERSONVE6041F02C1
GEDS200SDCCG4AHD
GEDS200SLCCG3AHD
GEDS200TCCAG1BAA
GEDS200TCDAH1BHD
GEDS200TCEAG1BTF
GEDS200TCEBG1ACE
GEDS200TCPSG1ARE
GEDS200TCQAG1ABB
GEDS200TCQCG1BKG
GEDS200TCRAG1ACC
GEDS200TCTGG1AFF
ELAUC400/10/1/1/1/00
EATONXVH-340-57MPI-1-10
ABBHIEE400995R0002UMB015BE02
ABBPFVI1313BSE007130R1
ABBHIEE200030R0001
ABBPFVK1343BSE007134R1
ELAUMC-4/11/03/400
GEIS200ERSCG1A
GEIS200JPDMG1A
GEIS200PPDAH1A
GEIS200PRTDH1A
GEIS220PV1BH1A
ABBUNITROL10003BHE005774R0003
EMERSONPR6423/010-130
EMERSONPR6423/010-040
EMERSONPR6426/010-140
WOODWARD5233-2089
ICSTRIPLEXT8314
ICSTRIPLEXT8231
ICSTRIPLEXT9100
BENTLY3500/20125744-02
BENTLY3500/32125712-01
BENTLY3500/42M140734-02
ABBUFC921A1013BHE024855R0101
EMERSON9199-00002A6120
ICSTRIPLEXT9110
AMAT0100-71224
AMAT0100-71311
AMAT0100-71313
AMAT0100-76124