Notes 《程式設計師的自我修養 鏈結 裝載與庫》

2021-08-13 18:26:26 字數 640 閱讀 9553

記錄下每章的知識點,便於以後對著這份知識圖譜,複習和重組。

掌握硬體中的核心部件:cpu、記憶體、i/o控制晶元

了解cpu核心頻率提公升過程中硬體構架的演進:從bus,到pci/isa,再到pci express

搶占式cpu分配方式:cpu由作業系統統一分配,因為cpu分配給每個process的時間都很短,即cpu在多個process間快速切換,造成了很多process同時在執行的假象

以linux下的檔案:/home/user/test.dat,長度8000位元組為例,linux的ext3檔案系統,可能將該檔案以如下方式儲存:前4096位元組,儲存在磁碟扇區1000~1007號,每個扇區512位元組,8個扇區4096位元組;檔案4097~8000位元組共3904位元組,儲存在磁碟扇區2000~2007號,8個山區4096位元組,剩下的192位元組沒有用到,無效。

這裡還提到了硬碟管理一種lba方式,就是為硬碟分扇區,並將所有扇區從0開始編號,硬碟資訊只對檔案系統展示自己的扇區編號,遮蔽磁軌、盤面等概念。和前段時間接觸到的預分配機制很像,也是將sd卡分成資料塊,對資料塊編號。

檔案系統讀取磁碟中資訊時,首先向1000~1007號扇區傳送read請求。磁碟驅動向硬體傳送i/o命令,最常見的方式就是讀寫暫存器。在x86平台上,有65535個硬體暫存器,不同硬體分配到不同埠位址上。

《程式設計師的自我修養》筆記 靜態鏈結

在通過編譯和彙編後,就生成了目標檔案,鏈結就是把這些目標檔案加工後合併成乙個輸出檔案的過程。鏈結過程可以分為兩步 第一步 空間與位址分配。掃瞄所有的輸入目標檔案,獲得它們每個各個段的長度 屬性和位置,並且將輸入目標檔案中的符號表中所有 的符號定義和符號引用收集起來,統一放到乙個全域性符號表。這一步中...

程式設計師的自我修養四靜態鏈結

真正了不起的程式設計師對自己的程式的每乙個位元組都了如執掌。a.c extern intshared int main 全域性符號 b.c int shared 1 全域性符號 void swap int a,int b 全域性符號 對於鏈結器來說,整個鏈結過程中,它就是將幾個輸入目標檔案加工後合併...

程式設計師的自我修養 編譯和鏈結

hello world程式hello.c include int main 在linux下,使用gcc編譯和執行hello world程式時,只需使用最簡單的命令。gcc hello hello.c hello hello world 事實上,上述過程可以分解為4個步驟,分別是預處理 prepres...