當前位置:首頁 » 存儲配置 » 分段式存儲

分段式存儲

發布時間: 2023-01-05 19:21:34

A. 採用段式存儲管理的系統中,若地址用24位表示,其中8位表示段號,則允許每段最大長度是

2^16。

採用段式管理的系統中,其邏輯地址分為段號和頁內偏移量。本題的地址一共24位,使用了8位表示段號,那麼把剩下的 16 位全部用來表示段內偏移量就能使每段長度最大從而每段允許的最大長度為 2^16。

產生是與程序的模塊化直接有關的,段式管理是通過段表進行的,包括段號或段名、段起點、裝入位、段的長度等。此外還需要主存佔用區域表、主存可用區域表。



(1)分段式存儲擴展閱讀:

為了進行段式管理,每道程序在系統中都有一個段(映象)表來存放該道程序各段裝入主存的狀況信息。

段表中的每一項(對應表中的每一行)描述該道程序一個段的基本狀況,由若干個欄位提供。段名欄位用於存放段的名稱,段名一般是有其邏輯意義的,也可以轉換成用段號指明。

由於段號從0開始順序編號,正好與段表中的行號對應,如2段必是段表中的第3行,這樣,段表中就可不設段號(名)欄位。

段表中還可以根據需要設置其它的欄位。段表本身也是一個段,一般常駐在主存中,也可以存在輔存中,需要時再調入主存。假設系統在主存中最多可同時有N道程序,可設N個段表基址寄存器。

B. 分段式存儲管理為什麼不回產生內部碎片

首先明確一點,內部碎片是什麼?
內部碎片就是為每個進程分布的內存空間之中所沒有被使用到的內存碎片。通常出現在分頁式存儲管理之中。分頁式是什麼應該很好理解,就是把內存按照分為一頁頁大小相同的頁面,然後再把這些頁面分配給進程。因此,在分配給進程時可能會出現這樣的情況:進程需要3MB,分給他4頁,每頁1MB,這樣4>3,就會造成1MB的內部碎片。
而分段式存儲管理為什麼不會產生內部碎片?歸根結底是由分段本身的定義出發的。如果說分頁式是系統對內存的分割,那麼分段式就是用戶對程序數據的分割。分頁式是沒有任何邏輯意義的,而分段式是有其意義在的。比如說一個程序有主程序段Main類,有通用庫,有數據段,這樣我們就把這個程序分為三段,分別對應Main,庫,數據(說的是最淺顯的,詳細的可以網路其他),是有邏輯意義的獨立單位。都這樣分了,怎麼還會出現內部碎片?反之,如果是分頁式,就可能出現Main類橫跨兩頁,且整個程序裝入內存後還有碎片空間的可能了。
總之,引入分段式存儲管理本就在一定程度上解決了內部碎片,並且滿足了用戶的需求。但是分段式存儲管理也有不足之處,內存利用率變低了。因此又引入之後的段頁式存儲管理方式,這個自己網路就行。
參看計算機操作系統第四版,歡迎指正

C. 段式存儲管理的段式存儲管理的優缺點

在段式存儲管理中,每個段地址的說明為兩個量:一個段名和一個位移。在段內,是連續完整存放的。而在段與段之間是不一定連續編址的。段名和位移構成了一種二維編址。 段式管理是不連續分配內存技術中的一種。其最大特點在於他按照用戶觀點,即按程序段、數據段等有明確邏輯含義的「段」,分配內存空間。克服了頁式的、硬性的、非邏輯劃分給保護和共享與支態伸縮帶來的不自然性。 段的最大好處是可以充分實現共享和保護,便於動態申請內存,管理和使用統一化,便於動態鏈接;其缺點是有碎片問題。

D. 基本分段存儲管理方式的分段存儲管理方式的引入

引入分段存儲管理方式,主要是為了滿足用戶和程序員的下述一系列需要:
1) 方便編程
通常,用戶把自己的作業按照邏輯關系劃分為若干個段,每個段都是從0開始編址,並有自己的名字和長度。因此,希望要訪問的邏輯地址是由段名(段號)和段內偏移量(段內地址)決定的。例如,下述的兩條指令便是使用段名和段內地址:
LOAD 1,[A] |〈D〉;
STORE 1,[B] |〈C〉;
其中,前一條指令的含義是將分段A中D單元內的值讀入寄存器1;後一條指令的含義是將寄存器1的內容存入B分段的C單元中。
2) 信息共享
在實現對程序和數據的共享時,是以信息的邏輯單位為基礎的。比如,共享某個常式和函數。分頁系統中的「頁」只是存放信息的物理單位(塊),並無完整的意義,不便於實現共享;然而段卻是信息的邏輯單位。由此可知,為了實現段的共享,希望存儲管理能與用戶程序分段的組織方式相適應。
3) 信息保護
信息保護同樣是對信息的邏輯單位進行保護,因此,分段管理方式能更有效和方便地實現信息保護功能。
4) 動態增長
在實際應用中,往往有些段,特別是數據段,在使用過程中會不斷地增長,而事先又無法確切地知道數據段會增長到多大。前述的其它幾種存儲管理方式,都難以應付這種動態增長的情況,而分段存儲管理方式卻能較好地解決這一問題。
5) 動態鏈接
動態鏈接是指在作業運行之前,並不把幾個目標程序段鏈接起來。要運行時,先將主程序所對應的目標程序裝入內存並啟動運行,當運行過程中又需要調用某段時,才將該段(目標程序)調入內存並進行鏈接。可見,動態鏈接也要求以段作為管理的單位。

