# 多工 #### 一個作業系統的誕生 --- ## 具備能力 * C\C++ * 組合語言(能讀但只需一點點寫) * 認識硬體架構 * 了解晶片系統運作 --- ## 但這好像是寫韌體該具備的能力耶 --- ### 是的... # 這是韌體開發觀念 # 第一課 --- ## 何謂作業系統? > 作業系統(英語:Operating System,縮寫:OS)是管理電腦硬體與軟體資源的系統軟體,同時也是電腦系統的核心與基石。作業系統需要處理如管理與組態記憶體、決定系統資源供需的優先次序、控制輸入與輸出裝置、操作網路與管理檔案系統等基本事務。作業系統也提供一個讓使用者與系統互動的操作介面。(出處:圍雞擺顆) --- ### 能不能用程式人的一句話說完? --- # 作業系統就是提供應用程式的函式庫的啦!! --- ## 基本架構圖 ![](https://i.imgur.com/GiRUCaE.png) --- # 多工實作 --- # [多工的想像](https://youtu.be/gUZ_SILsSuY?t=2) --- # 講解結束了! --- ## 多任務圖解 ![](https://i.imgur.com/NzftSJ6.png =70%x) --- ## 多任務解釋 > 多任務處理(英語:Computer multitasking)是指計算機同時運行多個程序的能力。 多任務的一般方法是運行第一個程序的一段代碼,保存工作環境;再運行第二個程序的一段代碼,保存環境;…… 恢復第一個程序的工作環境,執行第一個程序的下一段代碼…… 現代的多任務,每個程序的時間分配相對平均。(出處:圍雞擺顆) --- ## 多工即是多任務 * **行程**即任務,**多行程**等同於多任務。 * **執行緒**即行程的任務,**多執行緒**等同於在行程內的多任務。 --- ## 本次環境採用 * CPU: Cortex-M3\M4 * Compiler: Keil MDK * Board: Keil內附模擬器 --- ## 本次實作項目 * 任務切換 * 互斥 * 共享記憶體 --- ## Cortex-M3架構 * 通用暫存器 ![](https://i.imgur.com/81DRD2O.png) --- ## Cortex-M3架構 * 特殊功能暫存器 ![](https://i.imgur.com/HpISMeU.png) --- ## Cortex-M3架構 * 控制暫存器 ![](https://i.imgur.com/IiEO7Cm.png) --- ## Cortex-M3架構 * 運作模式使用的堆疊暫存器 | | 特權級 | 用戶級 | | -------- | -------- | -------- | | **中斷或異常模式** | MSP | | | **執行緒模式** | MSP | PSP | * 可透過操作控制暫存器來切換運作模式 --- ## Cortex-M3架構 * 運作模式切換 ![](https://i.imgur.com/DLKKr9S.png) --- ## Cortex-M3架構 * 堆疊生長方向(送進堆疊) ![](https://i.imgur.com/zHQWZKF.png) * 堆疊生長方向(推出堆疊) ![](https://i.imgur.com/FKuluM9.png) --- ## 堆疊使用時機 * CPU中斷 ![](https://i.imgur.com/i4IUEvT.png) * 函式呼叫 --- ## 在C語言中堆疊使用於除了函式呼叫外,還有用於區域變數。 ``` 範例 #include <stdio.h> #include <stdint.h> int32_t g_var = 10; // 全域變數 int32_t main(void) { int32_t i = 0; // 區域變數 int32_t arr[10]; // 區域變數 for(i=0; i<10; i++) { arr[0] = g_var + i; } return 0; } ``` --- #### 講這麼多就為了重頭戲.... # 任務 --- ## 任務切換 ![](https://i.imgur.com/Y3zL9JV.png) * 任務(Task),在實作上,任務可以想像成 --- **函式**。 * 函式一定會用到堆疊,在實作上,堆疊可想像成 --- **陣列**。 * 發生任務切換的場域 --- **CPU 中斷** --- # 範例起因 > 最近台鐵自售機為了搶標,規格內說明多家票証的SAM卡必須同時運算。而依照現行讀卡機架構設計只有單顆MCU,因此同時間只能允許一家票証SAM卡運算,競標廠商所生產的讀卡機則有8顆MCU去各自對映8家票証SAM卡。在成本與時間考量下,必須設計單顆MCU去對映多家票証SAM卡通訊的功能 --- # 範例展示 --- # 但這只是剛開始 --- # 成為技術人多年... --- ## 大家還記得庖丁解牛的故事嗎? --- ## 那講講D-Flawless的故事吧 ![](https://i.imgur.com/fADAjhB.png) >  戴比爾斯鑽石公司成立於1888年,在其成立100週年之際,即1988年3月11日,在南非普列米爾(Premier)金伯利礦區發現了一顆重599.00克拉的特優質鑽石,被命名為“世紀”。 >   >  1988年三月十一日,這顆原石首度以未琢磨品的型態,出現在南非慶伯利的一場晚宴上,其罕見及珍貴,立刻獲得眾人的讚嘆。這場晚宴是為了慶祝戴比爾斯成立(De Beers Consolidated Mines)一百周年紀念而舉辦的,因此,它被命名為The Centenary Diamond,即世紀之鑽。 >   >  之後,戴比爾斯委託世界聞名的鑽石切割大師加比.托高斯基(Sir Gabriel S. Tolkowsky)進行世紀之鑽的設計與切割,加比.托高斯基帶領一組專家,花了一年研究如何將這顆原石切割,繼而花了一百五十四天的時間,以手工方式切除約50克拉的原石,將表面的裂紋除去。然後,加比.托高斯基才設計出三十種不同的切割鑽型供戴比爾斯選擇。 > >  1991年,切割後的世紀之鑽,重273.85克拉,頂部有75 個面,底部有89個面,腰部有83個面,總計有247個切割面,使這顆內外無瑕的巨鑽展露萬丈光芒。雖然全球的專家們皆認為其價值無法估計,但是,這顆世紀之鑽已投保美金一億元以上,目前“世紀”鑽石由戴比爾斯收藏。 >  同時它也是世上最大的 D-Flawless 鑽石。 >   >PS:加比老伯真的很酷,他捨棄了電腦科技的計算方式和先進的機械切割方式,幾個專家花了長時間研究,用幾十年來琢磨鑽石的眼力、完全手感的切割,應該是一輩子功力的展現,太強了~!加比阿伯。 --- ## 大的公司 v.s. 偉大的公司 --- ## 做事的人 v.s. 做人的人 ![](https://i.imgur.com/R5X8dJK.jpg) --- ## 做人的主管 v.s. 做事的主管&老闆 ![](https://i.imgur.com/hYOio4o.jpg) --- ###### 其實這才是我最喜歡的團隊方式 ![](https://i.imgur.com/iGyw95V.jpg =85%x) --- ![](https://i.imgur.com/nnWE22T.png) --- ###### 常這樣用餐 ![](https://i.imgur.com/MYQKWqZ.png) --- ###### 最後不小心真的拿到全國冠軍 ![](https://i.imgur.com/yuUBMWL.png) --- # [就來分享一下過往吧](https://youtu.be/xPoEob2QpzY?t=1130) --- #### 技術最需要什麼能力? --- # 想像力 --- #### 技術最高境界乃在於... --- # 一眼望穿 --- ### 最後想說: # 每人頭頂一片天,希望有幸見到各位發光發熱的一天。 --- # ...謝謝大家... --- # 同一首舞...但... ### [T-ARA(K-POP)](https://www.youtube.com/watch?v=wBZ0JLJHTyA) ### [A1B4(K-POP)](https://www.youtube.com/watch?v=z5xNLXpSPuI) ### [伊能靜(????)](https://www.youtube.com/watch?v=eXvZjMgwPDI) ### [EXILE(J-POP)](https://www.youtube.com/watch?v=BDGUaK0SpqA) ### [ZOO(J-POP)](https://www.youtube.com/watch?v=AL0TE79SbP4) ### [中西圭三(原著)](https://www.youtube.com/watch?v=zytH7jFU2ZY) ---
{"metaMigratedAt":"2023-06-15T01:29:36.070Z","metaMigratedFrom":"YAML","title":"多工","breaks":false,"contributors":"[{\"id\":\"868eaf7c-b4ad-48c9-8117-f99c72eb354f\",\"add\":5272,\"del\":1265}]","description":"C\\C++"}
    237 views
   Owned this note