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