hello.c算法
#include <stdio.h> int main() { printf("hello,world\n"); return 0; }
文件若是隻含有ascii字符,那麼就是文本文件,若是包含其餘字符,就是二進制文件shell
hello.c通過四個步驟,生成hello可執行文件緩存
首先,當輸入"./hello"時,shell讀取輸入字符到寄存器,而後放入主內存安全
接着,當輸入回車時,shell查找硬盤上的hello文件,加載進主內存網絡
最後,cpu讀取hello程序中main函數的機器指令並執行。示例指令中,會從主存拷貝"hello,world\n"字符串的字節到寄存器文件,再從寄存器文件拷貝到顯示設備,最終顯示在屏幕併發
hello程序執行步驟存在大量從內存到寄存器之間的拷貝操做。相比較寄存器,在內存操做數據會慢不少,大量拷貝操做存在於兩端時,會致使內存端成爲瓶頸。爲了打破瓶頸提升性能,系統設計者提出了高速緩存的概念。它位於寄存器和主存之間。當緩存大量命中時,可減小cpu對主存數據的依賴。函數
考慮兩個高速緩存的狀況:寄存器-L1-L2-主存性能
L1和L2經過靜態隨機訪問存儲器(SRAM)硬件技術實現,L1位於處理器芯片,訪問速度媲美寄存器,L2經過特殊總線鏈接處理器,速度爲L1的5倍,主存在最後,訪問速度爲L2的5-10倍優化
網絡也是一個IO設備。系統將數據從主存拷貝到網絡適配器,通過網絡,目的機器的系統讀取網絡適配器上的數據,拷貝到主存。這樣就完成了數據在網絡間的傳輸操作系統
現代計算機發展的兩個目標:計算機作的更多,計算機運行更快。前者也就是併發,後者也就是並行,這兩個關鍵字在現代計算機的體現以下
圖示爲四核處理器,每一個核都有本身的寄存器、L1高速緩存(分爲數據、指令)、L2高速緩存,四個核在一個芯片上,共享一個L3高速緩存,全部處理器芯片共享一個主存
源程序以ascii文本形式存儲,被編譯器和連接器翻譯成可執行的二進制文件。
處理器讀取並處理二進制程序中的指令和數據時,會花費大量時間在寄存器、主存、IO設備之間拷貝數據。爲了加速該過程,系統引入高速緩存,將系統分爲cpu寄存器-高速緩存-主存-硬盤的多層結構。
操做系統內核做爲應用程序和硬件之間的媒介,提供了一層抽象。
虛擬機又提供了基於操做系統、處理器、主存、IO設備的抽象
網絡做爲一種特殊的IO設備,提供了計算機系統之間通訊的能力