早期的計算機cpu和記憶體訪問速度一致,而其他外設訪問速度過慢,因此都需要乙個相應的i/o控制器。後來cpu的頻率提高了,cpu改使用倍頻的方式與系統匯流排進行通訊。後來隨著圖形晶元需要跟cpu和記憶體之間大量交換資料,設計了專門的北橋晶元。低速裝置連線南橋晶元,再彙總連線到北橋。
硬體介面稱為硬體規格。開發工具與應用程式是屬於同乙個層次的。
當我們要讀乙個檔案時,應用程式發出讀的命令,作業系統接收到之後傳遞給磁碟驅動程式,磁碟驅動程式再向磁碟發出硬體指令,讀到資料。
將程式給出的位址看作是一種虛擬位址,通過mmu(硬體單元)完成對映得到實體地址,解決了位址空間不隔離的問題以及程式執行的位址不確定的問題。
物理記憶體有效利用的有多少取決於位址匯流排的個數。
同乙個程序中的執行緒是可以訪問其他執行緒的棧的,如果它知道其他執行緒的棧位址的話(但一般語言層面上不允許這樣)
fork產生乙個新的程序,使用的是寫時複製,所以速度很快。clone可以在實際效果上產生乙個新的執行緒(共享當前程序的記憶體空間和檔案),是乙個核心執行緒。
執行緒間的同步:原子操作,訊號量,互斥量,臨界區(區別在於他的作用範圍僅限於本程序),讀寫鎖,條件變數。
過度優化問題:即使成功正確上了鎖,也有可能出現問題。因為編譯器和cpu都會打亂指令的執行順序,且為了提高變數的訪問速度,有可能將變數放於暫存器中並未及時寫回記憶體。
多對一線程模型:執行緒之間的切換由使用者態的**來進行,所以實際上只有乙個核心執行緒。(個人理解,表面上的多執行緒實際是由**庫來負責切換執行緒)
程式設計師的自我修養(第一章)
記憶體不夠怎麼辦?首先實現的是分頁機制,即只在物理記憶體中儲存程序常用的資料,而其他的放在硬碟中。關於隔離 程序作為普通的執行程式,需要的是簡單的執行環境和單一的位址空間。這裡就出現了虛擬位址空間,然後統一由mmu記憶體管理單元進行統一對映,而這個管理單元是同頁表的方式進行對映的,這個頁表放在物理記...
《程式設計師的自我修養》讀書心得 第一章 談職業生涯
這本書是陳逸鶴老師從乙個成熟的成員 一名it管理者的角度,以雜記的形式寫的關於國內程式設計師職業生涯 個人發展 程式設計中的實踐與認知和設計等方面的經驗方法與思考感悟,對於各個階段的開發人員來說都是由一定的啟發作用。下面是我讀這本書的一些摘要和感悟 正確的認識自己 程式設計師應該是那些不斷追求更高技...
第一章 程式設計師也是人
程式設計師也是人 哪個狗日的發明了計算機?自打計算機問世以來,尤其是個人計算機的普及以後,一種新興的行業產生了,程式設計師。它伴隨著所謂第三次產業革命,資訊產業革命,而產生。所以他總是被掛上了高薪,高科技的帽子,使得它越來越受到了更多年輕人的青睞。然而,從大學起盲目的選擇到現在,你是否已經後悔?目前...