欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
linux內存管理
http://blog.chinaunix.net/uid-27164517-id-3282863.html

2012
         分頁(yè)就是將進(jìn)程的邏輯地址空間分成若干大小相等的片(即頁(yè)),然后裝入內存。 分段就是用戶(hù)可以把自己的作業(yè)按邏輯關(guān)系劃分為若干個(gè)段,每個(gè)段都是從0開(kāi)始編址,并有自己的名字和長(cháng)度。這就相當于程序里邊的主函數段、各個(gè)子函數段、數據段、棧段等等。 要知道在引入分頁(yè)和分段之前,是通過(guò)連續分配方式來(lái)管理存儲器的,就是說(shuō)一個(gè)進(jìn)程在內存中是連續存放的。 可以這樣理解吧,內存中有進(jìn)程1、2、3……進(jìn)程2先執行完成了,然后釋放了所占有的內存空間,而之后, 如果新調入的進(jìn)程內存需求大于之前2所占有的內存空間,那么不可能利用這塊內存,相對于內存需求更大的進(jìn)程來(lái)說(shuō),之前2所占有的內存空間就是不能利用的碎片, 如果新調入的進(jìn)程內存需求小于之前2所占有的空間就會(huì )留下空隙,也會(huì )帶來(lái)碎片。 雖然可以通過(guò)“緊湊”的方法進(jìn)行碎片整理,但開(kāi)銷(xiāo)很大這就產(chǎn)生了與連續分配方式相對的離散分配方式,便先后引入了分頁(yè)和分段存儲管理。 所以相同點(diǎn)就是,兩者都屬于存儲器管理方式中的離散分配方式。都要通過(guò)地址映射機構來(lái)實(shí)現地址變換。 不同點(diǎn)就在于,離散分配方式的基本單位的不同,是頁(yè)還是段。 頁(yè)是信息的物理單位,段是信息的邏輯單位。 分頁(yè)的作業(yè)地址空間是一維的,線(xiàn)性的,程序員只需利用一個(gè)記憶符表示一個(gè)地址;而分段的作業(yè)地址空間是二維的,程序員在表示一個(gè)地址的時(shí)候既要給出段名,又需要給出段內陸址。其中,段名可以理解為函數名等,段內陸址可以理解程變量等的地址。 值得一提的是其中頁(yè)的大小要和物理塊或者頁(yè)框一樣,而物理塊是操作系統定好了的。也就是說(shuō)你的操作系統裝完之后,物理塊的大小是定了的,從而頁(yè)的大小也是定了的。而段的長(cháng)度是不定的。 引入分頁(yè)存儲管理方式的目的是提高內存利用率,而引入分段存儲是為了滿(mǎn)足用戶(hù)(程序員)在編程和使用上多方面上的要求。還有將兩者結合一起的段頁(yè)式系統。


一,linux繞過(guò)了段機制而主要采用了頁(yè)機制實(shí)現內存管理。原因如下:
            1,為了使得內存管理變得簡(jiǎn)單,繞過(guò)了段機制,虛擬地址=線(xiàn)性地址。
            2,為了方便移植到多個(gè)硬件平臺,因為很多RISC處理器不支持段機制。
----------------------------------------------------------------------------------------------
二,進(jìn)程的地址空間。


    linux下每個(gè)進(jìn)程都有4GB的地址空間=1GB的內核空間  + 3GB的用戶(hù)空間
    1,進(jìn)程切換時(shí),虛擬地址空間也隨之切換。唯有3GB的用戶(hù)空間切換,1GB的內核空間
          是所用進(jìn)程共享的,常駐內存。
    2,虛擬地址空間切換,頁(yè)表也隨之切換。
----------------------------------------------------------------------------------------------
三,虛擬地址映射到物理地址。

      地址映射應該分兩部分分析,內核空間和用戶(hù)空間。
      內核空間使用的是線(xiàn)性映射,很好理解。
      用戶(hù)空間使用的是頁(yè)表來(lái)映射。
 ---------------------------------------------------------------------------------------------   
          3.1,內核空間的地址映射到物理地址空間。
    

  內核空間地址映射函數如下:

  1. #define __va(x) ((void *)((unsigned long)(x) PAGE_OFFSET))  // 虛擬地址 = 物理地址x 3GB
  2. #define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)                  //物理地址  = 虛擬地址x -  3GB 
----------------------------------------------------------------------------------------------
   
               3.2,用戶(hù)空間映射到物理地址空間。
        linux 采用了三級頁(yè)表,實(shí)際上linux可以通過(guò)啟用或禁用中間目錄來(lái)啟用兩級和
       三級分頁(yè)(使用相同的代碼),在32位的x86體系上就用的兩級頁(yè)表。
 

----------------------------------------------------------------------------------------------
          先以?xún)杉夗?yè)表說(shuō)說(shuō)虛擬地址是如何映射成為物理地址的吧。

         
               進(jìn)程切換,首先是從新的進(jìn)程的PCB中讀出pgd,然后寫(xiě)入CR3中,cr3 = __pa(pgd)
 CR3相當于頁(yè)表的根所在,CR3中存放的是頁(yè)目錄的基址,該基址 偏移量(線(xiàn)性地址的前10位)
  = 頁(yè)表的基址,頁(yè)表的基址 偏移量(線(xiàn)性地址的中間10位)=物理頁(yè)的基址,物理頁(yè)的基址
 偏移量 = 物理地址。

下面小結物理地址的計算:

  1. cr3 Page Directory (10 MSB) = 指向 table_base
  2. table_base Page Table (10 中間位) = 指向 page_base
  3. page_base Offset = 物理地址 (獲得頁(yè)框)        
                                            
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux 內存管理
Linux 進(jìn)程的虛擬內存
關(guān)于Linux 虛擬內存
 Linux中的虛擬地址、物理地址和內存管理方式(一)
Linux中的內存管理
深入理解Linux內核內存管理機制與實(shí)現
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久