1. 程式人生 > >Notes:《程式設計師的自我修養——連結、裝載與庫》

Notes:《程式設計師的自我修養——連結、裝載與庫》

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

溫故而知新

萬變不離其宗

掌握硬體中的核心部件:CPU、記憶體、I/O控制晶片
瞭解CPU核心頻率提升過程中硬體構架的演進:從Bus,到PCI/ISA,再到PCI Express

站得高,望得遠

系統軟體分為:平臺性的和程式開發性的
平臺性系統軟體:作業系統核心、驅動、執行庫、系統工具
程式開發性系統軟體:編譯器、彙編器、連結器

軟體體系結構層與層之間的Interface

Application Programming Interface:Glibc庫提供的POSIX的API
System call Interface:Linux使用0x80號中斷作為系統呼叫介面

不要讓CPU打盹

多工系統:作業系統接管了所有硬體資源,本身也處於受硬體保護的級別,所有應用都以process方式執行在比作業系統許可權更低的級別,每個process有自己的獨立地址空間,互相隔離

搶佔式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個硬體暫存器,不同硬體分配到不同埠地址上。