作業系統:
作業系統(operating system,簡稱os)是管理計算機
硬體與軟體資源的電腦程式。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入裝置與輸出裝置、操作網路與管理檔案系統等基本事務。作業系統也提供乙個讓使用者與系統互動的操作介面。
歷史:
原始系統我們直接操作物理記憶體位址,或者我們通俗理解沒有作業系統進行排程
發展歷程(記憶體):
我們為了開啟多個程式,或者說為了多個程式共用一些記憶體位址,就是我不執行王者的時候王者的記憶體可以其他用。
也就是說我們需要乙個虛擬位址,我們程式看似訪問的虛擬位址,通過對映找到我們主記憶體。
對映的方式有段對映,也就是主記憶體是分段的。我們需要多少,找到能放下程式的地方,執行!
這樣會有乙個問題就是我們記憶體會分配的不連續,產生記憶體碎片,我在記憶體位址1-10中,qq用了1-5,記事本用了6,瀏覽器用了7-10,然後我們如果一直不釋放記事本,我們我們的1-10就被切分了 1-5 , 6 , 7-10。也即是我們最多能夠分配五個位置
為了解決碎片問題,我們可以固定大小,於是乎有了分頁的概念。
不多分頁大小是多少?linux是4k,如果我們8g記憶體,用四位儲存,我們可能需要4m作用來儲存頁表資訊。
還好,4m能接受,不過我們如果開100個程式,就會有400m,這個是恐怖的了。
解決方案,我們可以二級頁表,本來10的20次方,變為10的十次方,大大減少我們定址時間
能不能更優化,我們可以利用快表來儲存經常用的,畢竟經常用的有區域性性。
終極方案:可以用段頁兩種方式儲存。段號,頁號,偏移量。
作業系統記憶體對映
簡單地說可訪問記憶體總數是由cpu 北橋 記憶體控制器 主機板佈線 如果js偷工減料的話 的位址匯流排寬度和作業系統來決定的。奔騰以後的cpu至少有36條位址匯流排,所以奔騰以上的32位cpu至少在64g是沒問題的 但由於暫存器是32位的,所以可線性訪問的只有4g,其他的需要通過頁面切換 pae 才...
作業系統之記憶體對映
記憶體管理的發展歷程 dos時代 同一時間只能有乙個程序在執行 也有一些特殊演算法可以支援多程序 windows9x 多個程序裝入記憶體,會產生兩個問題1 記憶體不夠用2 相互打擾 如下圖所示 1.分頁 記憶體不夠用 記憶體中分成固定大小的頁框 4k 把程式 硬碟上 分成4k大小的塊,用到哪一塊,載...
作業系統架構隨筆
為什麼要開發os 每種不同的硬體使用規格不同,x86 64 x86 32以及arm架構不盡相同,各種記憶體規格也不同,各種顯示卡的顯示晶元也不同,需要程式猿自己去進行涉及對應的底層的排程,難度很大,而且如果更換硬體,程式就會失效。程式猿和硬體之間的層次的嚴重不協調可以通過增加乙個中間層來解決。程式猿...