偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺談計算機中的存儲模型之物理內(nèi)存

存儲 存儲軟件
個人感覺學(xué)這部分的知識應(yīng)該首先在腦海中抽象出存儲體系,因為無論磁盤,物理內(nèi)存還是虛擬內(nèi)存都是互相有聯(lián)系的,抽象出模型有助于我們的理解和記憶。接著需要哪部分知識或再次深入哪部分知識,從體系圖中找。

 小伙伴們有沒有好奇

數(shù)據(jù)在計算機內(nèi)存中

是如何存儲的?

計算機中物理內(nèi)存的模型

是怎樣的呢?

今天大雄就給大家詳細(xì)的介紹一下

[[241326]]

在了解存儲模型之前,我們首先應(yīng)該了解一下計算機的存儲體系。

個人感覺學(xué)這部分的知識應(yīng)該首先在腦海中抽象出存儲體系,因為無論磁盤,物理內(nèi)存還是虛擬內(nèi)存都是互相有聯(lián)系的,抽象出模型有助于我們的理解和記憶。接著需要哪部分知識或再次深入哪部分知識,從體系圖中找。

建議不要在這塊知識拉長戰(zhàn)線,看了前面忘后面。

計算機存儲體系圖

簡述上圖:

從進程開始,我們知道進程運行在內(nèi)存中,每個進程都有自己獨立的內(nèi)存地址空間,目的是安全和高效利用內(nèi)存,一個進程的地址空間是抽象出來的,屬于虛擬內(nèi)存,而內(nèi)存分為虛擬內(nèi)存和物理內(nèi)存。

 從物理內(nèi)存分析,物理內(nèi)存管理分為等長和不等長劃分,等長劃分一般通過位圖來記錄結(jié)構(gòu),不等長劃分一般通過空閑區(qū)表來記錄。

而物理內(nèi)存的要通過算法來使進程合理分配回收,其中分配算法有四種,回收算法分為四種情況,而內(nèi)存分配和回收會引起內(nèi)存碎片問題,內(nèi)存碎片問題分為內(nèi)碎片和外碎片,解決方案有壓縮技術(shù) ; 

從虛擬內(nèi)存分析,分為頁式/段式/段頁式內(nèi)存管理,中間通過頁表/段表/段頁表來進行物理到虛擬內(nèi)存的轉(zhuǎn)換,重點是頁式管理,頁式管理中重要的概念有頁表項,多級頁表,倒排頁表,MMU,快表TLB和頁錯誤/缺頁異常,而虛擬存儲技術(shù)中核心概念就是將內(nèi)存中暫時不用的頁面(內(nèi)存塊)放入磁盤上,問題是哪些頁面(內(nèi)存塊)放到磁盤上呢,于是我們引入頁面置換算法,其中OPT為理想置換算法,基本算法有FIFO,F(xiàn)IFO改進后的第二次機會算法和時鐘算法,LRU中老化算法和NRU,既然部分頁面暫存到磁盤上,那么就要聊聊磁盤。

磁盤是硬件,所以要討論它的結(jié)構(gòu),和如何存取數(shù)據(jù),以及磁盤調(diào)度的一些算法,此外,虛擬內(nèi)存還有重要的兩個技術(shù)就是內(nèi)存映射和寫時復(fù)制。

物理內(nèi)存

物理內(nèi)存其實就是我們機器的實際內(nèi)存大小,比如我的筆記本電腦內(nèi)存是4G。我們都知道程序是要加載道內(nèi)存中才能執(zhí)行,所以物理內(nèi)存越大,我們電腦的性能就越好。

位圖

位圖(bitmap),其實就是用位來標(biāo)記數(shù)據(jù)。 

在等長內(nèi)存管理中,比如我們將內(nèi)存等分為大小相同的內(nèi)存塊,那么一位標(biāo)記一塊,因為會形成一個位圖。

這樣,我們需要多大的塊,只需要匹配bitmap中連續(xù)多少個0即可。

空閑區(qū)表

在不等長劃分中,比如我們根據(jù)進程的大小來分配內(nèi)存,這是就需要采用空閑區(qū)表來存儲空閑的內(nèi)存。

空閑區(qū)鏈表只不過是通過鏈?zhǔn)浇Y(jié)構(gòu)將空閑區(qū)表中的數(shù)據(jù)組織起來。

內(nèi)存分配算法

上面說了我們?nèi)绾瓮ㄟ^數(shù)據(jù)結(jié)構(gòu)來組織未分配的內(nèi)存,我們以空閑區(qū)鏈表結(jié)構(gòu)為例,下面來說說物理內(nèi)存的分配算法,有如下四種。

1.***適配算法