E. 頁式存儲管理和段式存儲管理的區別

段式與頁式存儲管理的比較如下表所示。

段式
頁式

分段由用戶設計劃分,每段對應一個相應的的程序模塊,有完整的邏輯意義。
分頁用戶看不見,由操作系統為內存管理劃分。

段面是信息的邏輯單位
頁面是信息的物理單位

便於段的共享,執行時按需動態鏈接裝入。
頁一般不能共享

段長不等,可動態增長,有利於新數據增長。
頁面大小相同,位置不能動態增長。

二維地址空間:段名、段中地址;段號、段內單元號
一維地址空間

管理形式上象頁式,但概念不同
往往需要多次缺頁中斷才能把所需信息完整地調入內存

實現頁(段)的共享是指某些作業的邏輯頁號(段號)對應同一物理頁號(內存中該段的起始地址)。頁(段)的保護往往需要對共享的頁面(段)加上某種訪問許可權的限制,如不能修改等;或設置地址越界檢查,對於頁內地址(段內地址)大於頁長(段長)的存取,產生保護中斷。

F. 分頁式存儲管理與分段式管理的主要區別是什麼

頁和分段系統有許多相似之處,但在概念上兩者完全不同,主要表現在:

1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。

段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。

2、頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。

段的長度卻不固定,決定於用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。

3、分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。

分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。

G. 示波器為什麼要分段儲存呢

要了解示波器的分段存儲功能,我們先來看看這個功能解決了什麼問題,存在的價值是什麼。

首先我們要明確一點,數字示波器通過ADC模數轉換器將模擬信號轉換成了數字信號,只能努力去還原信號本來的樣子,要想達到100%還原是不可能的,那麼這個還原就肯定會存在誤差,誤差小的時候我們能接受,有時候誤差大了可能信號基本的樣子都變了,那自然不是我們想要的結果。

示波器作為一個系統,影響其測量精度的因素有很多種,其中比較重要的因素就是示波器的帶寬和采樣率,而示波器的采樣率 = 存儲深度 ÷ 波形記錄時長,采樣率的上限和存儲深度是固定的,我們記錄波形的時長如果超過一定程度,由於存儲深度的限制,采樣率就必然相應的也要降低。采樣率下降就有可能導致信號失真。

比如下圖是一個I2C匯流排信號,圖左邊時基是20us,圖右邊時基是20s。可以看到圖左邊是正常的脈沖信號,此時的采樣率是1G Sa/s。圖右邊由於波形記錄時長增加,采樣率下降到了500K Sa/s。

H. 8086/8088CPU使用的存儲器為什麼要分段怎麼分段

8086/8088系統中,存儲器為什麼要分段。

一個段最大為多少位元組。

最小為多少位元組。

解:分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。

一個段最大為64KB,最小為16B。

(8)分段式存儲擴展閱讀:

段的開始地址總是是16的倍數。即:若一個段的起始地址為0000h,那麼另一個段(重疊第一個段)的起始地址將為:0010h(即16),下一個段的起始地址將為0020h(32)。

一個段的段號由其物理地址的前4個16進制數組成。(如:FFFF)

通常,程序只寫出偏移量(從段的第一個位元組到要定位地址的距離),段號可以通過上下文判斷。偏移量大小從0000到FFFF。

I. 基本分段存儲管理方式的分段系統的基本原理

