每個程式設計師都應該了解的記憶體知識1 記憶體概述

2021-07-29 09:34:57 字數 879 閱讀 6779

英文原文:

早期的計算機很簡單,它的各種元件如cpu、記憶體、大容量儲存和網路介面都是一起開發的,所以效能差不多。舉個例子來說,記憶體和網路介面提供資料的速度不會比cpu快多少。

這種情況隨著計算機基本結構的固化和各子系統的優化慢慢地發生了改變。其中一些元件的效能開始落後,成為系統的瓶頸。特別是大容量儲存和記憶體子系統,由於成本的原因,它們的發展嚴重滯後了。

大容量儲存的效能問題往往靠軟體來改善:作業系統將最常用(且最有可能被用到)的資料放在主存中,因為後者的速度要比硬碟快上幾個數量級。儲存裝置中增加了快取,這樣就可以在不修改作業系統的前提下提公升效能。(但是為了在使用快取時保證資料的完整性,仍然要作出一些修改。)這些內容不在本文的談論範圍之內,就不作贅述了。

與大容量儲存不同,解決記憶體的瓶頸問題更為困難,幾乎每種方案都需要對硬體作出修改。目前,這些修改主要包括以下這些方式:

本文主要關心的是cpu快取和記憶體控制器的設計。在討論這些問題的過程中,我們還會研究dma。不過,我們首先會從當今商用硬體的設計談起。這有助於我們理解目前在使用記憶體子系統時可能遇到的問題和限制。我們還會詳細介紹ram的分類,並說明為什麼會存在這麼多不同型別的記憶體。

本文並不會包括所有內容,也不是最終版本。我們的討論範圍僅止於商用硬體,而且只限於其中的一小部分。另外,本文中的許多論題只會點到為止。大家可以閱讀關於這些論題的其它文件,以獲得更詳細的說明。

當本文提到作業系統特定的細節和解決方案時,針對的都是linux,不會包含其他作業系統的資訊,作者無意討論其他作業系統的情況。如果讀者認為他/她不得不使用別的作業系統,那麼必須去要求**商提供其作業系統類似於本文的文件。

在開始之前最後的一點說明,本文包含大量的「經常」和別的類似的限定詞。這裡討論的技術在現實中有很多不同的實現,所以本文只闡述使用得最廣泛最主流的版本,在闡述中很少用到絕對的限定詞。

每個程式設計師都應該警惕的檔案上傳漏洞!!

2019年09月13日 07 30 00 菜v菜 閱讀數 4241 hack 專注於網路安全攻防黑客技術的研究及思考,帶領新手走進黑客世界的大門。檔案上傳漏洞是指網路攻擊者上傳了乙個可執行的檔案到伺服器並執行。這裡上傳的檔案可以是木馬,病毒,惡意指令碼或者webshell等。假如某 有乙個允許使用者...

每個程式設計師都應該了解的一件事

我曾經接觸過一些it高管以及行業的技術大牛,當私下聊起他們是如何變得如此出類拔萃時,他們大多會以自嘲又略帶得意的語氣來講述他們的那些獨門秘籍。我的文件寫得特別好。我的口才很好,總是能成功說服別人。我的ppt做得非常棒,是公司裡數一數二的。我寫過幾篇很受歡迎的技術文章。我熱愛開源文化,並在社群裡很有名...

每個程式設計師都應該學習使用Python或Ruby

如果你是個學生,你應該會c,c 和j a。還會一些vb,或c net。多少你還可能開發過一些web網頁,你知道一些html,css和j ascript知識。總體上說,我們很難發現會有學生顯露出掌握超出這幾種語言範圍外的語言的才能。這真讓人遺憾,因為還有很多種程式語言,它們能讓你成為乙個更好的程式設計...