4.1程序的裝入和鏈接
1、創建進程的第一件事:將程序和數據裝入內存。
2、程序的裝入和鏈接
1)編譯
2)鏈接
3)裝入
3、地址的概念
1)邏輯地址(相對地址,虛地址)
2)物理地址(絕對地址,實地址)
4、程序裝入中的地址處理
邏輯地址? ======?? 物理地址:
1)絕對裝入方式
邏輯地址 ->重定位->物理地址:
2)靜態可重定位裝入方式
3)動態運行時(重定位)裝入方式
5、不同的程序鏈接裝入方式(使用內存的時機)
根據鏈接時間的不同,分成三種:
①靜態鏈接:裝入運行前將多個目標模塊及所需庫函數鏈接成一個整體,以后不再拆開。
②裝入時動態鏈接:裝入內存時,邊裝入邊鏈接的鏈接方式。
③運行時動態鏈接:對某些目標模塊的鏈接,在執行中需要該目標模塊時,才對它進行鏈接。
4.2連續分配存儲管理方式
1、連續分配方式
(1)單一連續分配
(2)固定分區分配
? ? ? ? 具體實現:
? ? ? ? 1)如何劃分分區大小
? ? ? ? 2)需要的數據結構
? ? ? ? 3)分配回收操作
(3)動態分區分配
優點:并發進程數沒有固定數的限制,不產生內碎片。
缺點:有外碎片
具體實現:
1)分區分配中的數據結構
2)分區分配算法
①首次適應算法FF
優點:優先利用內存低址部分,保留了高地址部分的大空閑區;
缺點:但低址部分不斷劃分,會產生較多小碎片;而且每次查找從低址部分開始,會逐漸增加查找開銷。
②循環首次適應算法
優點:空閑分區分布均勻,減少查找開銷
缺點:缺乏大的空閑分區
③最佳適應算法
缺點:每次找到最合適大小的分區割下的空閑區也總是最小,會產生許多難以利用的小空閑區
④最差適應算法
基本不留下小空閑分區,但會出現缺乏較大的空閑分區的情況。
⑤快速適應算法
能快速找到合適分區,但鏈表信息會很多;實際上是空間換時間。
3)分區分配操作
(4)動態重定位分區分配
動態重定位分區分配算法與動態分區分配算法基本相同,差別在于增加了緊湊的功能。
(5)內存空間管理之對換
對換空間的管理
4.3-4.4存儲管理的離散分配方式
(一)基本分頁存儲管理
1、分頁的目的是更細粒度的處理空間,減少粗放管理的浪費或開銷問題。
2、物理劃分塊的大小=邏輯劃分的頁的大小
3、頁表:為了找到被離散分配到內存中的作業,記錄每個作業各頁映射到哪個物理塊,形成的頁面映射表
4、每個作業有自己的頁表
5、離散分配過程:
?找空? ??放入? ??記錄
6、連續方式下,每條指令用基地址+偏移量即可找到其物理存放的地址。
7、一作業所有指令在用戶地址空間是順序編址
8、地址變換機構實現地址映射
分頁式系統中的地址變換機構
9、設一次查找訪問快表時間為t' ,則
?EAT= a*t' + (1-a)(t'+t)? + t = 2t +t' -t*a
10、
具有快表的分頁系統的地址變換機構?
11、進程分頁離散存放,但頁表的數據是連續在存放內存的。
12、兩級頁表:為離散分配的頁表再建立一張頁表,稱為“外層頁表”,其每個表項記錄了頁表頁面所在的物理塊號。
13、
具有兩級頁表的地址變換機構
14、反置頁表:站在物理塊的角度,記錄占用它的已調入內存的進程標識和頁號。系統中只需一張該表即可。
(二)基本分段存儲管理
1、分段存儲管理:作業分成若干段,各段可離散放入內存,段內仍連續存放。
2、基本原理:程序通過分段劃分為多個模塊,每個段定義一組邏輯信息。
3、地址結構:段號+段內地址
4、段表:記錄每段實際存放的物理地址
5、
分段系統地址變換機構
6、分頁和分段的主要區別(重點)
1)需求:分頁是出于系統管理的需要,是一種信息的物理劃分單位,分段是出于用戶應用的需要,是一種邏輯單位,通常包含一組意義相對完整的信息。
一條指令或一個操作數可能會跨越兩個頁的分界處,而不會跨越兩個段的分界處。
2)大小:頁大小是系統固定的,而段大小則通常不固定。分段沒有內碎片,但連續存放段產生外碎片,可以通過內存緊縮來消除。相對而言分頁空間利用率高。
3)邏輯地址:
分頁是一維的,各個模塊在鏈接時必須組織成同一個地址空間;
分段是二維的,各個模塊在鏈接時可以每個段組織成一個地址空間。
4)其他:通常段比頁大,因而段表比頁表短,可以縮短查找時間,提高訪問速度。分段模式下,還可針對不同類型采取不同的保護;按段為單位來進行共享
(三)段頁式存儲管理
1、基本原理
1)將用戶程序分成若干段,并為每個段賦予一個段名。
2)把每個段分成若干頁
3)地址結構包括段號、段內頁號和頁內地址三部分
2、
段頁式系統的地址變換機構?