在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段MAIN、子程序段X、數據段D及棧段S等,如圖4-17所示。每個段都有自己的名字。為了實現簡單起見,通常可用一個段號來代替段名,每個段都從0開始編址,並採用一段連續的地址空間。段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間由於是分成多個段,因而是二維的,亦即,其邏輯地址由段號(段名)和段內地址所組成。
分段地址中的地址具有如下結構:
在該地址結構中,允許一個作業最長有 64 K個段,每個段的最大長度為64 KB。分段方式已得到許多編譯程序的支持,編譯程序能自動地根據源程序的情況而產生若干個段。例如,Pascal編譯程序可以為全局變數、用於存儲相應參數及返回地址的過程調用棧、每個過程或函數的代碼部分、每個過程或函數的局部變數等等,分別建立各自的段。類似地,Fortran編譯程序可以為公共塊(Common block)建立單獨的段,也可以為數組分配一個單獨的段。裝入程序將裝入所有這些段,並為每個段賦予一個段號。 為了實現從進程的邏輯地址到物理地址的變換功能,在系統中設置了段表寄存器,用於存放段表始址和段表長度TL。在進行地址變換時,系統將邏輯地址中的段號與段表長度TL進行比較。若S>TL,表示段號太大,是訪問越界,於是產生越界中斷信號;若未越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在內存的起始地址,然後,再檢查段內地址d是否超過該段的段長SL。若超過,即d>SL,同樣發出越界中斷信號;若未越界,則將該段的基址d與段內地址相加,即可得到要訪問的內存物理地址。
下圖示出了分段系統的地址變換過程。
像分頁系統一樣,當段表放在內存中時,每要訪問一個數據,都須訪問兩次內存,從而極大地降低了計算機的速率。解決的方法也和分頁系統類似,再增設一個聯想存儲器,用於保存最近常用的段表項。由於一般情況是段比頁大,因而段表項的數目比頁表項的數目少,其所需的聯想存儲器也相對較小,便可以顯著地減少存取數據的時間,比起沒有地址變換的常規存儲器的存取速度來僅慢約10%~15%。

J. 內存為程序分配空間的四種分配方式

存儲器是個寶貴但卻有限的資源。一流的操作系統,需要能夠有效地管理及利用存儲器。

內存為程序分配空間有四種分配方式:

1、連續分配方式

2、基本分頁存儲管理方式

3、基本分段存儲管理方式

4、段頁式存儲管理方式

首先講連續分配方式。 連續分配方式 出現的時間比較早,曾廣泛應用於20世紀60~70年代的OS中,但是它至今仍然在內存管理方式中佔有一席之地,原因在於它 實現起來比較方便,所需的硬體支持最少 。連續分配方式又可細分為四種: 單一連續分配、固定分區分配、動態分區分配和動態重定位分區分配

其中固定分區的分配方式,因為分區固定,所以缺乏靈活性,即 當程序太小時,會造成內存空間的浪費( 內部碎片 ) 程序太大時,一個分區又不足以容納,致使程序無法運行( 外部碎片 ) 。但盡管如此,當一台計算機去控制多個相同對象的時候,由於這些對象內存大小相同,所以完全可以採用這種內存管理方式,而且是最高效的。這里我們可以看出存儲器管理機制的多面性:沒有那種存儲器管理機制是完全沒有用的,在適合的場合下,一種被認為最不合理的分配方案卻可能稱為最高效的分配方案。 一切都要從實際問題出發,進行設計。

為了解決固定分區分配方式的缺乏靈活性,出現了 動態分配方式 。動態分配方式採用一些 尋表(Eg: 空閑鏈表 ) 的方式,查找能符合程序需要的空閑內存分區。但代價是增加了系統運行的開銷,而且內存空閑表本身是一個文件,必然會佔用一部分寶貴的內存資源,而且有些演算法還會增加內存碎片。

可重定位分區分配通過對程序實現成定位,從而可以將內存塊進行搬移,將小塊拼成大塊,將小空閑「緊湊」成大空閑,騰出較大的內存以容納新的程序進程。

連續分配方式 會形成許多「碎片」,雖然可以通過「緊湊」方式將許多碎片拼接成可用的大塊空間,但須為之付出很大開銷。所以提出了「 離散分配方式 」的想法。如果 離散分配的基本單位是頁 ,則稱為 分頁管理方式 ;如果離散分配的基本單位是段,則稱為 分段管理方式

分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁,並為各頁加以編號,從0開始,如第0頁、第1頁等。相應地,也把內存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如0#塊、1#塊等等。在為進程分配內存時,以塊為單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。由於進程的最後一頁經常裝不滿一塊而形成了不可利用的碎片,稱之為「 頁內碎片 」。

在分頁系統中,允許將進程的各個頁離散地存儲在內存不同的物理塊中(所以能實現離散分配方式) ,但系統應能保證進程的正確運行,即能在內存中找到每個頁面所對應的物理塊。為此,系統又為每個進程建立了一張頁面映像表,簡稱 頁表 。在進程地址空間內的所有頁,依次在頁表中有一頁表項,其中記錄了相應頁在內存中對應的物理塊號。在配置了頁表後,進程執行時,通過查找該表,即可找到每頁在內存中的物理塊號。可見, 頁表的作用是實現從頁號到物理塊號的地址映射

為了能夠將用戶地址空間中的 邏輯地址,變換為內存空間中的物理地址 ,在系統中必須設置 地址變換機構 。地址變換任務是藉助於頁表來完成的。

