當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]內(nèi)存的分配和回收內(nèi)存的分配是為進入系統(tǒng)準(zhǔn)備運行的程序分配內(nèi)存空間,內(nèi)存的回收是當(dāng)程序運行完成后回收所占用的空間,系統(tǒng)為了完成這個功能,必須跟蹤記錄內(nèi)存空間的使用情況,按照一定的算法為進程分配和回收空間

內(nèi)存的分配和回收

內(nèi)存的分配是為進入系統(tǒng)準(zhǔn)備運行的程序分配內(nèi)存空間,內(nèi)存的回收是當(dāng)程序運行完成后回收所占用的空間,系統(tǒng)為了完成這個功能,必須跟蹤記錄內(nèi)存空間的使用情況,按照一定的算法為進程分配和回收空間。

分配存儲方案的因素:

存儲空間的描述結(jié)構(gòu):系統(tǒng)采用某種數(shù)據(jù)結(jié)構(gòu)登記當(dāng)前的內(nèi)存使用情況以及空閑區(qū)的分布情況,供存儲分配使用。每次分配回收要修改這些數(shù)據(jù)。

分配的策略:確定安裝內(nèi)存的分配和回收算法,好的算法既能滿足進程運行需要,又能充分利用內(nèi)存空間。

存儲地址變換 用戶編程的時候無法預(yù)知確定程序在內(nèi)存的位置,只能采用邏輯地址編程,程序運行的時候把程序的邏輯地址轉(zhuǎn)換為實際地址,由內(nèi)存管理模塊與硬件的地址變換機構(gòu)共同完成。 1.符合地址 高級語言編程使用符號名,比如函數(shù)名,變量名語句標(biāo)號來表示操作對象或者轉(zhuǎn)移的地址,高級語言使用的空間是符合地址 2.邏輯地址 編譯程序?qū)⒃创a的語句逐條翻譯為機器指令,為每個變量分配存儲單元,并利用存儲單元地址替換變量名,這些指令和數(shù)據(jù)順序存放在一起,從0開始編排地址,形成目標(biāo)代碼,目標(biāo)代碼所占據(jù)的地址范圍稱為邏輯地址空間,范圍0~n-1,n是目標(biāo)代碼長度,邏輯地址空間的地址稱為邏輯地址或者相對地址。 3.物理地址 物理內(nèi)存由一系列的內(nèi)存單元組成,這些內(nèi)存單元從0開始按字節(jié)編址,稱為內(nèi)存地址,當(dāng)目標(biāo)程序加載到內(nèi)存里時候,所占據(jù)的實際內(nèi)存空間就是它的物理存儲空間,物理空間不會從0開始,因為內(nèi)存的低端地址通常被操作系統(tǒng)占據(jù),對比下圖可以理解。邏輯地址空間i的地址是96,真正的物理內(nèi)存空間時1120.

現(xiàn)在程序地址的變換采用的是動態(tài)變換,程序裝入內(nèi)存的是不進行變換,在執(zhí)行過程遇到邏輯地址,地址變換機構(gòu)進行地址轉(zhuǎn)換,然后再執(zhí)行指令,特點是程序在內(nèi)存中可移動,可共享。
內(nèi)存保護 1.雖然內(nèi)存的容量不斷提高,對應(yīng)用來說還是不足,擴充存儲器空間的基本思想是借用外來存儲空間擴展內(nèi)存空間,方法是先讓程序的部分代碼進入內(nèi)存,其他放在外存,需要的時候再調(diào)入內(nèi)存。實現(xiàn)方式有三種 1.覆蓋技術(shù) 將程序分為幾個模塊,重要的先進入內(nèi)存,不重要的等需要的時候再進入,不重要的共享一些內(nèi)存空間,用的時候覆蓋掉某個暫時不用的塊。缺點是編程的時候必須對程序進行模塊劃分,復(fù)雜。不好 2.交換技術(shù) 多個程序并發(fā)執(zhí)行的時候,往往有些程序因為等待某個事件暫時不能運行,如果將暫時不執(zhí)行的程序放入外存,和覆蓋不一樣的是交換技術(shù)是以進程為單位的,優(yōu)點是增加了程序并發(fā)的程序數(shù)目,對程序結(jié)構(gòu)沒有要求,缺點是對整個進程換入換出操作浪費很多時間。 3.虛擬存儲器
以上兩種內(nèi)存擴充技術(shù)都不是虛擬存儲技術(shù),在編程人眼中,看到的還是實際內(nèi)存的大小,虛擬存儲技術(shù)原理是將程序的部分代碼調(diào)入內(nèi)存,其余駐留在外存,需要時候調(diào)入,程序的代碼的換入換出完全由系統(tǒng)完成,用戶看到的是一個比實際內(nèi)存大得多的內(nèi)存。
程序局部性原理 實驗證明,程序運行的過程中,CPU不是隨機的訪問整個程序或者數(shù)據(jù)范圍,而是在一個時間段內(nèi)只集中訪問程序或數(shù)據(jù)范圍,這種特性稱為局部性原理,局部性原理表明在進程運行的某個較短的時間內(nèi)進程地址空間只有部分是活動的,其余處于不活動狀態(tài),可能長時間不會用到比如初始化和終止代碼,也可能根本不會用到,比如錯誤處理代碼。它們完全沒有必要在內(nèi)存駐留,只有當(dāng)需要的時候在被調(diào)入內(nèi)存,可見局部性使得虛擬存儲成為可能。 虛擬存儲器原理 利用外存模擬內(nèi)存,在外存開辟一個大的存儲空間,叫做交換區(qū),進程啟動后部分代碼進入內(nèi)存,其余的留在外存交換區(qū),需要時候調(diào)入,和覆蓋不一樣的是覆蓋是用戶有意識的進行,看到的內(nèi)存大小還是原來內(nèi)存大小,虛擬存儲技術(shù)里,內(nèi)存和交換空間之間的交換完全是系統(tǒng)動態(tài)完成,應(yīng)用程序不會發(fā)覺,進程看到的是一個比實際內(nèi)存大得多的虛擬內(nèi)存。與交換技術(shù)不同的是交換是以進程為單位,進程映像大小受實際內(nèi)存的限制,虛擬存儲進程的邏輯空間可以超越實際內(nèi)存容量的限制。
讀寫硬盤速度慢,訪問虛擬存儲器速度比訪問真正的內(nèi)存慢,以時間換空間,虛擬存儲器大小也受到地址寄存器位數(shù)限制。32位計算機,可訪問內(nèi)存的上限是4GB。
虛擬存儲器的實現(xiàn)技術(shù) 有虛擬頁和虛擬段存儲
下面介紹虛擬頁存儲 VM系統(tǒng)將虛擬存儲器劃分為虛擬頁,固定大小處理數(shù)據(jù),類似的物理存儲器也分割為物理頁,大小一樣。

