Nov 13, 2015 課程紀錄

[2015q3 Week #9] [編輯共筆內容]

課程公告

課程目標

In Memoriam: Gene Amdahl 1922-2015

市場訊息

程式碼的品質

[ High-Quality Programming Code ]

你能夠一眼看出以下 C# 程式碼是否能正確運作嗎?

ARM 架構

[ Introduction: the ARM Cortex-M3 Exception / Interrupt ]

此簡報撰寫於 2012 年,部份資訊過時,請留意

ARM Cortex-M0, M0+, M3, M4, M7

何謂 reentrant?請以 swap() 實做舉例

thread-safe, thread local storage (tls)

re-entered 指, 即使 subroutine 在執行到一半時被 interrupted, 但是還是重新回到這個 subroutine 的時候運作是正常

thread-safe 指, 在multi-threaded 存取 shared data 時, 彼此間不會互相影響

solution: Re-entrancy, Thread-local storage, Mutual exclusion, Atomic operations, Immutable objects 

這段程式碼中, 在 line 5的時後產生interrupt, 但是由於 t 是屬於 global variable, 由可能會被改寫。請修改 swap(),避免 reentrancy 的議題。

reentrance會造成問題的例子: strtok()

解決辦法: strtok_r()

newlib 實做:

[ STM32 程式開發:以 GNU Toolchain 為例 ]

openocd, stlink

解譯器開發: Part IPart II

作業系統概念與設計

[ Build minimal ARM Kernel from Scratch ]

The Logical Design of the RHODOS Multi-threaded Microkernel (1994)

RHODOS -- A Microkernel based Distributed Operating System: An Overview of the 1993 Version (1994)