基本分段儲存管理方式

2021-07-14 05:04:07 字數 3626 閱讀 7408

1、分段儲存管理方式的引入

---- 引入分段儲存管理方式,主要是為了滿足使用者和程式設計師的下述一系列需要:

1)方便程式設計

通常,使用者把自己的作業按照邏輯關係劃分為若干個段,每個段都是從0開始編址,並有自己的名字長度

因此,希望要訪問的邏輯位址是由段名(段號)和段內偏移量(段內位址)決定的。

2)資訊共享

在實現對程式和資料的共享時,是以資訊的邏輯單位為基礎的。比如共享某個例程和函式,分頁系統中的「頁」只是存放資訊的物理單位(塊),

並無完整的意義,不便於實現共享,然而段卻是資訊的邏輯單位

3)資訊保護

資訊保護同樣是對資訊的邏輯單位進行保護,因此,分段管理方式能更有效和方便的實現資訊保護功能。

4)動態增長

在實際應用中,往往有些段,特別是資料段,在使用過程中會不斷地增長,而事先又無法確切地知道資料段會增長到多大。前面的幾種儲存

管理方式都難以應付這種動態增長的情況,分段儲存管理方式能較好的解決這一問題。

5)動態鏈結

動態鏈結是指在作業執行之前,並不把幾個目標程式段鏈結起來。要執行時,先將主程式所對應的目標程式裝入記憶體並啟動執行,當執行過程

中又需要呼叫某段時,才將該段(目標程式)調入記憶體並進行鏈結。可見,動態鏈結也要求以段作為管理的單位。

2、分段和段表

---- 在分段儲存管理方式中,作業的位址空間被劃分為若干個段,每個段定義了一組邏輯資訊。每個段都有自己的名字,通常可用乙個段號

代替段名,每個段都從0開始編址,並採用一段連續的位址空間。段的長度由相應的邏輯資訊組的長度決定,因而各段長度不等。整個作業的

位址空間分成多個段,是二維的

---- 在動態分割槽(可變分割槽)分配方式中,系統為整個程序分配乙個連續的記憶體空間。而在分段式儲存管理系統中,則是為每個分段分配乙個

連續的分割槽,而程序中的各個段可以離散地裝入記憶體中不同的分割槽中。為使程式能正常執行,即能從物理記憶體中找出每個邏輯段所對應的位置,

應像分頁系統那樣,在系統中為每個程序建立一張段對映表,簡稱「段表」。

---- 每個段在表中占有乙個表項,其中記錄了該段在記憶體中的起始位址(「基址」)和段長(位元組)。段表一般放在記憶體中。在配置了段表後,

執行中的程序可通過查詢段表找到每個段所對應的記憶體區。可見,段表是用於實現從邏輯段物理記憶體區的對映。

3、位址變換機構

---- 為了實現從程序的邏輯位址到實體地址的變換功能,在系統中設定了段表暫存器,用於存放段表始址段表長度tl。在進行位址變換時,

系統將邏輯位址中的段號s(0~tl-1)段表長度tl進行比較。--  若s>=tl,表示段號太大,是訪問越界,於是產生越界中斷訊號;

----  若未越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置(段表的始址+段號x段表項的長度),從中讀出該段在記憶體的

起始位址,然後再檢查段內位址d是否超過該段的段長sl。若超過,即d>sl,同樣發出越界中斷訊號;若未越界,則將該段的基址段內位址d

相加,即可得到要訪問的記憶體實體地址

---- 像分頁系統一樣,當段表放在記憶體中時,每當要訪問乙個資料,都需訪問兩次記憶體(第一次是得到實體地址,第二次是從位址中取資料),

從而極大地降低了計算機的速率。解決方法是再增設乙個聯想儲存器(tlb),用於儲存最近常用的段表項。一般情況下是段比頁大,因而

段表項的數目比頁表項的數目少,需要的tlb也相對較小,可以顯著的減少訪問資料的時間。

4、分頁和分段的主要區別

---- 分頁和分段系統都採用離散分配方式,且都要通過位址對映機構來

-- 1)頁是資訊的物理單位,分頁是為實現離散分配方式,消減外部碎片,提高記憶體的利用率。分頁僅僅是由於系統管理的需要而不是使用者的需要。

段則是資訊的邏輯單位,它含有一組其意義相對完整的資訊。分段的目的是為了更好的滿足使用者的需要。

-- 2)頁的大小固定且由系統決定,由系統把邏輯位址劃分為頁號和頁內位址兩部分,是由機器硬體實現的,因而在系統中只能有一種大小的頁面;

段的長度不固定,決定於使用者所編寫的程式,通常由編譯程式在對源程式進行編譯時,根據資訊的性質來劃分。

-- 3)分頁的作業位址空間是一維的,即單一的線性位址空間,程式設計師只需利用乙個記憶符,即可表示乙個位址;而分段的作業位址空間是二維的

程式設計師在標識乙個位址時,既需給出段名,又需給出段內位址。

5、資訊共享

---- 段的共享:即允許若干個程序共享乙個或多個分段。

----可重入**(reentrant code)又稱為「純**」(pure code),是一種允許多個程序同時訪問的**。為使各個程序所執行的**完全相同,

絕對不允許可重入**在執行中有任何改變。因此,可重入**是一種不允許任何程序對它進行修改的**

---- 但事實上,大多數**在執行時都可能有些改變,例如,用於控制程式執行次數的變數以及指標、訊號量及陣列等。為此,在每個程序中,都必

須配以區域性資料區,把在執行中可能改變的部分拷貝到該資料區,這樣,程式在執行時,只需對該資料區(屬於該程序私有)中的內容進行修改,並

不去改變共享的**,這時的可共享**即成為可重入碼。

基本分段儲存管理方式

程序的位址空間 按照程式自身的邏輯關係劃分為若干個段,每個段都有乙個段名 在低階語言中,程式設計師使用段名來程式設計 每段從0開始編址 記憶體分配規則 以段為單位進行分配,每個段在記憶體中佔據連續空間,但各段之間可以不相鄰。頁是資訊的物理單位。分頁的主要目的是為了實現離散分配,提高記憶體利用率。分頁...

10 基本分段儲存管理方式

分頁和分段 的主要區別 a 頁是資訊的物理單位,分頁是為實現離散分配方式,以消減記憶體的外零頭,提高記憶體的利用率 段則是資訊的邏輯單位,它含有一組其意義相對完整的資訊,分段的目的是為了能更好地滿足使用者的需要。b 頁的大小固定且由系統決定,由系統把邏輯位址劃分為頁號和頁內位址兩部分,是由機器硬體實...

基本分段式儲存管理方式

1.記錄邏輯段到實際儲存位址的對映關係 2.每個段對應乙個段表項,各段表項長度相同,由段號 隱含 段長 基址組成 1.由邏輯位址得到段號 段內位址 2.段號與段表暫存器中的段長度進行比較,檢查是否越界 3.由段表起始位址 段號找到對應的段表項 4.根據段表中記錄的段長,檢查段內位址是否越界 5.由段...