MMU利用頁表實現(xiàn)對虛擬內(nèi)存的管理,CPU里面的虛擬基址寄存器指向當(dāng)前的頁表,n位虛擬地址包含兩個部分,一個是p為的虛擬地址偏移,一個是n-p位的虛擬頁號,MMU利用虛擬頁號選擇適當(dāng)?shù)捻摫眄?,比如VPN0對應(yīng)PTE0,依次類推,如果沒有發(fā)生缺頁異常,就可以根據(jù)根據(jù)PTE里面的物理頁號和虛擬偏移量組合得到的物理地址。因為物理頁的大小和虛擬頁一樣,所以偏移量也正好相當(dāng)。

頁表命中過程 處理器生成一個虛擬的地址,傳送給MMUMMU生成PTE地址,并從高速緩存或者主存請求得到它高速緩存或者主存向MMU返回PTEMMU構(gòu)造物理地址,并把它發(fā)送給主存或者高速緩沖高速緩存或者主存把返回請求的數(shù)據(jù)返回給處理器
頁表不命中過程 處理器生成一個虛擬的地址,傳送給MMUMMU生成PTE地址,并從高速緩存或者主存請求得到它高速緩存或者主存向MMU返回PTE因為PTE的有效位是0,觸發(fā)異常,進行異常處理缺頁處理程序從主存確定一個要犧牲的頁,如果這個頁被修改了,就把它重寫回磁盤。缺頁處理程序頁面調(diào)入新的頁面,并更新PTE缺頁處理程序返回原來的進程,再次執(zhí)行導(dǎo)致缺頁的命令,CPU將原來的虛擬頁再次發(fā)給MMU,因為這次已經(jīng)緩存了所以不會產(chǎn)生異常。進程地址空間管理
地址空間映射
文件映射:進程的靜態(tài)鏡像以可執(zhí)行文件的形式駐留在硬盤,在創(chuàng)建進程的時候要構(gòu)造地址空間,方法是用可執(zhí)行文件的相應(yīng)的部分內(nèi)容構(gòu)建虛存區(qū),映像不是被調(diào)入虛存區(qū),而是在映像文件和虛存區(qū)之間建立地址映射這就是文件映射。建立映射的時候text區(qū)和data區(qū)被映射到磁盤上的可執(zhí)行文件,stack區(qū)無須映射,BSS和heap為匿名映射不和任何實際文件建立對應(yīng)的映射,BSS和heap的映射對象是一個抽象的“零頁“文件,映射到零頁文件的區(qū)將全是0.上述圖非虛存區(qū)是不可用的,唯一的例外是棧,棧的空間會隨著程序執(zhí)行動態(tài)的增長,棧大小低于上限(通常是8M)是可以增長的,超出會棧溢出造成程序終止。 頁表映射: 頁表映像:文件映像只是將文件里面的映像映射到額虛存空間,進入物理內(nèi)存的映像則是通過也表來映射的,建立了頁表映射的地址空間是進程實際占用的可以直接訪問的部分,就是圖中提到的已經(jīng)分配的。內(nèi)核里有一個獨立的內(nèi)核頁表,用來映射內(nèi)核空間到物理存儲的低1G空間,進程運行在用戶空間的時候使用進程頁表,陷入內(nèi)核使用內(nèi)核頁表。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