什么是內存管理?總的來說系統內存管理包括物理內存管理和虛擬內存管理。這里給大家分享一些關于操作系統內存管理知識,希望對大家能有所幫助。
物理內存管理概述:
操作系統負責內存空間的分配與回收
內存空間的擴展:操作系統需要提供某種技術從邏輯上對內存空間進行擴充
操作系統需要提供地址轉換功能,負責程序的邏輯地址與物理地 址的轉換
操作系統需要提供內存保護功能。保證各進程在各自存儲空間內 運行,互不干擾
內存空間的擴展:
覆蓋技術:將程序分為多個段(多個模塊)。 常用的段常駐內存,不常用的段在需要時調入內存。內存中分為一個“固定區”和若干個“覆蓋區”。 需要常駐內存的段放在“固定區”中,調入后就不再 調出(除非運行結束) 不常用的段放在“覆蓋區”,需要用到時調入內存, 用不到時調出內存。
交換技術:交換(對換)技術的設計思想:內存空間緊張時,系統將內存中某些進程暫時換出外存,把外存中 某些已具備運行條件的進程換入內存(進程在內存與磁盤間動態調度)
于操作系統內存管理知識,希望對大家能有所幫助。
非連續分配管理方式
連續分配:為用戶進程分配的必須是一個連續的內存空間。
非連續分配:為用戶進程分配的可以是一些分散的內存空間。
什么是分頁存儲:
將內存空間分為一個個大小相等的分區(比如:每個分區4KB),每個分區就是一個“頁框”(頁框=頁幀=內存塊=物理 塊=物理頁面)。每個頁框有一個編號,即“頁框號”(頁框 號=頁幀號=內存塊號=物理塊號=物理頁號),頁框號從0開始。
將進程的邏輯地址空間也分為與頁框大小相等的一個個部分, 每個部分稱為一個“頁”或“頁面” 。每個頁面也有一個編號, 即“頁號”,頁號也是從0開始。
操作系統以頁框為單位為各個進程分配內存空間。進程的每個頁面分別放入一個頁框中。也就是說,進程的頁面與內存的頁 框有一一對應的關系。 各個頁面不必連續存放,可以放到不相鄰的各個頁框中。
(注:進程的最后一個頁面可能沒有一個頁框那么大。也就是 說,分頁存儲有可能產生內部碎片,因此頁框不能太大,否則 可能產生過大的內部碎片造成浪費)
具有快表的地址變換機 構:
快表,又稱聯想寄存器(TLB, translation lookaside buffer ),是一種訪問速度比內存快很多的高速緩存(TLB不是內存!),用來存放最近訪問的頁表項的副本,可以加速地址變換的速度。 與此對應,內存中的頁表常稱為慢表。
引入快表后,地址的變換過程:
① CPU給出邏輯地址,由某個硬件算得頁號、頁內偏移量,將頁號與快表中的所有頁號進行比較。
② 如果找到匹配的頁號,說明要訪問的頁表項在快表中有副本,則直接從中取出該頁對應的內存塊 號,再將內存塊號與頁內偏移量拼接形成物理地址,最后,訪問該物理地址對應的內存單元。因此, 若快表命中,則訪問某個邏輯地址僅需一次訪存即可。
③ 如果沒有找到匹配的頁號,則需要訪問內存中的頁表,找到對應頁表項,得到頁面存放的內存塊 號,再將內存塊號與頁內偏移量拼接形成物理地址,最后,訪問該物理地址對應的內存單元。因此, 若快表未命中,則訪問某個邏輯地址需要兩次訪存(注意:在找到頁表項后,應同時將其存入快表, 以便后面可能的再次訪問。但若快表已滿,則必須按照一定的算法對舊的頁表項進行替換)
局部性原理:
時間局部性:如果執行了程序中的某條指令,那么不久后這條指令很 有可能再次執行;如果某個數據被訪問過,不久之后該數據很可能再 次被訪問。(因為程序中存在大量的循環)
空間局部性:一旦程序訪問了某個存儲單元,在不久之后,其附近的 存儲單元也很有可能被訪問。(因為很多數據在內存中都是連續存放 的)
分段存儲管理方式:
進程的地址空間:按照程序自身的邏輯關系劃分為若干個段,每個段都有一個段名(在低級語言 中,程序員使用段名來編程),每段從0開始編址 內存分配規則:以段為單位進行分配,每個段在內存中占據連續空間,但各段之間可以不相鄰。
分段、分頁管理的對比:
頁是信息的物理單位。分頁的主要目的是為了實現離散分配,提高內存利用率。分頁僅僅是系統管 理上的需要,完全是系統行為,對用戶是不可見的。
段是信息的邏輯單位。分段的主要目的是更好地滿足用戶需求。一個段通常包含著一組屬于一個邏輯模塊的信息。分段對用戶是可見的,用戶編程時需要顯式地給出段名。
頁的大小固定且由系統決定。段的長度卻不固定,決定于用戶編寫的程序。
分頁的用戶進程地址空間是一維的,程序員只需給出一個記憶符即可表示一個地址。
分段的用戶進程地址空間是二維的,程序員在標識一個地址時,既要給出段名,也要給出段內地址。
分段比分頁更容易實現信息的共享和保護。不能被修改的代碼稱為純代碼或可重入代碼(不屬于臨 界資源),這樣的代碼是可以共享的。可修改的代碼是不能共享的。
虛擬內存管理
傳統存儲管理方式的特征、缺點:
一次性:作業必須一次性全部裝入內存后才能開始運行。這會造成兩個問題:
①作業很大時,不能全 部裝入內存,導致大作業無法運行;
②當大量作業要求運行時,由于內存無法容納所有作業,因此只 有少量作業能運行,導致多道程序并發度下降。
駐留性:一旦作業被裝入內存,就會一直駐留在內存中,直至作業運行結束。事實上,在一個時間段 內,只需要訪問作業的一小部分數據即可正常運行,這就導致了內存中會駐留大量的、暫時用不到的 數據,浪費了寶貴的內存資源。
虛擬內存的定義和特征:
基于局部性原理,在程序裝入時,可以將程序中很快 會用到的部分裝入內存,暫時用不到的部分留在外存, 就可以讓程序開始執行。
在程序執行過程中,當所訪問的信息不在內存時,由 操作系統負責將所需信息從外存調入內存,然后繼續 執行程序。
若內存空間不夠,由操作系統負責將內存中暫時用不 到的信息換出到外存。
在操作系統的管理下,在用戶看來似乎有一個比實際 內存大得多的內存,這就是虛擬內存
虛擬內存有三個主要特征:
多次性:無需在作業運行時一次性全部裝入內存,而是允許被分成多次調入內存。
對換性:在作業運行時無需一直常駐內存,而是允許在作業運行過程中,將作業換 入、換出。
虛擬性:從邏輯上擴充了內存的容量,使用戶看到的內存容量,遠大于實際的容量。
操作系統內存管理知識相關文章:
★ 全國統考計算機真題及答案解答
★ c語言學習心得
★ 電腦學習
★ 如何合理設置電腦虛擬內存,提高電腦運行速度
★ BIOS常見字母對照表附帶解釋
★ 關于畢業軟件專業實習報告范文大全
★ 2020疫情期間各行業總結范文五篇
★ linux實習心得范文
★ 最新計算機實訓心得體會5篇
★ 關于最新計算機電腦維修專業實習報告總結{范文}