今天我們繼續來看作業系統是如何配置記憶體,實做出來的方法有兩個大種類,一種是連續的(Contiguous),想像記憶體是一條連續的儲存空間,一整個Process所使用到的記憶體也是一大塊連續的空間在那上面,相對而言就會比較單純,反過來說另一種是不連續的(Non-Contiguous),同一個Process的記憶體並不連續,可以中斷散落在各個地方,比較複雜、但也比較節省。
當我們在配置記憶體給Process時,並不會配得剛剛好,會是以一個單位一個單位的大小在配置空間,那這樣的情況下,記憶體空間一定會有浪費,Fragmentation指的就是被浪費掉的零碎的空間:
Contiguous Memory Allocation可以又可以分為兩種
找記憶體空間放進去的方法又分為三種
比較多人使用First-fit來搜索記憶體空間,因為Best-fit和Worst-fit在尋找的複雜度是很高的,First-fit相對快速且單純。
Non-Contiguous的概念下,每個Process所使用的記憶體是凌亂的分布在記憶體的區段之中,其中有一套機制去為每個Process管理其記憶體,其中最關鍵的是有一個Hash Table(Page Table),去儲存logical address 與 physical address的對應關係。
這麼做就會有許多的好處