之前說想當 PE (Principle Engineer) 挑戰世界頂尖,但是輝達開的職缺都要 Senior,看來天不從我願只能往 Boot 小板子發展,輝達似乎狼性很重,按照之前的經驗 PEGA 是群農夫。總之雖然沒有挑戰國際但我仍追求卓越,如果對勝負很輕佻那真的就是擺爛了,若不在美股七巨頭拿下 PE 我的出路在哪呢?我想有兩個方向:第一若技術能持續突破等到具備美國出差的能力之後 PEGA 還是有可能會開 PE 缺;第二就是目前很排斥的主管職務。在此解釋一下狼性;首先是步調快一直開會,體現在同儕是競爭意識強,一定要比同期更快晉升主管;體現在公司是要快速把競爭對手徹底打趴,最常見的手段是 Cost Down。
Cloud Dai 的程式研究
2025年7月27日 星期日
2025年7月9日 星期三
2025年7月8日 星期二
jiffies 的溢位
這題是玩點小技法!jiffies 是目前系統的時拍計數,HZ 除以 2 代表半秒後超時,那為什麼我延遲 0.5 秒卻沒超時呢?因為我把 jiffies 設為 4294967295,加 1 後溢位從 0 開始所以不會超時。
Linux 核心鎖 (spin lock)
此為核心鎖,和之前觸發函式不同這題用到簡單的邏輯,故講解一下。進入 spinlock前若 lock_factor 比 1 大時線程可以向下執行;若小於等於 0 則會進入無窮迴圈,也就是等待互斥釋放,unlock 會把 lock_factor 加 1。當另一個線程遇到 lock 函式時,新線程因為『- -』已經把 lock_factor 設為 -1,如此當然互斥等待,等原線程 + + 後 lock_factor 變成 0 會跳出 do-while 迴圈,如此即實現核心鎖。(前面說小於等於 0 則會進入無窮迴圈,現在又說lock_factor 變成 0 會跳出 do-while 迴圈,前後矛盾)。cnt 需告成 volatile 避免被優化存取不到固定記憶體,若不使用核心鎖兩線程會交錯執行每次出來的結果都不一樣,使用核心鎖可確保一次只有一個線程能執行 cnt ++。
此圖是網路原作者的核心鎖函式,但我若用小於等於 0 另一線程會死鎖 (注意紅框),應該不是他的問題是我囫圇吞棗。
2025年7月5日 星期六
訂閱:
文章 (Atom)