1. 程式人生 > >【1】計算機系統漫遊筆記

【1】計算機系統漫遊筆記

網絡通信 硬件組成 跳轉 多線程 緩存 顯示 字符 動態擴展 器)

1.現在大多數機器字長為4字節(32位),8字節(64位)。ps:所以我們可以通過判斷int類型的長度來得出系統位數。

2.系統硬件組成,如下圖:

技術分享圖片

總線:貫徹整個系統的一組電子管道。

I/O設備:系統與外部世界聯系的通道。(比如鼠標、鍵盤、顯示屏及磁盤。)

主存:是一個臨時存儲設備,在處理器執行程序時,用來存放程序和程序處理的數據。

處理器:是用來執行存儲在主存中指令的引擎。

3.程序在被其他程序編譯時經過的階段(預處理器、編譯器、匯編器和鏈接器)。

技術分享圖片

4.CPU執行的加載、存儲、操作和跳轉的內部運行原理。

加載:從主存儲器復制一個字或者字節到寄存器,覆蓋寄存器原來的內容。

存儲:從寄存器復制一個字或者字節到主存儲器的某個位置,覆蓋原來這個位置上的內容。

操作:把兩個寄存器的內容復制到ALU(算術/邏輯單元),ALU對這兩個進行計算,並將結果返回到一個寄存器中,覆蓋掉原來這個位置的內容。

跳轉:從指令本身抽一段數據,並將數據復制到PC(程序計數器)中,覆蓋原來這個位置的值。

5.運行程序。

開始,我們從USB控制器輸入命令,通過I/O橋連接總線接口,shell程序逐一的將字符讀入寄存器,再把它放到內存(主存)中。

當我們敲回車鍵時,shell知道我們結束輸入。然後shell通過一系列指令加載可執行的hello文件,並將代碼和數據從磁盤復制到主存儲器中,包含最終輸出的"hello world"。

最後:當我們下次訪問時,我們就不需要從磁盤讀取,可直接從主存儲器讀取數據,這樣大大加快了效率。

6.高速緩存的重要性。

我們為什麽不一直從磁盤獲取數據,而是從主存儲器讀取?

1.處理器從磁盤讀取一個字的時間開銷比主存儲器讀取的開銷大1000萬倍。

2.為了數據更快的顯示。

3.加快處理器運行速度比加快主存儲器的運行速度要容易和便宜的多。

7.我們可以通過高速緩存處理器提高程序性能。

PS:比如說 A---B點需要三個-, 我在AB之間加高速緩存器 A--+B,+存儲B中的數據,那麽A到B點的過程就少了個-;

8.操作系統兩個基本功能:

(1)防止硬件被失控的應用程序濫用;

(2)向應用程序提供簡單一致的機制來控制復雜而又通常大不相同的低級硬件設備。

操作系統通過進程、虛擬內存、文件來實現這兩個功能。

技術分享圖片

技術分享圖片

9.進程:無論單核還是多核系統,一個CPU看上去像在並發執行多個進程,這其實是通過處理器在進程間來回切換實現的。

操作系統將這種交錯執行的機制稱為:上下文切換。

10.任何時候,單處理器都只執行一個進程的代碼。

當操作系統覺得要把控制權從當前進程轉移到其他新進程時,就會執行上下文。

其內部運行:保存當前進程的上下文,恢復或新建進程的上下文,然後把控制權傳遞到新進程。

11.線程:因為多線程之間比多進程之間更容易共享數據,因為此線程一般比進程更高效。

當有多處理器使用時,多線程是一種使得程序運行更快的辦法。

虛擬內存:程序代碼和數據-》堆=》共享庫-》棧(執行期間會動態擴展【調用時】和收縮【返回時】)-》內核虛擬內存(不允許應用程序讀寫,只允許內核執行)。

虛擬內存的基本思想:把進程虛擬內存的內容存儲在磁盤上,然後用主存儲器作為磁盤的高速緩存。

12.文件就是字節序列。

13.系統之間利用網絡通信內部運行原理:傳輸就是把主存儲器數據通過網絡適配器復制到另一臺機器,接收就是通過網絡適配器讀取其他機器數據保存到主存儲器內。

用戶輸入“hello word”-》客戶端發送消息到遠程服務器-》服務器向shell發送字符串,shell執行完後發送到服務器-》服務器發送到客戶端-》客戶端在顯示屏打印“hello world”。

【1】計算機系統漫遊筆記