分段存儲單位
1. 在微型計算機中,存儲容量的基本單位是什麼
計算機存儲容量的基本單位是位元組,用b表示。
2. 分段存儲管理需提供二維地址
一. 分頁存儲管理
1.基本思想
用戶程序的地址空間被劃分成若干固定大小的區域,稱為「頁」,相應地,內存空間分成若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配。
2. 分頁存儲管理的地址機構
15 12 11 0
頁號P 頁內位移量W
頁號4位,每個作業最多2的4次方=16頁,表示頁號從0000~1111(24-1),頁內位移量的位數表示頁的大小,若頁內位移量12位,則2的12次方=4k,頁的大小為4k,頁內地址從000000000000~111111111111
若給定一個邏輯地址為A,頁面大小為L,則
頁號P=INT[A/L],頁內地址W=A MOD L
3. 頁表
分頁系統中,允許將進程的每一頁離散地存儲在內存的任一物理塊中,為了能在內存中找到每個頁面對應的物理塊,系統為每個進程建立一張頁面映射表,簡稱頁表。頁表的作用是實現從頁號到物理塊號的地址映射。
頁表:
頁號 物理塊號 存取控制
0 2
1 15(F)
2 14(E)
3 1
4. 地址變換
(1) 程序執行時,從PCB中取出頁表始址和頁表長度(4),裝入頁表寄存器PTR。
(2) 由分頁地址變換機構將邏輯地址自動分成頁號和頁內地址。
例:11406D=0010|110010001110B=2C8EH
頁號為2,位移量為C8EH=3214D
或11406 DIV 4096=2
11406 MOD 4096=3214
(3) 將頁號與頁表長度進行比較(2<4),若頁號大於或等於頁表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(4) 將頁表始址與頁號和頁表項長度的乘積相加,便得到該頁表項在頁表中的位置。
(5) 取出頁描述子得到該頁的物理塊號。 2 14(E)
(6) 對該頁的存取控制進行檢查。
(7) 將物理塊號送入物理地址寄存器中,再將有效地址寄存器中的頁內地址直接送入物理地址寄存器的塊內地址欄位中,拼接得到實際的物理地址。
例:0010|110010001101B
1110|110010001101B=EC8EH=60558D
或 14*4096+3214=60558D
5. 具有快表的地址變換機構
分頁系統中,CPU每次要存取一個數據,都要兩次訪問內存(訪問頁表、訪問實際物理地址)。為提高地址變換速度,增設一個具有並行查詢能力的特殊高速緩沖存儲器,稱為「聯想存儲器」或「快表」,存放當前訪問的頁表項。
二.分段存儲管理
1.基本思想
將用戶程序地址空間分成若干個大小不等的段,每段可以定義一組相對完整的邏輯信息。存儲分配時,以段為單位,段與段在內存中可以不相鄰接,也實現了離散分配。
2. 分段存儲方式的引入
方便編程
分段共享
分段保護
動態鏈接
動態增長
3. 分段地址結構
作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。常式序段、數據段等。每個段都從0開始編址,並採用一段連續的地址空間。
段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間是二維的。
15 12 11 0
段號 段內位移量
段號4位,每個作業最多24=16段,表示段號從0000~1111(24-1);段內位移量12位,212=4k,表示每段的段內地址最大為4K(各段長度不同),從000000000000~111111111111
4. 段表
段號 段長 起始地址 存取控制
0 1K 4096
1 4K 17500
2 2K 8192
5. 地址變換
(1). 程序執行時,從PCB中取出段表始址和段表長度(3),裝入段表寄存器。
(2). 由分段地址變換機構將邏輯地址自動分成段號和段內地址。
例:7310D=0001|110010001110B=1C8EH
段號為1,位移量為C8EH=3214D
(3). 將段號與段表長度進行比較(1<3),若段號大於或等於段表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(4). 將段表始址與段號和段表項長度的乘積相加,便得到該段表項在段表中的位置。
(5). 取出段描述子得到該段的起始物理地址。1 4K 17500
(6). 檢查段內位移量是否超出該段的段長(3214<4K),若超過,產生越界中斷。
(7). 對該段的存取控制進行檢查。
(8). 將該段基址和段內地址相加,得到實際的物理地址。
例:0001|110010001101B
起始地址17500D+段內地址3214D=20714D
三.分頁與分段的主要區別
分頁和分段有許多相似之處,比如兩者都不要求作業連續存放.但在概念上兩者完全不同,主要表現在以下幾個方面:
(1)頁是信息的物理單位,分頁是為了實現非連續分配,以便解決內存碎片問題,或者說分頁是由於系統管理的需要.段是信息的邏輯單位,它含有一組意義相對完整的信息,分段的目的是為了更好地實現共享,滿足用戶的需要.
(2)頁的大小固定,由系統確定,將邏輯地址劃分為頁號和頁內地址是由機器硬體實現的.而段的長度卻不固定,決定於用戶所編寫的程序,通常由編譯程序在對源程序進行編譯時根據信息的性質來劃分.
(3)分頁的作業地址空間是一維的.分段的地址空間是二維的.
四.段頁式存儲管理
1.基本思想:
分頁系統能有效地提高內存的利用率,而分段系統能反映程序的邏輯結構,便於段的共享與保護,將分頁與分段兩種存儲方式結合起來,就形成了段頁式存儲管理方式。
在段頁式存儲管理系統中,作業的地址空間首先被分成若干個邏輯分段,每段都有自己的段號,然後再將每段分成若干個大小相等的頁。對於主存空間也分成大小相等的頁,主存的分配以頁為單位。
段頁式系統中,作業的地址結構包含三部分的內容:段號 頁號 頁內位移量
程序員按照分段系統的地址結構將地址分為段號與段內位移量,地址變換機構將段內位移量分解為頁號和頁內位移量。
為實現段頁式存儲管理,系統應為每個進程設置一個段表,包括每段的段號,該段的頁表始址和頁表長度。每個段有自己的頁表,記錄段中的每一頁的頁號和存放在主存中的物理塊號。
2.地址變換的過程:
(1)程序執行時,從PCB中取出段表始址和段表長度,裝入段表寄存器。
(2)由地址變換機構將邏輯地址自動分成段號、頁號和頁內地址。
(3)將段號與段表長度進行比較,若段號大於或等於段表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(4)將段表始址與段號和段表項長度的乘積相加,便得到該段表項在段表中的位置。
(5)取出段描述子得到該段的頁表始址和頁表長度。
(6)將頁號與頁表長度進行比較,若頁號大於或等於頁表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(7)將頁表始址與頁號和頁表項長度的乘積相加,便得到該頁表項在頁表中的位置。
(8)取出頁描述子得到該頁的物理塊號。
(9)對該頁的存取控制進行檢查。
(10)將物理塊號送入物理地址寄存器中,再將有效地址寄存器中的頁內地址直接送入物理地址寄存器的塊內地址欄位中,拼接得到實際的物理地址。
3. 存儲器的分段
這里很清楚啊。CPU的地址線是20位,低4位必須為0,那麼就剩下16位可以用來分段。2的16次方正好是64K.這就是答案了。
4. 存儲器的一個段最小為多少位元組
分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。一個段最大為64KB,最小為16B
5. 什麼是分段存儲管理
頁和分段系統有許多相似之處,但在概念上兩者完全不同,主要表現在: 1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。 段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。 2、頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。 段的長度卻不固定,決定於用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。 3、分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。 分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。
6. 分頁和分段存儲管理有何區別
基本分段存儲管理方式和基本分頁存儲管理方式二者的理論基礎都是相對差不多的,二者都是建立在內存分區管理思想和程序局部性原理的基礎之上。 基本分頁存儲管理方式在存儲器管理中,連續分配方式會形成許多「碎片」,雖然可通過「緊湊」方法將許多碎片拼接成可用的大塊空間,但須為之付出很大開銷。 在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段MAIN、子程序段X、數據段D及棧段S等。基本分段存儲管理方式和基本分頁存儲管理方式原理的結合就是段頁式系統的基本原理,即先將用戶程序分成若干個段,再把每個段分成若干個頁,並為每一個段賦予一個段名。頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對完整的信息。頁和分段系統有許多相似之處,但在概念上兩者完全不同,主要表現在: 1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。 段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。 2、頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。
7. 8086/8088系統中,存儲器為什麼要分段,一個段的最大和最小各為多少位元組
8086/8088系統中,存儲器分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。一個段最大為64KB,最小為16B。
存儲器一般用來保存程序的中間結果,為隨後的指令快速提供操作數,從而避免把中間結果存入內存,再讀取內存的操作。
由於存儲器的個數和容量都有限,不可能把所有中間結果都存儲在存儲器中,所以,要對存儲器進行適當的調度。根據指令的要求,管理安排適當的寄存器,避免操作數過多的傳送操作。
8086/8088CPU可直接定址1MB的存儲器空間,直接定址需要20位地址碼,而所有內部寄存器都是16位的,只能直接定址6KB,因此採用分段技術來解決。將1MB的存儲空間分成若干邏輯段,每段最長64KB,最短16B。這些邏輯段在整個存儲空間中可浮動。
(7)分段存儲單位擴展閱讀:
8086/8088CPU內部設置了4個16位段寄存器,它們分別是代碼段寄存器CS、數據段寄存器DS、堆棧段寄存器SS、附加段寄存器ES、由它們給出相應邏輯段的首地址,稱為「段基址」。段基址與段內偏移地址組合形成20位物理地址,段內偏移地址可以存放在寄存器中,也可以存放在存儲器中。
程序較小時,代碼段、數據段、堆棧段可放在一個段內,即包含在64KB之內,而當程序或數據量較大時,超過了64KB,那麼可以定義多個代碼段或數據段、堆棧段、附加段。
8. 內存為什麼要分段 分成多少種段 段與段寄存器的區別
樓上已經講得很完善了,我這里說一下段寄存器:它是專門存放段地址的寄存器,有代碼段CS (存放偏移地址寄存器 IP 註:這是8086和8088的 80386前面加一個E以後類推 )數據段DS (SP BP)堆棧段SS(BX DI SI 或一個16位數) 附加段ES(DI 用於串指令) (還有FS GS)它們各自都有一個確定的段起始地址,用途也各不一樣,代碼段存放正在運行的程序,數據段存放當前運行程序的數據,堆棧是一種數據結構,堆棧段定義了堆棧的所在區域,附加段就是附加的數據段。段和段寄存器的關系:程序員在編製程序時,應該按照上述規定(什麼放什麼)把程序的各部分放在規定的段區之內,每個段獨立地佔用64KB的存儲區。為什麼要分段?很明顯是為了便於管理,這里有個名詞叫「分段儲存管理」(還有分頁),目的是為了滿足用戶(程序員)在編程和使用方面的要求,比如用戶把自己的作業按照邏輯關系劃分成若干個段,每個段都是從0開始編制,因此希望要訪問的邏輯地址是由段名(段號)和段內偏移量(段內地址)決定,所以是非常必要的。 查看原帖>>
9. 分頁和分段存儲管理有何區別
答:主要區別表現在以下三個方面:
(1) 頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率。段則是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好地滿足用戶的需要。
(2) 頁的大小固定且由系統決定;而段的長度卻不固定,決定於用戶所編寫的程序。
(3) 分頁的地址空間是一維的,程序員只需利用一個記憶符,即可表示一個地址;而分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。
10. 基本分段存儲管理方式的分段存儲管理方式的引入
引入分段存儲管理方式,主要是為了滿足用戶和程序員的下述一系列需要:
1) 方便編程
通常,用戶把自己的作業按照邏輯關系劃分為若干個段,每個段都是從0開始編址,並有自己的名字和長度。因此,希望要訪問的邏輯地址是由段名(段號)和段內偏移量(段內地址)決定的。例如,下述的兩條指令便是使用段名和段內地址:
LOAD 1,[A] |〈D〉;
STORE 1,[B] |〈C〉;
其中,前一條指令的含義是將分段A中D單元內的值讀入寄存器1;後一條指令的含義是將寄存器1的內容存入B分段的C單元中。
2) 信息共享
在實現對程序和數據的共享時,是以信息的邏輯單位為基礎的。比如,共享某個常式和函數。分頁系統中的「頁」只是存放信息的物理單位(塊),並無完整的意義,不便於實現共享;然而段卻是信息的邏輯單位。由此可知,為了實現段的共享,希望存儲管理能與用戶程序分段的組織方式相適應。
3) 信息保護
信息保護同樣是對信息的邏輯單位進行保護,因此,分段管理方式能更有效和方便地實現信息保護功能。
4) 動態增長
在實際應用中,往往有些段,特別是數據段,在使用過程中會不斷地增長,而事先又無法確切地知道數據段會增長到多大。前述的其它幾種存儲管理方式,都難以應付這種動態增長的情況,而分段存儲管理方式卻能較好地解決這一問題。
5) 動態鏈接
動態鏈接是指在作業運行之前,並不把幾個目標程序段鏈接起來。要運行時,先將主程序所對應的目標程序裝入內存並啟動運行,當運行過程中又需要調用某段時,才將該段(目標程序)調入內存並進行鏈接。可見,動態鏈接也要求以段作為管理的單位。