程序編譯過程:
gcc HelloWorld.c -E -o HelloWorld.i 預處理:加入頭文件,替換宏。
gcc HelloWorld.c -S -c HelloWorld.s 編譯:包含預處理,將 C 程序轉換成匯編程序。
gcc HelloWorld.c -c HelloWorld.o 匯編:包含預處理和編譯,將匯編程序轉換成可鏈接的二進制程序。
gcc HelloWorld.c -o HelloWorld 鏈接:包含以上所有操作,將可鏈接的二進制程序和其它別的庫鏈接在一起,形成可執行的程序文件。
.i:有很多#開頭的常量或變量
.s:匯編指令
.o:看不懂
objdump -d HelloWorld可以得到有內存地址和二進制指令的匯編文件
手寫操作系統
鏈接:https://zhuanlan.zhihu.com/p/373996858
操作系統啟動經歷的流程:
加電后啟動BIOS固件,加載引導設備GRUB,引導后加載磁盤分區中的操作系統,可以在界面中自己選擇
原文:簡單解釋一下,PC 機 BIOS 固件是固化在 PC 機主板上的 ROM 芯片中的,掉電也能保存,PC 機上電后的第一條指令就是 BIOS 固件中的,它負責檢測和初始化 CPU、內存及主板平台,然后加載引導設備(大概率是硬盤)中的第一個扇區數據,到 0x7c00 地址開始的內存空間,再接着跳轉到 0x7c00 處執行指令,在我們這里的情況下就是 GRUB 引導程序。
內核:宏內核,微內核,混合內核
宏內核有極致的性能,微內核有極致的擴展性,可移植性
內核功能:文件管理,內存管理,I/O管理,進程管理
三種內核架構
Linux內核:內核架構最為復雜,宏內核,但性能強勁
Darwin內核:微內核架構,ios內核
windows NT(new technology):混合內核架構,windows內核