記憶體管理與二級頁面對映

2021-09-25 15:21:29 字數 1420 閱讀 9459

記憶體管理

我們下面討論的記憶體均為物理記憶體。

記憶體管理方案:

1、分割槽:程式載入時,將程式載入到一塊分割槽上。

(1)、固定分割槽(內部碎片;作業系統啟動前已經分配好)

大小相等的固定分割槽

大小不等的固定分割槽

(2)、動態分割槽(外部碎片;程序執行時,才會動態分配記憶體空間)

2、分頁

類似於大小相等的固定分割槽,系統初始化時,將記憶體劃分為大小相等的頁幀(4k),程式在磁碟上的儲存,也是按照4k的頁面進行儲存。引導程式時,作業系統為每乙個程序維護乙個頁表。乙個程序可以不連續的在記憶體上佔據多個頁幀

3、分段

引導程式時,根據程式的段,將程式載入到記憶體上,作業系統為每乙個程序維護乙個段表,乙個程序可以不連續的在記憶體上佔據多個段。

分頁與分段的區別:每乙個頁幀的大小是固定的,而每個段是根據程式的段分大小,大小不固定。

4、夥伴系統

分配時,根據請求的大小將記憶體空間不斷地折半,直到以最小的空間分配給請求的程序,**空間時,如果左或者右又跟它大小相等的空閒區塊就合併成乙個大的區塊,可以一直合併,直到左右沒有等大的空閒區塊為止。(實現時可使用二叉樹)

5、交換分割槽

交換分割槽就是在磁碟上擴充套件的記憶體空間,但是這塊空間是以記憶體的方式來管理的,作為對記憶體的補充。當記憶體空間不足時,才會將記憶體上的部分資料交換到交換分割槽上,這種交換的方法成為mmu,使得記憶體上駐留更多的程序,也可以執行比記憶體大的程序。

x86下的位址對映

1、實位址模式:在原有的基礎上加了gdtr(存放基址大小和許可權)、ldtr,並將原16位ip暫存器換成了ipe 32位的暫存器,原來的ds,cs,ss暫存器就用來存放gdtr陣列的下標值(前13位)

gdtr(32位):全域性段描述符表暫存器

ldtr(32位):區域性段描述符表暫存器

2、保護位址模式:

apache tomcat 二級網域名稱對映

apache tomcat的配置教程,網際網路上一搜一籮筐,這裡不再贅述。其主要目的也就是通過apache解析將相應的請求交由tomcat處理。此處簡單說下由apache tomcat配置二級網域名稱及多級網域名稱問題。新增2級網域名稱之前你先把某個2級網域名稱解析到你的伺服器,比如你的2級網域名稱...

二級指標記憶體模型(一)

二級指標做輸入 include include include int getmem char myp1,int mylen1,char myp2,int mylen2 strcpy tmp1,abcdefg mylen1 strlen tmp1 myp1 tmp1 tmp2 char malloc...

二級指標與陣列

char str 這是字元指標陣列,每乙個陣列元素是乙個指標變數,而每個指標變數指向字串首字元位址,即是字串的位址。因為每乙個字串都代表的是乙個位址,是字串首字元的位址。字串常量是放在文字常量區,是不可以更改的。而指標陣列str裡面存放的是指向字串位址,它是可變的。如str 0 是可變的,它是指標變...