記憶體管理:
os的記憶體管理主要負責記憶體的分配和**(malloc、free),
同時位址轉換等功能也由os記憶體管理來做。
常見記憶體管理機制:
連續性分配管理方式:塊式管理。
非連續性分配管理方式:頁式管理、段式管理、段頁式管理。
1.塊式管理
將記憶體分為幾個固定大小的塊,每個塊只包含乙個程序。當程式執行需要記憶體時,就分配給它一塊。
這種分配方式非常容易出現記憶體碎片。
2.頁式管理
將記憶體分為大小相等的一頁一頁的形式,每一頁的大小較小(比塊小),相比於塊式儲存提高了記憶體利用率,減少了記憶體碎片。
頁式管理通過頁表查詢邏輯位址和實體地址。
3.段式管理
頁式管理的頁無實際意義,段式管理將記憶體分為若干段,每一段的大小更小(比頁小)。
段是有意義的,每個段是一組邏輯資訊,例如主程式段main,資料段d,棧段s等。
段式管理通過段表查詢邏輯位址和實體地址。
4.段頁式管理
結合了頁式和段式的有點。將記憶體分為若干段,每個段又分成若干頁。段頁式管理的段與段之間、段內部都是離散的。
多級頁表和快表:
1.多級頁表:
為了提高記憶體利用率,減少記憶體碎片,頁的大小應該變小。頁小,頁的數量變多,頁表就會變大。
為了避免把全部頁表一直放在記憶體中占用過多空間(特別是一部分頁表實際用不上),因此產生了多級頁表。
多級頁表屬於典型的時間換空間。
2.快表(頁表緩衝):
又稱聯想暫存器。
為了加快邏輯位址到實體地址的轉化速度,os在頁表管理機制的基礎上引入了快表,用於加快位址對映速度。
快表可以看作是一種特殊的快取記憶體,內容是頁表的一部分或全部內容。
快表就是存放在高速緩衝儲存器的部分頁表。作為頁表的cache,它的作用與頁表相似,但是提高了訪問速率。由於採用頁表做位址轉換,讀寫記憶體資料時cpu要訪問兩次主存。有了快表,有時只要訪問一次高速緩衝儲存器,一次主存,這樣可加速查詢並提高指令執行速度。
3.對兩者的總結:
多級頁表是為了提公升記憶體效能,但用的是時間換空間。為了提高時間效能,引入了快表(tlb)。
多級頁表和快表都利用了程式的區域性性原理。
位址轉換流程:
1)按照邏輯位址中的頁號查快表
2)若該頁已存在快表中,則由頁架號和單元號形成絕對位址
3)若該頁不在快表中,則再查主存頁表,與單元號形成絕對位址,同時將該頁登記到快表中
4)當快表填滿後,又要登記新頁時,則需要按照一定替換策略淘汰乙個舊的登記項
分頁機制和分段機制的對比:
相同點:
1.分頁和分段都是為了提高記憶體利用率,減少記憶體碎片
2.頁和段都是離散儲存的,但頁內和段內是連續儲存的。
不同點:
1.頁的大小是固定的,由作業系統決定。段的大小不固定,由執行的程式決定。
2.分頁滿足了os的記憶體管理需求,而分段是邏輯資訊的單位,在程式中體現為**段,資料段等,更能滿足使用者需要。
實體地址指的是真實物理記憶體中的位址,更具體的說就是記憶體位址暫存器中的位址。
在沒有虛擬位址空間時,程式都是直接訪問和操作物理記憶體。
直接暴露實體地址的做法有以下缺點:
1)使用者程式可以訪問任意記憶體,容易破壞作業系統,造成作業系統崩潰。
2)執行多個程式比較困難,多個程式同時執行,乙個程式容易覆蓋其他程式做的修改,容易造成被覆蓋程式的崩潰。
通過虛擬位址訪問記憶體的好處:
1)程式可以使用一系列相鄰的虛擬位址來訪問物理記憶體中不相鄰的大記憶體緩衝區。
2)程式可以使用一系列虛擬位址來訪問大於可用物理記憶體的記憶體緩衝區。當物理記憶體的**量變小時,記憶體管理器會將物理記憶體頁(通常大小為4kb)儲存到磁碟檔案。資料或**頁會根據需要在物理記憶體與磁碟之間移動。
3)不同程序使用的虛擬位址彼此隔離。乙個程序中的**無法修改正在被其他程序或作業系統使用的物理記憶體。
作業系統記憶體管理
作業系統記憶體管理 一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於32位程序來說,這個位址空間為4g,因此程序中的位址可以為0x00000000至0xffffffff之間的任何乙個值。其中4g空間中的低區的2g空間留給程序使用,而高區的2g空間則留給系統使用。在windows200...
作業系統記憶體管理
作業系統記憶體管理一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於 32位程序來說,這個位址空間為 4g,因此程序中的位址可以為 0x00000000 至0xffffffff 之間的任何乙個值。其中 4g空間中的低區的 2g空間留給程序使用,而高區的 2g空間則留給系統使用。在win...
作業系統記憶體管理
記憶體,毫無疑問是最重要的資源,顯然,作業系統對記憶體的管理我必須清楚。這裡主要介紹了分頁管理和分段管理。1.頁式管理 a.頁式管理的基本思想 打破儲存分配的連續性 將邏輯上連續的使用者程式對映到離散的記憶體塊 使用者程式與記憶體空間被劃分為若干等長的區域 邏輯頁 與 物理頁 使用者程式的劃分由系統...