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