介紹
上一篇a.out(hello,world程序)執行之后發生了什么?這次通過系統硬件和操作做粗略的描述,這樣對我們也是有一些幫助的。
如果中間若有誤,請不吝賜教。
從鍵盤上讀取a.out命令
當我們打開我們的終端的時候,shell程序會執行它的指令,等待我們的輸入。
當我們在鍵盤上輸入"a.out",敲回車時,shell就知道我們結束了命令的輸入。然后shell的指令就會逐一讀取目標文件a.out的代碼和數據到寄存器,再把代碼和數據拷貝到主存儲器。


科普普及:
1、主存用來存放指令和指令處理的數據。
2、處理器(CPU的簡稱)是解釋(或執行)存儲在主存中指令的引擎。在任何一個時間點上,CPU中的PC(程序計數器)都指向主存中的某條機器語言指令。
3、有一種DMA(直接存儲器存取)技術,數據可以不通過處理器而直接從磁盤到達主存儲器。
從存儲器寫輸出串到顯示器
1、 一旦a.out目標文件中的代碼和數據被加載到了主存儲器,CPU就開始執行
main.c程序的主程序中機器語言指令。
2、 這些指令將"hello,world\n"串中的字節從主存儲器中拷貝到寄存器文件。
3、 再從寄存器中文件拷貝到顯示設備,最終顯示在屏幕上。
流程圖:

總結
從兩個角度分析上面的問題:
機器指令:最初是在磁盤上——》(程序加載時)拷貝到主存——》(處理器運行指令時)從主存拷貝到處理器。
數據串:最初是在磁盤上——》拷貝到主存——》顯示設備。
參考文獻:
《深入理解計算機系統》
推薦
