1.程序的裝入和鏈接
1)程序的裝入和鏈接
(1)地址的概念
邏輯地址(相對地址,虛地址)
物理地址(絕對地址,實地址)
地址映射:將用戶程序中的邏輯地址轉換為運行時由機器直接尋址的內存物理地址的過程。
(2)程序裝入中的地址處理
①絕對裝入方式
優點:裝入過程簡單。不需任何地址變換,程序中的邏輯地址與實際內存物理地址完全相同。
缺點:過于依賴硬件結構, 只適用早期針對硬件直接編程、單道環境下。
②靜態可重定位裝入
優點:不需硬件支持,可以裝入有限的多道程序
缺點:軟件裝入一次完成,一個程序通常需要占用連續的內存空間,程序裝入內存后不能移動。也不易實現共享。
③動態運行時(重定位)裝入方式
實現時一般依靠硬件地址變換機構——一個重定位寄存器。
程序裝入內存時,可多次重定位到不同位置。且可以不立即把裝入模塊中的相對地址轉換為絕對地址,而是把這種地址轉換推遲到程序真正要執行時才進行。
更適用于部分裝入
(3)不同的程序鏈接方式
①靜態鏈接:裝入運行前將多個目標模塊及所需庫函數鏈接成一個整體,以后不再拆開。
②裝入時動態鏈接:裝入內存時,邊裝入邊鏈接的鏈接方式。
③運行時動態鏈接:對某些目標模塊的鏈接,在執行中需要該目標模塊時,才對它進行鏈接。
2 連續分配存儲管理方式
1)單一連續分配
最簡單的一種存儲管理方式,只能用于單用戶、單任務的操作系統中。
優點:易于管理。
缺點:對要求內存空間少的程序,造成內存浪費;程序全部裝入,很少使用的程序部分也占用內存。
2)固定分區分配
提高:支持多個程序并發執行,適用于多道程序系統和分時系統。最早的多道程序存儲管理方式。
劃分為幾個分區,便只允許幾道作業并發
具體實現:
(1)如何劃分分區大小
分區大小相等:只適合多個相同程序的并發執行
分區大小不等:根據程序的大小分配當前空間的、適當大小的分區
(2)需要的數據結構
建立一記錄相關信息的分區表(或分區鏈表),表項有:
| 起始位置 | 大小 | 狀態 |
分區表中,表項值隨著內存的分配和釋放而動態改變
(3)程序分配內存的過程
3)動態分區分配
優點:并發進程數沒有固定數的限制,不產生內碎片。
缺點:有外碎片(分區間無法利用的空間)
具體實現:
(1)分區分配中的數據結構
空閑分區表
空閑分區鏈
(2)分區分配算法
①首次適應算法FF
②循環首次適應算法
③最佳適應算法
④最差適應算法
⑤快速適應算法
(3)分區分配操作
分配內存
回收內存
4)動態重定位分區分配
地址變換過程是在程序執行過程期間(相對地址與重定位寄存器中的地址相加),隨著對每條指令的訪問自動進行,稱為動態重定位。
?動態重定位分區分配算法與動態分區分配算法基本相同,差別在于增加了緊湊的功能。
5)內存空間管理之對換
(1)按對換單位分類:
整體對換(或進程對換):以整個進程為單位(連續分配)
頁面對換或分段對換:以頁或段為單位(離散分配)
(2)實現進程對換,系統必須具備的功能:
對換空間的管理
進程的換出、換入操作
3.分頁存儲管理方式
1)頁面的概念
內存劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。
(1)物理劃分塊的大小 = 邏輯劃分的頁的大小
(2)頁面大小要適中
2)頁表的概念
為了找到被離散分配到內存中的作業,記錄每個作業各頁映射到哪個物理塊,形成的頁面映射表,簡稱頁表。
(1)頁表的作用:
頁號到物理塊號的地址映射
(2)要找到作業A
?關鍵是找到頁表(PCB)
?根據頁表找物理塊
3)地址的處理
連續方式:
連續方式下,每條指令用基地址+偏移量即可找到其物理存放的地址。
分頁方式:
作業相對地址在分頁下不同位置的數有一定的意義結構:
頁號+頁內地址(即頁內偏移)
關鍵的計算是:根據系統頁面大小找到不同意義二進制位的分界線。
從地址中分析出頁號后,地址映射只需要把頁號改為對應物理塊號,偏移不變,即可找到內存中實際位置。
計算方法:
4)地址變換機構
訪問內存的有效時間:
進程發出邏輯地址的訪問請求,經過地址變換,到內存中找到對應的實際物理地址單元并取出數據,所需花費的總時間,稱為內存的有效訪問時間EAT
設訪問一次內存時間為t,則基本分頁機制下EAT=2t
CPU操作一條指令需訪問內存兩次:
1.訪問內存中的頁表(以計算指令所在的實際物理地址)
2.訪問指令內存地址
5)快表
快表放什么?:
正在執行進程的頁表的數據項。
6)多級頁表
(1)兩級頁表:
(2)多級頁表
(3)反置頁表
站在物理塊的角度,記錄占用它的已調入內存的進程標識和頁號。系統中只需一張該表即可。
4. 分段存儲管理方式
1)分段系統的基本原理
分段下的相對地址:
地址結構:段號 + 段內地址
段表:記錄每段實際存放的物理地址
2)段表與地址變換機構
同樣有兩次內存訪問問題
解決方法:設置聯想寄存器,用于保存最近常用的段表項。
3)分頁與分段的主要區別
(1)需求:
分頁是出于系統管理的需要,是一種信息的物理劃分單位,分段是出于用戶應用的需要,是一種邏輯單位,通常包含一組意義相對完整的信息。
一條指令或一個操作數可能會跨越兩個頁的分界處,而不會跨越兩個段的分界處。
(2)大小:
頁大小是系統固定的,而段大小則通常不固定。分段沒有內碎片,但連續存放段產生外碎片,可以通過內存緊縮來消除。相對而言分頁空間利用率高。
(3)邏輯地址:
分頁是一維的,各個模塊在鏈接時必須組織成同一個地址空間;
分段是二維的,各個模塊在鏈接時可以每個段組織成一個地址空間。
(4)其他:
通常段比頁大,因而段表比頁表短,可以縮短查找時間,提高訪問速度。分段模式下,還可針對不同類型采取不同的保護;按段為單位來進行共享
4)信息共享
分段系統的突出優點:
易于實現共享:
在分段系統中,實現共享十分容易,只需在每個進程的段表中為共享程序設置一個段表項。
比較課本圖。對同樣的共享內容的管理上,很明顯分段的空間管理更簡單。分頁的圖涉及太多的頁面劃分和地址記錄的管理。
易于實現保護:
代碼的保護和其邏輯意義有關,分頁的機械式劃分不容易實現。
5)段頁式存儲管理方式
(1)基本原理:
將用戶程序分成若干段,并為每個段賦予一個段名。
把每個段分成若干頁
地址結構包括段號、段內頁號和頁內地址三部分