頁表 的功能可由一組專門的寄存器來實現。由於寄存器成本較高,且大多數現代計算機的頁表又很大,使頁表項總數可達幾千甚至幾十萬個,顯然這些頁表項不可能都用寄存器來實現,因此,頁表大多駐留在內存中。因為一個進程可以通過它的PCB來時時保存自己的狀態,等到CPU要處理它的時候才將PCB交給寄存器,所以,系統中雖然可以運行多個進程,但也只需要一個頁表寄存器就可以了。

由於 頁表是存放在內存中 的,這使得 CPU在每存取一個數據時,都要兩次訪問內存 。為了提高地址變換速度,在地址變化機構中增設了一個 具有並行查詢能力的高速緩沖寄存器 ,又稱為「聯想寄存器」(Associative Lookaside Buffer)。

在單級頁表的基礎上,為了適應非常大的邏輯空間,出現了兩級和多級頁表,但是,他們的原理和單級頁表是一樣的,只不過為了適應地址變換層次的增加,需要在地址變換機構中增設外層的頁表寄存器。

分段存儲管理方式 的目的,主要是為了滿足用戶(程序員)在編程和使用上多方面的要求,其中有些要求是其他幾種存儲管理方式所難以滿足的。因此,這種存儲管理方式已成為當今所有存儲管理方式的基礎。

分段管理方式和分頁管理方式在實現思路上是很相似的,只不過他們的基本單位不同。分段有 段表 ,也有 地址變換機構 ,為了提高檢索速度,同樣增設 聯想寄存器(具有並行查詢能力的高速緩沖寄存器) 。所以有些具體細節在這個不再贅述。

分頁和分段的主要區別:

1、兩者相似之處:兩者 都採用離散分配方式,且都要通過地址映射機構來實現地址變換

2、兩者的不同之處:

(1)頁是信息的 物理單位 ,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率。或者說,分頁僅僅是由於 系統管理的需要 而不是用戶的需要。段則是信息的 邏輯單位 ,它含有一組其意義相對完整的信息。 分段的目的是為了能更好地滿足用戶的需要

(2) 頁的大小固定 且由系統決定,而 段的長度卻不固定

(3)分頁的作業地址空間是 一維 的,即單一的線性地址空間;而分段的作業地址空間則是 二維 的。

前面所介紹的分頁和分段存儲管理方式都各有優缺點。 分頁系統能有效地 提高內存利用率 ,而分段系統則能很好地 滿足用戶需求 。 我們希望能夠把兩者的優點結合,於是出現了段頁式存儲管理方式。

段頁式系統的基本原理,是分段和分頁原理的結合,即 先將用戶程序分成若干個段,再把每個段分成若干個頁 ,並為每一個段賦予一個段名。在段頁式系統中,地址結構由段號、段內頁號和頁內地址三部分組成。

和前兩種存儲管理方式相同,段頁式存儲管理方式同樣需要增設聯想寄存器。

離散分配方式 基於將一個進程直接分散地分配到許多不相鄰的分區中的思想,分為分頁式存儲管理,分段式存儲管理和段頁式存儲管理. 分頁式存儲管理旨在提高內存利用率,滿足系統管理的需要,分段式存儲管理則旨在滿足用戶(程序員)的需要,在實現共享和保護方面優於分頁式存儲管理,而段頁式存儲管理則是將兩者結合起來,取長補短,即具有分段系統便於實現,可共享,易於保護,可動態鏈接等優點,又能像分頁系統那樣很好的解決外部碎片的問題,以及為各個分段可離散分配內存等問題,顯然是一種比較有效的存儲管理方式。

更多Linux內核視頻教程文檔資料免費領取【 內核 】自行獲取。

內核學習網站:

Linux內核源碼/內存調優/文件系統/進程管理/設備驅動/網路協議棧-學習視頻教程-騰訊課堂

熱點內容
40款方舟編譯過的軟體 發布:2024-05-10 17:24:45 瀏覽:481
java在人工智慧 發布:2024-05-10 17:23:11 瀏覽:907
minecraft基岩版搭建伺服器 發布:2024-05-10 17:22:30 瀏覽:323
傳播源碼罪 發布:2024-05-10 17:22:07 瀏覽:398
linux負載命令 發布:2024-05-10 17:18:49 瀏覽:609
move拒絕訪問 發布:2024-05-10 17:18:47 瀏覽:491
邁騰怎麼連接安卓carplay 發布:2024-05-10 17:07:44 瀏覽:723
linux伺服器io怎麼查 發布:2024-05-10 17:07:41 瀏覽:609
是會吃編程 發布:2024-05-10 17:06:59 瀏覽:357
怎麼剪輯水印安卓 發布:2024-05-10 17:06:57 瀏覽:539