contributed by < ssheep773
>
閱讀文章時作者說「資訊工程系的學生不懂寫程式,機械工程系的學生不懂做機械」,看到這句話讓我聯想到老師說「修完一學期的作業系統課程,我們的學生也無法寫出一個作業系統」,我們常常都只學理論或者是說好考試的理論,而實作經驗卻寥寥無幾,即使許多課程都會有期末專題來考驗學生的實作能力,而我們只需做到寫對程式功能,就足以應付專題報告以及功能展示,並沒有實際的使用者,當然也不存在程式的優化或重用。
jserv 在文中跟作者說「你不能現在就放棄,要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已」
「你最大的問題在太害怕失敗了,你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大」
這兩句話讓我感觸很深,因為過去考試時會有只寫確定的答案,不確定的就不要寫,免得寫多錯的想法,這樣的想法常常會延續到現在,使我害怕失敗而畫地自限,看到這句話才真正了解到自身的問題,我們不應該再遇到問題時就放棄,就像我的指導教授說的 dirty your hands ,縱使嘗試後失敗了也無妨,至少我們努力過了,畢竟沒有人一開始就很厲害,誰不曾失敗呢 ?
就如同文中提到的從現在開始我應把珍貴的時間拿來做真正重要的事情,如果生活還過得去,努力過濾掉 80% 的雜事,專心做那最重要的 20% 就好。
問題一:
Concurrency-Primer
acquire operation permits other reads and writes to move past it, but only in a
不了解為何 acquire 只需要一個 dmb
,如何確保 line 2 跟 line 3 的執行順序 ?
參閱 DMB, DSB, and ISB,注意 C11 Atomics 僅提供語意 (semantics) 的規範,這裡我們只在意 side effect,你要思考指令的重排是否會有影響程式執行的正確。
jservImage Not Showing Possible ReasonsLearn More →
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
感謝老師,我原以為是將 r3 的值配置給 r0 ,經過查詢後
ldr r0, [r3, #0]
是將 r3 的地址配置給 r0 ,所以 r0 是指標的指標,這樣就交換順序也不影響正確性,可以不需要中間的dmb
。
acquireFoo :
ldr r3, <&foo >
// dmb
ldr r0, [r3, #0]
dmb
bx lr
RCU: scalability
lock-free
process core -> throughput
RCU: 在 read side 沒有 lock
確保給予足夠的時間,至少有一個執行緒有進展 (progress)
TODO: Quiz 9 / work-stealing
TODO: https://en.wikipedia.org/wiki/Work_stealing 並紀錄問題
TODO: Linux kernel module / ftrace (Linux CPU sched book Chapter 6)
page fault, exception, cache coherence, …
正常的情況的下,每個處理器都會逐步執行執行緒中的指令,直到遇到以下四個中的一個「特殊」指令
Child stealing vs. continuation stealing