一本一道AV无码中文字幕,久久久国产一区二区三区四区小说,国产a√精品区二区三区四区,国产精品人人妻人色五月

移動(dòng)端

淺談?dòng)?jì)算機(jī)中存儲(chǔ)模型之物理內(nèi)存

2018年08月28日 16:18$artinfo.Reprint點(diǎn)擊量:762

  小伙伴們有沒(méi)有好奇,數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中,是如何存儲(chǔ)的?計(jì)算機(jī)中物理內(nèi)存的模型是怎樣的呢?今天就給大家詳細(xì)的介紹一下。
 
  在了解存儲(chǔ)模型之前,我們首先應(yīng)該了解一下計(jì)算機(jī)的存儲(chǔ)體系。
 
  個(gè)人感覺(jué)學(xué)這部分的知識(shí)應(yīng)該首先在腦海中抽象出存儲(chǔ)體系,因?yàn)闊o(wú)論磁盤(pán),物理內(nèi)存還是虛擬內(nèi)存都是互相有聯(lián)xi的,抽象出模型有助于我們的理解和記憶。接著需要哪部分知識(shí)或再次深入哪部分知識(shí),從體系圖中找。
 
  建議不要在這塊知識(shí)拉長(zhǎng)戰(zhàn)線,看了前面忘后面。
 

  計(jì)算機(jī)存儲(chǔ)體系圖
 
  簡(jiǎn)述上圖:
 
  從進(jìn)程開(kāi)始,我們知道進(jìn)程運(yùn)行在內(nèi)存中,每個(gè)進(jìn)程都有自己獨(dú)立的內(nèi)存地址空間,目的是安全和利用內(nèi)存,一個(gè)進(jìn)程的地址空間是抽象出來(lái)的,屬于虛擬內(nèi)存,而內(nèi)存分為虛擬內(nèi)存和物理內(nèi)存。
 
  從物理內(nèi)存分析,物理內(nèi)存管理分為等長(zhǎng)和不等長(zhǎng)劃分,等長(zhǎng)劃分一般通過(guò)位圖來(lái)記錄結(jié)構(gòu),不等長(zhǎng)劃分一般通過(guò)空閑區(qū)表來(lái)記錄。
 
  而物理內(nèi)存的要通過(guò)算法來(lái)使進(jìn)程合理分配回收,其中分配算法有四種,回收算法分為四種情況,而內(nèi)存分配和回收會(huì)引起內(nèi)存碎片問(wèn)題,內(nèi)存碎片問(wèn)題分為內(nèi)碎片和外碎片,解決方案有壓縮技術(shù)。
 
  從虛擬內(nèi)存分析,分為頁(yè)式/段式/段頁(yè)式內(nèi)存管理,中間通過(guò)頁(yè)表/段表/段頁(yè)表來(lái)進(jìn)行物理到虛擬內(nèi)存的轉(zhuǎn)換,重點(diǎn)是頁(yè)式管理,頁(yè)式管理中重要的概念有頁(yè)表項(xiàng),多級(jí)頁(yè)表,倒排頁(yè)表,MMU,快表TLB和頁(yè)錯(cuò)誤/缺頁(yè)異常,而虛擬存儲(chǔ)技術(shù)中核心概念就是將內(nèi)存中暫時(shí)不用的頁(yè)面(內(nèi)存塊)放入磁盤(pán)上,問(wèn)題是哪些頁(yè)面(內(nèi)存塊)放到磁盤(pán)上呢,于是我們引入頁(yè)面置換算法,其中OPT為理想置換算法,基本算法有FIFO,F(xiàn)IFO改進(jìn)后的第二次機(jī)會(huì)算法和時(shí)鐘算法,LRU中老化算法和NRU,既然部分頁(yè)面暫存到磁盤(pán)上,那么就要聊聊磁盤(pán)。
 
  磁盤(pán)是硬件,所以要討論它的結(jié)構(gòu),和如何存取數(shù)據(jù),以及磁盤(pán)調(diào)度的一些算法,此外,虛擬內(nèi)存還有重要的兩個(gè)技術(shù)就是內(nèi)存映射和寫(xiě)時(shí)復(fù)制。
 
  物理內(nèi)存
 
  物理內(nèi)存其實(shí)就是我們機(jī)器的實(shí)際內(nèi)存大小,比如我的筆記本電腦內(nèi)存是4G。我們都知道程序是要加載道內(nèi)存中才能執(zhí)行,所以物理內(nèi)存越大,我們電腦的性能就越好。
 
  位圖
 
  位圖(bitmap),其實(shí)就是用位來(lái)標(biāo)記數(shù)據(jù)。
 
  在等長(zhǎng)內(nèi)存管理中,比如我們將內(nèi)存等分為大小相同的內(nèi)存塊,那么一位標(biāo)記一塊,因?yàn)闀?huì)形成一個(gè)位圖。
 

  
       這樣,我們需要多大的塊,只需要匹配bitmap中連續(xù)多少個(gè)0即可。
 
  空閑區(qū)表
 
  在不等長(zhǎng)劃分中,比如我們根據(jù)進(jìn)程的大小來(lái)分配內(nèi)存,這是就需要采用空閑區(qū)表來(lái)存儲(chǔ)空閑的內(nèi)存。
 


 

  空閑區(qū)鏈表只不過(guò)是通過(guò)鏈?zhǔn)浇Y(jié)構(gòu)將空閑區(qū)表中的數(shù)據(jù)組織起來(lái)。
 
  內(nèi)存分配算法
 
  上面說(shuō)了我們?nèi)绾瓮ㄟ^(guò)數(shù)據(jù)結(jié)構(gòu)來(lái)組織未分配的內(nèi)存,我們以空閑區(qū)鏈表結(jié)構(gòu)為例,下面來(lái)說(shuō)說(shuō)物理內(nèi)存的分配算法,有如下四種。
 
  1.適配算法
 
  適配算法是在空閑區(qū)鏈表中從頭開(kāi)始查找符合申請(qǐng)內(nèi)存大小的塊,直到找到滿足條件的為止,該算法不斷的從頭開(kāi)始試驗(yàn)申請(qǐng),所以大部分使用的都是低地址空間的內(nèi)容,從而流出了高地址空間來(lái)滿足大的申請(qǐng)需求,但是缺點(diǎn)是會(huì)在較低的地址空間中頻繁的申請(qǐng)和釋放導(dǎo)致低地址空間中的內(nèi)存碎片,而且每次都查找都從頭開(kāi)始,查找效率比較低。
 
  2.下次適配算法
 
  下次適配算法是適配算法的一個(gè)改進(jìn),它每次從上一次適配的地方開(kāi)始向下查找,不需要每次都從頭開(kāi)始,此算法使得內(nèi)存使用均勻,但是不會(huì)有大的內(nèi)存塊來(lái)滿足內(nèi)存分配。
 
  3.jia適配算法
 
  此算法先按照內(nèi)存塊的空閑區(qū)大小從小到大進(jìn)行排序,排序后,每次從頭開(kāi)始匹配,這樣匹配出來(lái)的結(jié)果肯定是you的,但實(shí)際因?yàn)楸容^符合申請(qǐng)內(nèi)存的大小,會(huì)出現(xiàn)很多較小的內(nèi)存碎片無(wú)法使用,并且每次分配后都要重新排序,開(kāi)銷(xiāo)比較大。
 
  4.差適配算法
 
  此算法按照內(nèi)存塊的空閑區(qū)從大到小進(jìn)程排序,排序后,有進(jìn)程申請(qǐng)內(nèi)存時(shí),將表頭大的內(nèi)存塊分配給它,這樣如果不能分配則所有不能分配,且將大內(nèi)存分配給它,若只占用一小部分還可以進(jìn)行二次分配。
 
  內(nèi)存回收算法
 
  內(nèi)存分配且進(jìn)程使用完后,我們要進(jìn)行回收,一般而言,內(nèi)存回收算法和內(nèi)存的分配算法有著密切的關(guān)系。
 
  所以我們僅僅看內(nèi)存回收算法可能會(huì)出現(xiàn)的四種情況。
 


 

  左上為上相鄰,右下相鄰,左下是上下相鄰,右下是上下不相鄰。
 
  內(nèi)存碎片
 
  什么是內(nèi)存碎片,就是在內(nèi)存中占據(jù)一定大小的空間卻得不到利用的內(nèi)存。內(nèi)存碎片分為內(nèi)碎片和外碎片。
 
  內(nèi)碎片:比如按頁(yè)式分配等長(zhǎng),那么如果有一個(gè)進(jìn)程需要5頁(yè)多內(nèi)存,那么我們只能給他分配6頁(yè)內(nèi)存,那么這第6頁(yè)是未用完的,其中除過(guò)一些數(shù)據(jù)外,我們還有空閑的被該進(jìn)程占據(jù),其他進(jìn)程也不能使用。
 
  外碎片:外碎片是還未分出來(lái)的,未被進(jìn)程占用且因?yàn)樘』蚱渌粷M足條件再次分配的小的內(nèi)存塊稱為外碎片。
 
  緊縮技術(shù):我們一般采用緊縮技術(shù)來(lái)合并小的內(nèi)存碎片,原理是將暫時(shí)不運(yùn)行的進(jìn)程安全的移動(dòng)位置,獨(dú)立出內(nèi)存碎片,從而組裝多個(gè)內(nèi)存碎片合并成一個(gè)大的內(nèi)存塊。
 
  注意的是有些進(jìn)程并不能被移動(dòng),比如正在讀寫(xiě)IO。
 
  伙伴算法
 
  伙伴算法是Linux底層內(nèi)存分配回收算法的一種實(shí)現(xiàn)。本文只講述伙伴算法的基本原理?;锇樗惴ɑ舅枷耄簩?nèi)存大小變?yōu)槎膎此方 。
 
  如果一個(gè)程序申請(qǐng)的內(nèi)存塊大小 m 滿足 2^n-1 < m < 2^n條件,那么就將此時(shí)的內(nèi)存塊分配給它。
 

  如上圖,我們現(xiàn)在需要200K空間,1M等于1024K,如果m小于1M的一半,那么繼續(xù)分離m,當(dāng)分離到256時(shí),剛好能滿足200K的需求,所以分配。
 
  歸還時(shí),采用內(nèi)存回收算法的思想,看左右相鄰。若沒(méi)被占用則合并(也是為什么叫伙伴算法)。
版權(quán)與免責(zé)聲明: 凡本網(wǎng)注明“來(lái)源:智慧城市網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-智慧城市網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來(lái)源:智慧城市網(wǎng)cchxqp518.com”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源(非智慧城市網(wǎng)cchxqp518.com)的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。

編輯精選

更多

本站精選

更多

專題推薦

更多

名企推薦

更多

浙公網(wǎng)安備 33010602000006號(hào)