程序/執行緒/協程/管程/纖程 筆記
阿新 • • 發佈:2019-02-18
下面是『雜談』,以前的我不重視基本概念。現在就需要惡補了。
認識CPU
中央處理器(CPU,Central Processing Unit)是一塊超大規模的積體電路,是一臺計算機的運算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋計算機指令以及處理計算機軟體中的資料。
基本組成:
中央處理器主要包括運算器(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩衝儲存器(Cache)及實現它們之間聯絡的資料(Data)、控制及狀態的匯流排(Bus)。它與內部儲存器(Memory)和輸入/輸出(I/O)裝置合稱為電子計算機三大核心部件。
核心:算術邏輯運算單元,也就是一個指令執行電路。就ALU而言,不存在什麼程序、執行緒、棧(更加別說堆了)等高階概念,CPU的指令數量相對較少。他處理流程就是,執行PC暫存器給的指令(實際情況肯定比這個複雜的多,還有各種異常等)。
從上面可以得知:
- 程式的執行錯誤絕大部分是系統給出的,如:段錯誤,資源受限等
- 任何層次的*程切換/排程都是需要額外資源的;
編譯雜談
程式編譯執行流程是:把程式碼按照一定規則(APCS或者其他)編譯成機器指令,APCS規定了棧等資訊。 逆向過程就是:把那些機器指令按照APCS協議用匯編的形式表示出來。高階的甚至用偽C程式碼表示(這個過程就是彙編與C直接的轉換協議)。
PS:APCS:ARM過程呼叫標準。
- 暫存器命名;
- 設計關鍵:函式呼叫,快,小,易於優化;
- 函式應當可以妥善處理棧;