從源代碼到輸出

本文研究的是一個經典的hello.c程序從產生到執行輸出的過程。源代碼是:

#include <stdio.h>
int main()
{
	printf("Hello, world.\n");
	return 0;
}

程序編譯執行過程程序源代碼經編譯器編譯鏈接後生成了操作系統可直接執行的可執行文件,該文件存儲按照約定好的格式存儲計算機可識別的低級機器指令,指示計算機如何運行。程序運行時,首先由程序加載器把程序從磁盤上加載到內存中,然後處理器從內存中獲取要執行的指令,執行指令時,處理器將需要輸出的信息從主存中經處理器顯示到屏幕。


程序經程序加載器加載到內存過程中可能存在地址重定位,用以修正相對偏移地址,程序的內存結構圖如下所示: 


上述爲本程序的進程的虛擬地址空間分佈圖,通用的進程虛擬地址空間分佈如下所示:


程序執行的硬件環境一般是統一標準的,其計算機系統硬件結構圖如下所示: 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章