1、第四章主要是將存儲器,存儲器是包括內存儲器(內存條)和外存儲器(磁盤)。在這一章,重要的知識點是分段、分頁儲存管理方式。
2、裝入分為:絕對裝入(代碼中均是物理地址)、可重定位裝入(代碼是邏輯地址,裝入時重新計算轉變為物理地址)、動態運行時裝入(裝入時邏輯地址不轉為物理地址,運行時才將邏輯地址轉為物理地址)。
3、鏈接分為:靜態鏈接(所有涉及到的目標模塊、庫函數都打包鏈接)、裝入時動態鏈接(邊裝入,邊鏈接:裝入時,發生外部調用,再將被調用模塊裝入內存。)、運行時動態鏈接(裝入時不鏈接,運行時需要了再鏈接)
4、內存的分配方式可以分為連續分配和離散分配。連續分配是說連續的地址空間,分給某一個進程,離散分配是說把一個進程打碎為若干個部分,一個部分放一個位置,部分和部分之間不是連續的,但是部分自己是連續的。這個部分就是“頁框”。
5、連續分配又分為單一連續分配(內存中只有一個進程)、固定分區分配(內存固定分為幾個大小固定或大小不固定的區域,每一個區域放一個進程,所以內存中有多個進程)、動態分區分配(不固定分區域,根據實際情況和算法為進程分配內存)、動態重定位分區分配(多個“碎片”湊成一個新的整塊)。
6、內存的分配過程中,要判斷將要分配的區域是不是滿足需要,如果滿足,還要判斷分配之后剩余的(不是總的剩余的,是將要分配的這個區域分配之后還剩余的)是不是可再分。就好比超市買東西,花的錢不能比兜里錢要多,比如兜里就100,花了99.99元,剩余的1分錢已經不能再買東西了,作為內存來說,這1分錢就不再作為可分配區域了。
7、內存回收過程中,要修改空閑分區表或空閑分區鏈,要根據回收的區域和其他可分配區域的位置。比如要收回的區域上或下本來就是空閑區,那么只需要修改空閑分區表中的大小就可以,不用修改起始地址。
8、設計到動態分配的幾個算法:
a、首次適應:空閑分區鏈以地址遞增的次序排列,第一個滿足分配的條件,就分配。缺點是:內存浪費(“碎片”較多)、每次都是從最低地址找增加系統開銷。
b、循環首次適應:在首次適應的基礎上,每次從上一次結束的位置開始搜索。缺點:缺乏大的空閑分區,對大作業不友好。
c、最佳適應:空閑分區按其容量以從小到大的順序排序,第一個滿足分配條件的,分配。缺點:碎片較多
d、最壞適應:和最佳適應相反,按照從大到小順序排序,第一個滿足分配條件的,分配。這個是先分配大的,后分配小的。缺點:碎片較少,但是大空閑區少,對大作業不友好。
e、快速適應算法、伙伴系統大家明白啥意思就行,不用刻意掌握,了解就可以。
9、如果進程數量太多,內存不夠用,怎么辦?就引出了虛擬內存技術(當然基本的分頁和分段是不支持虛擬內存技術的,虛擬內存技術需要在基本的分頁分段基礎之上,增加很多信息才行),從邏輯上增加內存空間。這時又要引出對換,以進程為單位,內存和外存中進程對換;或者以“段、頁、段頁”為單位,內存和外存對換。
10、內存中的進程分為一個個大小相等的“頁框”(也叫物理塊),進程邏輯空間,分為一個個大小相等的“頁”。頁和頁框大小也是一樣的。頁和頁框都是從0號開始編,0號,1號,2號……
11、頁設置的太小,內存利用率會提高,但是頁的數量會增多,增加了對換次數;頁設置的太大,頁的數量相對減少,減小對換次數,但是最后一頁會有較大的內部碎片。
12、搞清楚兩個名次:內部碎片和外部碎片。內部碎片:已經分配出去了,但是又用不到;外部碎片:沒有分配出去的,但是也用不到。
13、給出了邏輯地址和頁面大小,如何計算處於哪一個頁,頁里的頁內地址?邏輯地址/頁面大小 = 頁號(取整);邏輯地址%頁面大小 = 頁內地址(取余)
14、計算機需要知道邏輯地址中的哪一個頁分配到了內存中哪一個頁框中,這個對應關系如何實現?靠“頁表”。頁表是描述頁和頁框的一個對應關系。頁表也是需要儲存在內存中的,所以頁表也需要占用內存。但是頁表中的頁號是線性排列的,每一個頁號占用的空間是一樣的(就好比給6個地址編址,必須是000、001、010、100、101、110、111,每一位都是3位數),所以只需要儲存頁表里的塊號就可以。
15、引入快表:在頁表的機制下,每一次尋址都要經歷2次訪存操作。第一次訪問頁表得到頁號對應的塊號(頁框號),第二次根據塊號計算的物理地址(這里需要想明白,如何計算物理地址的?頁框號也是線性排列的,頁框號*一個頁框的大小+頁內地址=物理地址。一個頁框大小提前已經約定好。),訪問該內容。訪存是需要有時間開銷的,為了減少時間開銷,提高效率,可以把頁表放在“寄存器”中,但是寄存器又很貴,又不能把全部的頁表都放進去,這就是快表。引入快表后,有一種計算是計算有效訪問時間,大家可以詳細的看參考書。
16、當頁表內容很多時,需要占用連續的內存空間很大,可以仿照“分頁”儲存方式,將頁表再分為“頁表”,也就是二級頁表、三級頁表。
17、段表和頁表原理類似,但是需要把握一點,段長度不固定。