四、存儲管理
存儲管理為了確保計算機有足夠的內(nèi)存處理數(shù)據(jù);確保程序可以從可用內(nèi)存中獲取一部分內(nèi)存使用;確保程序可以歸還使用后的內(nèi)存以供其他程序使用。
4.1 存儲管理之內(nèi)存分配與回收
內(nèi)存分配的過程:單一連續(xù)分配(已經(jīng)過時)、固定分區(qū)分配、動態(tài)分區(qū)分配(根據(jù)實際需要,動態(tài)的分配內(nèi)存)。 動態(tài)分區(qū)分配算法:
- 首次適應(yīng)算法:分配內(nèi)存時,從開始順序查找適合內(nèi)存區(qū),若無合適內(nèi)存區(qū),則分配失敗,每次從頭部開始,使得頭部地址空間不斷被劃分;
- 最佳適應(yīng)算法:要求空閑區(qū)鏈表按照容量大小排序,遍歷以找到最佳適合的空閑區(qū)(會留下越來越多的內(nèi)部碎片)。
- 快速適應(yīng)算法:要求有多個空閑區(qū)鏈表,每個空閑區(qū)鏈表存儲一種容量的空閑區(qū)。
內(nèi)存回收的過程:
- 回收區(qū)在空閑區(qū)下方:不需要新建空閑鏈表節(jié)點;只需要把空閑區(qū)1的容量增大即可;
- 回收區(qū)在空閑區(qū)上方:將回收區(qū)與空閑區(qū)合并;新的空閑區(qū)使用回收區(qū)的地址;
- 回收區(qū)在空閑區(qū)中間方:將空閑區(qū)1、空閑區(qū)2和回收區(qū)合并;新的空閑區(qū)使用空閑區(qū)1的地址;
- 僅僅剩余回收區(qū):為回收區(qū)創(chuàng)建新的空閑節(jié)點;插入到相應(yīng)的空閑區(qū)鏈表中去;
4.2 存儲管理之段頁式存儲管理
頁式存儲管理:將進程邏輯空間等分成若干大小的頁面,相應(yīng)的把物理內(nèi)存空間分成與頁面大小的物理塊,以頁面為單位把進程空間裝進物理內(nèi)存中分散的物理塊。
頁面大小應(yīng)該適中,過大難以分配,過小內(nèi)存碎片過多;頁面大小通常是512B~8K;
現(xiàn)代計算機系統(tǒng)中,可以支持非常大的邏輯地址空間(232~264),具有32位邏輯地址空間的分頁系統(tǒng),規(guī)定頁面大小為4KB,則在每個進程頁表中的頁表項可達1M(2個20)個,如果每個頁表項占用1Byte,故每個進程僅僅頁表就要占用1MB的內(nèi)存空間。
段式存儲管理:將進程邏輯空間分成若干段(不等分),段的長度由連續(xù)邏輯的長度決定。
頁式和者段式存儲管理相比:
- 段式存儲和頁式存儲都離散地管理了進程的邏輯空間;
- 頁是物理單位,段是邏輯單位;
- 分頁是為了合理利用空間,分段是滿足用戶要求頁大小由硬件固定,段長度可動態(tài)變化;
- 頁表信息是一維的,段表信息是二維的;
段頁式存儲管理:現(xiàn)將邏輯空間按照段式管理分成若干段,再將內(nèi)存空間按照頁式管理分成若干頁,分頁可以有效提高內(nèi)存利用率,分段可以更好的滿足用戶需求。
4.3 存儲管理之虛擬內(nèi)存
虛擬內(nèi)存概述:是操作系統(tǒng)內(nèi)存管理的關(guān)鍵技術(shù),使得多道程序運行和大程序運行成為現(xiàn)實,把程序使用內(nèi)存劃分,將部分暫時不使用的內(nèi)存放置在輔存,實際是對物理內(nèi)存的擴充。
局部性原理:指CPU訪問存儲器時,無論是存取指令還是存取數(shù)據(jù),所訪問的存儲單元都趨于聚集在一個較小的連續(xù)區(qū)域中。
虛擬內(nèi)存的置換算法:先進先出(FIFO)、最不經(jīng)常使用(LFU)、最近最少使用(LRU)
虛擬內(nèi)存的特征:
- 多次性:無需再作業(yè)運行時一次性全部裝入內(nèi)存,而是允許被分成多次調(diào)入內(nèi)存;
- 對換性:無需在作業(yè)運行時一直常駐內(nèi)存,而是允許在作業(yè)運行過程中,將作業(yè)換入、換出;
- 虛擬性:從邏輯上擴充了內(nèi)存的容量,使用戶看到的內(nèi)存用來,遠大于實際的容量;
4.4 Linux的存儲管理
Buddy內(nèi)存管理算法:經(jīng)典的內(nèi)存管理算法,為解決內(nèi)存外碎片的問題,算法基于計算機處理二進制的優(yōu)勢具有極高的效率。
Linux交換空間:交換空間(Swap)是磁盤的一個分區(qū),Linux內(nèi)存滿時,會把一些內(nèi)存交換至Swap空間,Swap空間是初始化系統(tǒng)時配置的。
Swap空間與虛擬內(nèi)存的對比:
五、文件管理
5.1 操作系統(tǒng)的文件管理
文件的邏輯結(jié)構(gòu):
- 邏輯結(jié)構(gòu)的文件類型:有結(jié)構(gòu)文件(文本文件,文檔,媒體文件)、無結(jié)構(gòu)文件(二進制文件、鏈接庫)。
- 順序文件:按順序放在存儲介質(zhì)中的文件,在邏輯文件當(dāng)中存儲效率最高,但不適合存儲可變長文件。
- 索引文件:為解決可變長文件存儲而發(fā)明,需要配合索引表存儲。
輔存的存儲空間分配:
- 輔存的分配方式:連續(xù)分配(讀取文件容易,速度快)、鏈接分配(隱式鏈接和顯式鏈接)、索引分配
- 輔存的存儲空間管理:空閑表、空閑鏈表、位示圖。
目錄樹:使得任何文件或目錄都有唯一的路徑。
Linux文件的基本操作:參考鏈接
Linux的文件系統(tǒng):FAT、NTFS(對FAT進行改進)、EXT2/3/4(擴展文件系統(tǒng),Linux的文件系統(tǒng))
六、設(shè)備管理
I/O設(shè)備的基本概念:將數(shù)據(jù)輸入輸出計算機的外部設(shè)備;
廣義的IO設(shè)備:
- 按照使用特性分類:存儲設(shè)備(內(nèi)存、磁盤、U盤)和交互IO設(shè)備(鍵盤、顯示器、鼠標(biāo));
- 按照信息交換分類:塊設(shè)備(磁盤、SD卡)和字符設(shè)備(打印機、shell終端);
- 按照設(shè)備共享屬性分類:獨占設(shè)備,共享設(shè)備,虛擬設(shè)備;
- 按照傳輸速率分類:低速設(shè)備,高速設(shè)備;
IO設(shè)備的緩沖區(qū):減少CPU處理IO請求的頻率,提高CPU與IO設(shè)備之間的并行性。
SPOOLing技術(shù):虛擬設(shè)備技術(shù),把同步調(diào)用低速設(shè)備改為異步調(diào)用,在輸入、輸出之間增加了排隊轉(zhuǎn)儲環(huán)節(jié)(輸入井、輸出井),SPoOLing負責(zé)輸入(出)井與低速設(shè)備之間的調(diào)度,邏輯上,進程直接與高速設(shè)備交互,減少了進程的等待時間。
七、實現(xiàn)支持異步任務(wù)的線程池
線程池:線程池是存放多個線程的容器,CPU調(diào)度線程執(zhí)行后不會銷毀線程,將線程放回線程池重新利用。
使用線程池的原因:
- 線程是稀缺資源 ,不應(yīng)該頻繁創(chuàng)建和銷毀;
- 架構(gòu)解耦,業(yè)務(wù)創(chuàng)建和業(yè)務(wù)處理解耦,更加優(yōu)雅;
- 線程池是使用線程的最佳實踐。
實現(xiàn)線程安全的隊列Queue
- 隊列:用于存放多個元素,是存放各種元素的“池”。
- 實現(xiàn)的基本功能:獲取當(dāng)前隊列元素數(shù)量,往隊列放入元素,往隊列取出元素。
- 注意:隊列可能有多個線程同時操作,因此需要保證線程安全,如下兩種情況:
實現(xiàn)基本任務(wù)對象Task
實現(xiàn)的基本功能:任務(wù)參數(shù),任務(wù)唯一標(biāo)記(UUID),任務(wù)具體的執(zhí)行邏輯
實現(xiàn)任務(wù)處理線程ProcessThread:任務(wù)處理線程需要不斷地從任務(wù)隊列里取任務(wù)執(zhí)行,任務(wù)處理線程需要有一個標(biāo)記,標(biāo)記線程什么時候應(yīng)該停止。
實現(xiàn)的基本功能:基本屬性(任務(wù)隊列、標(biāo)記),線程執(zhí)行的邏輯(run),線程停止(stop)。
實現(xiàn)任務(wù)處理線程池Pool:存放多個任務(wù)處理線程,負責(zé)多個線程的啟停,管理向線程池的提交任務(wù),下發(fā)給線程去執(zhí)行。
實現(xiàn)的基本過程:基本屬性,提交任務(wù)(put,batch_put),線程啟停(start,join),線程池大?。╯ize)。
實現(xiàn)異步任務(wù)處理AsyncTask:給任務(wù)添加一個標(biāo)記,任務(wù)完成后,則標(biāo)記為完成;任務(wù)完成時可直接獲取任務(wù)運行結(jié)果;任務(wù)未完成時,獲取任務(wù)結(jié)果,會阻塞獲取線程。
主要實現(xiàn)的兩個函數(shù):設(shè)置運行結(jié)果(set_result),獲取運行結(jié)果(get_result)
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6747瀏覽量
123204 -
計算機系統(tǒng)
+關(guān)注
關(guān)注
0文章
281瀏覽量
24089 -
IO設(shè)備
+關(guān)注
關(guān)注
0文章
21瀏覽量
7368
發(fā)布評論請先 登錄
相關(guān)推薦
評論