什麼是分段存儲管理
『壹』 內存為什麼要分段 分成多少種段 段與段寄存器的區別
8086CPU有20根地址線,最大可定址內存空間為1MB。而8086的寄存器只有16位,指令指針(IP)和變址寄存器(SI、DI)也是16位的。用16位的地址定址1MB空間是不可能的。所以就要把內存分滲薯頃段,也就是把1MB空間分為若干個段,每段不超過64KB,在8086中叢陸設置4個16位的段寄存器,用於管理4種段:CS是代碼段,DS是數據段,SS是堆棧段,ES是附加段。
把內存分段後,每一個段就有一個段基址,段寄存器保存的就是這個段基址的高16位,這個16位的地址左移四位(後面加手埋上4個0)就可構成20位的段基址。
『貳』 基本分段存儲管理方式的分段系統的基本原理
在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段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%。
『叄』 在操作系統中,如何理解分頁、分段的定義兩者之間的區別又是什麼
分頁就是將進程的邏輯地址空間分成若物閉干大小相等的片(即頁),然後裝入內存。
分段就是用戶可以把自己的作業按邏輯關系劃分為若干個段,每個段都是從0開始編址,並有自己的名字和長度。這就相當於程序里邊的主函數段、各個子函數段、數據段、棧段等等。
要知道在引入分頁和分段之前,是通過連續分配方式來管理存儲器的,就是說一個進程在內存中是連續存放的。
可以這樣理解吧,內存中有進程1、2、3……進程2先罩迅裂執行完成了,然後釋放了所佔有的內存空間,而之後,
如果新調入的進程內存需求大於之前2所佔有的內存空間,那麼不可能利用這塊內存,相對於內存需求更大的進程來說,之前2所佔有的內存空間就是不能利用的碎片,
如果新調入的進程內存需求小於之前2所佔有的空間就會留下空隙,也會帶來碎片。
雖然可以通過「緊湊」的方法進行碎片整理,但開銷很大這就產生了與連續分配方式相對的離散分配方式,便先後引入了分頁和分段存儲管理。
所以相同點就是,兩者都屬於存儲器管理方式中的離散分配方式。都要通過地址映射機構來實現地址變換。
不同點就在於,離散分配方式的基本單位的不同,是頁還是段。
頁是信息的物理單位,段是信息的邏輯單位。
分頁的作業地址空間是一維的,線性的,程序員只需利用一個記憶符表示一個地址;而分段的作業地址空間是二維的,程序員在表示一個地址的時候既要給出段名,又需要給出段內地址。其中,段名可以理解為函數名等,段內地址可以理解程變數等的地址。
值得一提的是其中頁的大小昌蘆要和物理塊或者頁框一樣,而物理塊是操作系統定好了的。也就是說你的操作系統裝完之後,物理塊的大小是定了的,從而頁的大小也是定了的。而段的長度是不定的。
引入分頁存儲管理方式的目的是提高內存利用率,而引入分段存儲是為了滿足用戶(程序員)在編程和使用上多方面上的要求。還有將兩者結合一起的段頁式系統。
『肆』 分頁和分段存儲管理相同點是什麼
基本分段存儲管理方式和基本分頁存儲管理方式二者的理論基礎都是相對差不多的,二者都是建立在內存分區管理思想和程序局部性原理的基礎之上。
基本分頁存儲管理方式在存儲器管理中,連續分配方式會形成許多「碎片」,雖然可通過「緊湊」方法將許多碎片拼接成可用的大租扮此塊空間,但須為之付出很大開銷。
在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段MAIN、子程序段X、數據段D及棧段S等。
(4)什麼是分段存儲管理擴展閱讀:
基本分段存儲管理弊迅方式和基本分頁存儲管理方式原理的結合就是段頁式系統的基本原理,即先將用戶程缺逗序分成若干個段,再把每個段分成若干個頁,並為每一個段賦予一個段名。
在段頁式系統中,為了便於實現地址變換,須配置一個段表寄存器,其中存放段表始址和段表長TL。進行地址變換時,首先利用段號S,將它與段表長TL進行比較。
『伍』 什麼是分段存儲管理
頁和分段系統有許多相似之處,但在概念上兩者完全不同,主要表現在: 1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。 段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。 2、頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。 段的長度卻不固定,決定於用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。 3、分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。 分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。
『陸』 基本分段存儲管理方式的分段存儲管理方式的引入
引入分段存儲管理方式,主要是為了滿足用戶和程序員的下述一系列需要:
1) 方便編程
通常,用戶把自己的作業按照邏輯關系劃分為若干個段,每個段都是從0開始編址,並有自己的名字和長度。因此,希望要訪問的邏輯地址是由段名(段號)和段內偏移量(段內地址)決定的。例如,下述的兩條指令便是使用段名和段內地址:
LOAD 1,[A] |〈D〉;
STORE 1,[B] |〈C〉;
其中,前一條指令的含義是將分段A中D單元內的值讀入寄存器1;後一條指令的含義是將寄存器1的內容存入B分段的C單元中。
2) 信息共享
在實現對程序和數據的共享時,是以信息的邏輯單位為基礎的。比如,共享某個常式和函數。分頁系統中的「頁」只是存放信息的物理單位(塊),並無完整的意義,不便於實現共享;然而段卻是信息的邏輯單位。由此可知,為了實現段的共享,希望存儲管理能與用戶程序分段的組織方式相適應。
3) 信息保護
信息保護同樣是對信息的邏輯單位進行保護,因此,分段管理方式能更有效和方便地實現信息保護功能。
4) 動態增長
在實際應用中,往往有些段,特別是數據段,在使用過程中會不斷地增長,而事先又無法確切地知道數據段會增長到多大。前述的其它幾種存儲管理方式,都難以應付這種動態增長的情況,而分段存儲管理方式卻能較好地解決這一問題。
5) 動態鏈接
動態鏈接是指在作業運行之前,並不把幾個目標程序段鏈接起來。要運行時,先將主程序所對應的目標程序裝入內存並啟動運行,當運行過程中又需要調用某段時,才將該段(目標程序)調入內存並進行鏈接。可見,動態鏈接也要求以段作為管理的單位。
『柒』 為什麼8086對存儲器要採用分段管理
8086是一個16位的結構,採用分段管理辦法可形成超過16位的存儲器物理地址,擴大對存儲器的定址范圍(1MB,20位地址)。
這兩個地址都是16位的,將這兩個地址採用相加的方式組成20位地址去訪問存儲器。在8086系統的地址形成中,當段地址確定後,該段的定址范圍就已經確定,其容量不大於64KB。同時,通過修改段寄存器內容,可達到邏輯段在整個1MB存儲空間中浮動。
擴展祥昌資料:
8086處理器的時鍾頻率介於4.77MHz(在原先的IBM PC頻率)和10 MHz之間。8086 沒有包含浮點指令部分(FPU),但是可以通過外接數學輔謹改扒助處理器來增強浮點計算能力。Intel 8087 是標准版本。
分殲培段管理是管理若干分段組成的作業,且按分段來進行存儲分配。實現分段管理的關鍵在於,如何保證分段(二維)地址空間中的一個作業在線性(一維)的存儲空間中正確運行。也就是說,如何把分段地址結構變換成線性的地址結構。