嵌入式基礎知識-存儲管理
                發布時間:2023-08-07 13:34:05 文章來源:互聯網
                上篇介紹了存儲器的相關知識,偏重的是硬件結構,本篇介紹存儲管理的相

                上篇介紹了存儲器的相關知識,偏重的是硬件結構,本篇介紹存儲管理的相關知識,偏重的是軟件管理。


                (資料圖)

                1 存儲管理概念

                操作系統,包括嵌入式系統,通常利用存儲管理單元MMU(Memory Management Unit)來提供內存保護機制,實現系統內核與應用程序,應用程序與應用程序之間的隔離。

                內存保護包括兩個方面:

                防止地址越界:對于多個應用程序,每個應用程序都有自己獨立的地址空間。防止操作越界:對于多個應用程序共享的內存區域,每個應用程序都有自己的訪問權限。

                存儲管理的方式,通??梢苑譃橐幌聨最悾?strong>分區存儲,頁式存儲,段式存儲

                2 分區存儲

                分區存儲又可分為兩類:

                固定分區存儲:分區大小是固定的可變分區存儲:分區大小是可變的

                2.1 固定分區存儲

                固定分區,是指分區的個數、位置、大小一旦確定后,就不再變化了。另外,分區的大小可以是相等的,也可以是不相等的。

                對于新任務到來后的內存分配原則,有兩種:

                多個輸入隊列:對于每一個用戶分區,都有一個相應的輸入隊列。當一個新任務到來時,就把它加入到對應的隊列中,要求這個隊列對應的分區,是能夠裝得下該任務的最小分區。單個輸入隊列:所有的用戶分區只設置一個輸入隊列。當一個新任務到來時,就把它加入到對應的隊列中,當某個分區空閑時,就從隊列中選擇合適的任務去占用這個分區,在任務選擇時,可以有兩種分配方法:方式一:選擇離對首最近的且能夠裝入這個分區的任務。當選中的是較小的任務時,則會浪費大量內存空間。方式二:先搜索整個隊列,選擇能夠裝入這個分區的最大任務,盡可能減小空間浪費。

                對于固定分區:

                優點:易于實現,系統開銷較?。臻e空間管理、內存分配與回收算法復雜度低)缺點:內存利用率不高,產生內存碎片;分區總數固定,限制了并發程序的個數

                2.2 可變分區存儲

                可變分區,是指分區不是預先劃分的,而實動態創建的,在裝入一個程序時,系統根據它的需求和內存空間的使用情況來決定是否分配。

                當一個程序開始運行,要求裝入內存時,系統就會從空閑區劃出一塊進行分配;當程序運行完則釋放存儲區域,變為空閑區。

                在具體實現可變分區管理時,需考慮三個方面問題:

                內存管理的數據結構:系統會維護一個分區鏈表,記錄每個內存分區的情況(分配狀態、起始地址、長度等)內存的分配算法:當新任務到來時,需決策分配到哪個空閑分區,通常有4種分配法 :最先匹配法:從鏈表頭,按順序找到第一個能裝入新任務的空閑分區。接著把該空閑分區中按照任務大小分割,剩余的部分仍是一個空閑分區,將任務裝入,并更新分區鏈表下次匹配法:與最優匹配法類似,區別是每次分配后記錄位置,下次再分區時從此位置開始查找,而不是從固定的鏈表頭開始查找最佳匹配法:將新任務狀態與其大小最接近的空閑分區中。這種方法最大的缺點是產生的空閑分區可能很小而無法使用最壞匹配法:每次都選用最大的分區進行分配,避免出現不可用的極小分區,但較大的空閑分區也不被保留

                內存的回收算法:當任務運行結束釋放內存時,若有相鄰的空閑分區,則需要合并為一個大的空閑分區,并更新分區鏈表

                對于內存的分配算法,可以看下如下實例:某計算機系統內存大小128k,采用可變分區分配方式進行內存分配,當前系統的內存分塊情況如下圖左圖,現有一個作業4要分配9k的內存,這這種分配算法的分區情況如下圖右邊4個子圖所示

                可變分區改善了固定分區的一些缺點,但作為分區存儲本身,仍有一些無法解決的問題:

                當進程運行所需的內存大于系統內存時,則無法將整個進程一起調入內存,從而無法運行該程序

                3 頁式存儲

                頁式存儲,將進程空間分配為一個個頁,同時將系統內存也分配為一個個頁,例如都是4K的大小。

                這樣,運行程序時,每次將需要運行的邏輯頁狀態內存中,運行完再裝入下一個要運行的頁,這樣就解決了空間極大的進程運行的問題。

                對于邏輯頁,可以用頁號和頁內地址表示:

                頁號:與內存中的物理塊號并不是對應的,需要通過查詢“頁表”得到對應的物理塊號業內地址:或稱頁內偏移量,與內存中的物理偏移地址是一致的

                比如上圖中,其地址長度32位,頁號占用20位,頁內地址占用12位,則頁面總數為2^20=1024K=1M個,頁面大小為2^12=4K

                對于頁表的表示,如下圖,左邊是進程中的頁號,通過查詢頁表,可以得到右邊內存中對應的塊號。

                通過頁表的方式,可以實現從邏輯地址到物理地址的轉換。

                邏輯地址:頁號+業內偏移物理地址:物理塊號+頁內偏移地址

                兩種地址的頁內偏移是一樣的,所以地址轉換,只需要先計算出頁號與物理塊號的轉換關系,即可進行地址轉換。

                頁式存儲的地址轉換,可看如下實例:

                題目:頁面大小L為1k字節,頁號2對應的內存塊號b=8,將邏輯地址A=2500轉換為物理地址E

                由題目可得如下分析:

                頁面大小1k,則頁內地址占用10位邏輯地址2500轉為16進制為0x09C4,取低10位為業內地址,即0x01C4,頁號為0x02由題目知頁號為0x02對應的內存塊號為8,對應的16進制為0x08,將其與業內地址組合,可得物理地址為0x0x21C4,十進制即為8644。

                或直接使用十進制計算:

                頁號P=A/L=2500/1024=2,由題目知,其對應的內存塊號為8

                業內偏移w=A%L=2500%1024=452

                則物理地址為:

                E=b*L+w=8*1024+452=8644

                頁式存儲的優缺點:

                優點:內存利用率高,內存碎片小,分配與管理簡單缺點:增加了系統的開銷,可能產生抖動現象

                4 段式存儲

                段式存儲與頁式存儲比較相似,區別是段式存儲不是按照固定的大小分割內存,而是根據進程的邏輯功能進行空間畫法,這樣便于內存共享,只是每段的空間大小不同。

                4.1 基本原理

                與頁式存儲類似,段式存儲每段的表示,由段號和段內地址組成。

                從邏輯地址到物理地址的轉換,則是通過段表的查詢來實現。

                看一個實例,例如,某進程的段表內容如下,當訪問段號2,段內地址400的邏輯地址時,進行地址轉換則會出現越界異常

                段號段長內存起始地址權限狀態
                01006000只讀在內存
                1200--讀寫不在內存
                23004000讀寫在內存

                因為段號2對應的段長只有300,而段內地址400則超出了范圍,地址4400為非法地址

                4.2 段頁式存儲

                段頁式存儲,則是將段式存儲和頁式存儲結合起來使用,對進程空間先分段,再分頁。

                段頁式存儲優缺點:

                優點:空間浪費小,便于存儲共享與存儲保護,可以動態鏈接缺點:管理的復雜度與開銷增大,需要的硬件增加,執行速度下降

                5 總結

                本篇介紹了存儲管理的相關知識,包括存儲管理的分類:分區存儲、頁式存儲和段式存儲,已經不同存儲方式的地址轉換方式與優缺點等。

                標簽:

                資訊播報

                樂活HOT

                娛樂LOVE

                精彩推送

                亚洲精品中文字幕| 久久精品国产亚洲av麻豆色欲| 男人的天堂亚洲一区二区三区| 久久精品国产亚洲AV香蕉| 亚洲人成色777777在线观看| 在线亚洲v日韩v| 在线观看亚洲AV每日更新无码| 亚洲伊人久久大香线蕉苏妲己| 亚洲av永久无码精品古装片| 亚洲国产婷婷六月丁香| 337p日本欧洲亚洲大胆裸体艺术 | 中文字幕在线观看亚洲| 亚洲国产AV无码专区亚洲AV| 九月丁香婷婷亚洲综合色| 日韩亚洲人成在线综合日本| 国产精品亚洲а∨无码播放 | 亚洲 欧洲 视频 伦小说| 国产成人精品日本亚洲专一区| 亚洲天堂2016| 亚洲欧洲av综合色无码| 亚洲hairy多毛pics大全| 国产精品亚洲专区无码WEB| 亚洲欧美日韩中文字幕在线一区 | 国产成人亚洲综合网站不卡| 亚洲熟妇少妇任你躁在线观看| 亚洲日韩久久综合中文字幕| 亚洲欧美成人av在线观看| 久久无码av亚洲精品色午夜| 亚洲国产精品成人久久蜜臀| 亚洲一级片免费看| 在线亚洲精品福利网址导航| 亚洲精品国产精品乱码不99 | 亚洲AV无码一区二区大桥未久 | 亚洲av日韩aⅴ无码色老头| 亚洲成A人片77777国产| 国产亚洲美女精品久久久2020| 精品亚洲一区二区| 337p日本欧洲亚洲大胆精品555588 | 国产亚洲综合久久系列| 亚洲精品天天影视综合网| 亚洲精品美女视频|