您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關計算機中不產生內部碎片的存儲管理是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
不會產生內部碎片的存儲管理是:分段式存儲管理。在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。每個段都從0開始編址,并采用一段連續的地址空間。整個作業的地址空間由于是分成多個段,因而是二維的。
不會產生內部碎片的存儲管理是:分段式存儲管理。分頁式存儲管理才有內部碎片,分段式存儲管理有外部碎片。
分頁式存儲管理
分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁,并為各頁加以編號,從0開始,如第0頁、第1頁等。
相應地,也把內存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如0#塊、1#塊等等。在為進程分配內存時,以塊為單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。由于進程的最后一頁經常裝不滿一塊而形成了不可利用的碎片,稱之為“頁內碎片”。
分段式存儲管理
引入分段存儲管理方式的目的,則主要是為了滿足用戶(程序員)在編程和使用上多方面的要求,其中有些要求是其它幾種存儲管理方式所難以滿足的。因此,這種存儲管理方式已成為當今所有存儲管理方式的基礎。
在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段MAIN、子程序段X、數據段D及棧段S等。每個段都有自己的名字。為了實現簡單起見,通常可用一個段號來代替段名,每個段都從0開始編址,并采用一段連續的地址空間。段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間由于是分成多個段,因而是二維的,亦即,其邏輯地址由段號(段名)和段內地址所組成。
分段地址中的地址具有如下結構:
在該地址結構中,允許一個作業最長有 64 K個段,每個段的最大長度為64 KB。 分段方式已得到許多編譯程序的支持,編譯程序能自動地根據源程序的情況而產生若干個段。例如,Pascal編譯程序可以為全局變量、用于存儲相應參數及返回地址的過程調用棧、每個過程或函數的代碼部分、每個過程或函數的局部變量等等,分別建立各自的段。類似地,Fortran編譯程序可以為公共塊(Common block)建立單獨的段,也可以為數組分配一個單獨的段。裝入程序將裝入所有這些段,并為每個段賦予一個段號。
引入分段存儲管理方式,主要是為了滿足用戶和程序員的下述一系列需要:
1) 方便編程
通常,用戶把自己的作業按照邏輯關系劃分為若干個段,每個段都是從0開始編址,并有自己的名字和長度。因此,希望要訪問的邏輯地址是由段名(段號)和段內偏移量(段內地址)決定的。例如,下述的兩條指令便是使用段名和段內地址:
LOAD 1,[A] |〈D〉;
STORE 1,[B] |〈C〉;
其中,前一條指令的含義是將分段A中D單元內的值讀入寄存器1;后一條指令的含義是將寄存器1的內容存入B分段的C單元中。
2) 信息共享
在實現對程序和數據的共享時,是以信息的邏輯單位為基礎的。比如,共享某個例程和函數。分頁系統中的“頁”只是存放信息的物理單位(塊),并無完整的意義,不便于實現共享;然而段卻是信息的邏輯單位。由此可知,為了實現段的共享,希望存儲管理能與用戶程序分段的組織方式相適應。
3) 信息保護
信息保護同樣是對信息的邏輯單位進行保護,因此,分段管理方式能更有效和方便地實現信息保護功能。
4) 動態增長
在實際應用中,往往有些段,特別是數據段,在使用過程中會不斷地增長,而事先又無法確切地知道數據段會增長到多大。前述的其它幾種存儲管理方式,都難以應付這種動態增長的情況,而分段存儲管理方式卻能較好地解決這一問題。
5) 動態鏈接
動態鏈接是指在作業運行之前,并不把幾個目標程序段鏈接起來。要運行時,先將主程序所對應的目標程序裝入內存并啟動運行,當運行過程中又需要調用某段時,才將該段(目標程序)調入內存并進行鏈接。可見,動態鏈接也要求以段作為管理的單位。
關于“計算機中不產生內部碎片的存儲管理是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。