內存管理的基本原理和要求的解釋

一:內存管理的概念

  內存管理(Memory Management)是操作系統中最重要和最複雜的內容之一。隨着計算機硬件的飛速發展,內存容量也在不斷增長,但是現在的軟件大小也在不斷增長並且增長的很快,不可能將所有用戶進程和系統所需要的全部程序和數據放入主存中,因此操作系統必須對內存空間進行合理的劃分和有效的動態分配,這就是內存管理的概念。

  有效的內存管理在多道程序設計中非常有用,它不僅可以方便用戶對內存的管理,還可以有效提高計算機內存的利用率,還可以通過虛擬技術在邏輯上擴充內存。

內存管理的功能有:

  • 內存空間的分配和回收 由操作系統直接負責內存的分配和回收,減輕程序員的負擔,使編程效率變得更高。
  • 地址轉換 由於在多道程序環境下,程序的物理地址和邏輯地址有可能不一致,這時就需要地址轉換來把邏輯地址轉換成真實的物理地址
  • 內存空間的擴充 利用虛擬存儲技術或自動覆蓋技術來實現內存的邏輯上的擴充。
  • 存儲保護 保證各道程序在自己的內存空間中運行,互不干擾。

二:進程運行的基本原理和要求

  創建進程首先要將程序和數據裝入內存,將用戶程序變爲可在內存中運行的程序,通常需要以下幾個步驟:

(1)編譯 由編譯程序將用戶源代碼編譯成若干目標模塊

(2)鏈接 由鏈接程序將編譯後形成的一組目標模塊和庫函數鏈接在一起,形成有一個完整的裝入模塊

(3) 裝入 由裝入程序將裝入模塊裝入內存運行

 

 

  • 程序的鏈接有三種方式

(1)靜態鏈接 先將各目標模塊以及它們的庫函數鏈接成一個完整的可執行程序,以後不再拆開

(2)裝入時動態鏈接  將用戶源程序編譯後所得到的一組模塊,在裝入內存時,採用邊裝入邊鏈接的方法

(3)運行時動態鏈接 對某些目標模塊的鏈接,是在程序執行該模塊時才需要進行的,方便進行修改和更新,便於實現對目標模塊的共享

 

  • 內存的裝入模塊在裝入內存時的三種方式

(1)絕對裝入

在編譯時,若知道程序在內存的位置,則編譯程序將直接產生絕對地址的目標代碼。 絕對裝入程序按照裝入模塊中的地址,把程序和數據裝入內存,由於程序中的邏輯地址與實際內存中的地址完全相同,所以不需要對程序和數據的地址進行修改。

 絕對裝入只適用於單道程序環境。在程序中所使用的絕對地址,是在編譯或彙編時進行轉換的,也可由程序員直接賦予。通常情況下,程序中採用的是符號地址,而在編譯或者彙編時轉化爲絕對地址。

 (2)可重定位裝入  

在多道程序環境下,多個目標模塊的起始地址都是從0開始的,程序中的其它地址都是相對於始址的,此時應採用可重定位裝入的方式。在裝入內存時,將裝入模塊裝入內存中合適的位置。在裝入過程中,對程序和數據的地址的修改的過程稱爲重定位,又因爲是一次性裝入,又稱爲靜態重定位。

靜態重定位的特點是:一個作業在裝入內存時,必須給它分配足夠的空間,若沒有,則不能裝入該作業。此外,一旦作業唄被入內存,整個運行期間就不能在內存中移動,也不能申請新的內存空間。

(3)動態運行時裝入

動態運行時裝入,又稱動態重定位。程序若是在內存中發生移動,可以採用動態的裝入方式來解決,程序裝入程序將程序 的裝入模塊裝入內存時,並不直接轉換爲絕對地址,而是採用相對地址,直到程序真正開始執行時才轉換爲絕對地址。但是這種方式需要一個重定位寄存器。

動態重定位的特點是,可以將程序分配到不連續的存儲空間,在程序運行之前,只裝入它的部分代碼即可投入運行,然後在程序運行期間,根據它的需要,動態的申請分配內存,這樣便於程序段的共享,也可以向用戶提供一個比內存空間大的多的內存空間。

三 邏輯地址空間與物理地址空間

編譯後,每個目標模塊的地址都是從0號單元開始編址,這稱爲該目標模塊的相對地址或者邏輯地址。當鏈接程序將各個目標模塊鏈接成一個可執行的完整的目標程序時,鏈接程序順序將每個目標模塊的相對地址構成統一的從0號單元開始編址的邏輯空間。用戶和程序員只需知道邏輯地址,而內存的管理機制則是完全透明的,而邏輯地址的轉換則由系統編程人員纔會涉及。不同進程可以有相同的邏輯地址,因爲這些相同的邏輯地址可以映射成不同的實際地址。

物理地址空間是指內存中的物理單元集合,它是地址轉換的最終地址。程序執行指令和訪問數據時,最後都要從物理地址中存取。當裝入程序將可執行代碼裝入內存後,必須通過地址轉換將邏輯地址轉換成物理地址,這個過程稱爲地址重定位。

四 內存保護

內存分配前,需要保護操作系統不受用戶進程的影響,也要博湖用戶基金從不受其它用戶進程的影響。

(1)在CPU中設置一對上下限寄存器,分別存方用戶作業在內存中的上限地址和下限地址,每當CPU要訪問一個地址時,分別與兩個寄存器的值想比較,判斷是否越界。

(2)採用重定位寄存器(或界址寄存器)和界地址寄存器(限長寄存器)來實現這種保護

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章