ref : http://puremonkey2010.blogspot.tw/2010/10/oo-uml.html
http://www.kenming.idv.tw/uml2_0_class_e_object_diagram_cdia_rcm_a
2015年3月11日 星期三
2015年3月10日 星期二
uCOS : Task間的通訊與同步
Tasks 有五種狀態
- dormant
- ready
- running
- waiting
- ISR(interrupted)
Context Switch
Each Task 有自己的set of CPU register(放在 Task's Context storage area,又稱為TCB(Task Control Block)) 和 stack area. TCB 和 stack都在memory中.
當要做 Context switch的時候 , CPU register 會被放到 TCB中.
Kernel
Kernel 負責管理各Task , 和Context switch.Non-Preemptive Kernel
Non-Preemptive Kernel允許使用non-reentrant functions(non-reentrant functions 不應該放棄CPU的控制權).- ECB(Event Control Blocks) : 一個Task可以透過ECB像另外一個Task發送訊息 , 所有的訊號都被視為 Event (無論是 Semaphore/Mailbox/MessageQueue).
- 從Source code中來看 , 建立semaphore 是從 OSEventFreeList 中拿一個物件出來 , 設定成semaphore 的參數 (所以ECB的數量是有限的).
- ISR(Interrupt Service Routine) 不能等待 Event , 只能發送 Event.
- ucos_ii.h中所定義的 typedef struct os_event , 就是上面說的ECB.
訂閱:
文章 (Atom)