***適配算法是在空閑區(qū)鏈表中從頭開始查找符合申請內(nèi)存大小的塊,直到找到滿足條件的為止,該算法不斷的從頭開始試驗申請,所以大部分使用的都是低地址空間的內(nèi)容,從而流出了高地址空間來滿足大的申請需求,但是缺點是會在較低的地址空間中頻繁的申請和釋放導(dǎo)致低地址空間中的內(nèi)存碎片,而且每次都查找都從頭開始,查找效率比較低。

2.下次適配算法

下次適配算法是***適配算法的一個改進,它每次從上一次適配的地方開始向下查找,不需要每次都從頭開始,此算法使得內(nèi)存使用均勻,但是不會有大的內(nèi)存塊來滿足內(nèi)存分配。

3.***適配算法

此算法先按照內(nèi)存塊的空閑區(qū)大小從小到大進行排序,排序后,每次從頭開始匹配,這樣匹配出來的結(jié)果肯定是***的,但實際因為比較符合申請內(nèi)存的大小,會出現(xiàn)很多較小的內(nèi)存碎片無法使用,并且每次分配后都要重新排序,開銷比較大。

4.最差適配算法

此算法按照內(nèi)存塊的空閑區(qū)從大到小進程排序,排序后,有進程申請內(nèi)存時,將表頭***的內(nèi)存塊分配給它,這樣如果不能分配則所有不能分配,且將大內(nèi)存分配給它,若只占用一小部分還可以進行二次分配。

內(nèi)存回收算法

內(nèi)存分配且進程使用完后,我們要進行回收,一般而言,內(nèi)存回收算法和內(nèi)存的分配算法有著密切的關(guān)系。 

所以我們僅僅看內(nèi)存回收算法可能會出現(xiàn)的四種情況。

左上為上相鄰,右下相鄰,左下是上下相鄰,右下是上下不相鄰。

內(nèi)存碎片

什么是內(nèi)存碎片,就是在內(nèi)存中占據(jù)一定大小的空間卻得不到利用的內(nèi)存。內(nèi)存碎片分為內(nèi)碎片和外碎片。

內(nèi)碎片:比如按頁式分配等長,那么如果有一個進程需要5頁多內(nèi)存,那么我們只能給他分配6頁內(nèi)存,那么這第6頁是未用完的,其中除過一些數(shù)據(jù)外,我們還有空閑的被該進程占據(jù),其他進程也不能使用。

外碎片:外碎片是還未分出來的,未被進程占用且因為太小或其他不滿足條件再次分配的小的內(nèi)存塊稱為外碎片。

緊縮技術(shù):我們一般采用緊縮技術(shù)來合并小的內(nèi)存碎片,原理是將暫時不運行的進程安全的移動位置,獨立出內(nèi)存碎片,從而組裝多個內(nèi)存碎片合并成一個大的內(nèi)存塊。

注意的是有些進程并不能被移動,比如正在讀寫IO。

伙伴算法

伙伴算法是Linux底層內(nèi)存分配回收算法的一種實現(xiàn)。本文只講述伙伴算法的基本原理。

伙伴算法基本思想:

將內(nèi)存大小變?yōu)槎膎此方 。

如果一個程序申請的內(nèi)存塊大小 m 滿足 2^n-1 < m < 2^n條件,那么就將此時的內(nèi)存塊分配給它。 

如上圖,我們現(xiàn)在需要200K空間,1M等于1024K,如果m小于1M的一半,那么繼續(xù)分離m,當(dāng)分離到256時,剛好能滿足200K的需求,所以分配。 

歸還時,采用內(nèi)存回收算法的思想,看左右相鄰。若沒被占用則合并(也是為什么叫伙伴算法)。

責(zé)任編輯:武曉燕 來源: 老九學(xué)堂
相關(guān)推薦

2023-10-11 18:30:39

Web系統(tǒng)程序

2021-01-22 05:44:24

數(shù)據(jù)底層架構(gòu)

2021-02-03 05:25:39

存儲層次化代碼

2023-12-01 15:57:07

系統(tǒng)調(diào)用計算機

2011-07-05 13:11:45

2013-09-17 10:03:28

計算機學(xué)習(xí)

2016-12-12 09:39:40

2012-12-20 09:42:16

Linux超級計算機HPC

2023-12-26 08:58:33

物理內(nèi)存JVM內(nèi)存管理

2021-10-19 14:20:11

主機主機名Linux

2021-03-11 12:31:20

電磁防護安全

2013-02-27 14:31:17

Windows Ser

2021-02-01 06:41:47

流水線計算機隊列

2024-02-27 09:23:36

內(nèi)存存儲SD 卡

2009-06-25 09:01:42

Linux

2024-08-23 08:43:08

2018-07-05 09:25:07

系統(tǒng)存儲層次

2011-07-27 21:28:53

計算機網(wǎng)絡(luò)服務(wù)

2021-04-15 18:09:14

存儲程序計算機

2024-04-02 11:39:40

二進制儲存器網(wǎng)絡(luò)
點贊
收藏

51CTO技術(shù)棧公眾號