日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Operating System Concepts--chap9 Memory Management;

發布時間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Operating System Concepts--chap9 Memory Management; 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

這一章節的memory management內容覆蓋從bare-machine approach到paging和segmentation;

9.1 background
我們在編程時候所操作的地址--logical address和實際機器中的地址--physical address不是一樣的;
他們之間的mapping是通過Memory Management Unit來進行轉換,通常是通過[relocation,offset]這樣的典型組合來完成;
而且他們之間的binding,也有幾種情況:
1,compile time:在程序編譯的時候就bind,那么這個地址肯定是絕對地址;
2,load/execution time:load/execute程序的時候bind,這種情況普遍有個模式:Relocable Addr+offset的模式,程序操作offset,然后由系統來確認Relocable addr的值,在不同情況改變relocable addr那么程序就被在memory中移來移去;

定義:
logical address:由cpu產生的address
physical address:memory unit所見的address

dynamic loading:一個模塊知道被使用的時候才會被load
dynamic linking:推遲link,但是需要os的支持,因為link會需要考慮process的protection,

9.2 swapping
swapping:針對process而言,執行的時候swap進內存,不執行的時候swap出去;
一些基于優先級的算法來支持swapping

9.3 continuous memory allocation
就是給定一塊內存,比如256M,來支持alloc/free;
《the art of computer programming》給出著名的heap算法
1,把內存用鏈表串起--開始的時候就一個節點,隨著分配和釋放,連續內存被打散,形成鏈表;
2,另外用hash表來索引節點,[key,value]--[內存塊大小,內存塊的地址],hash表有多個,以size大小分類--1k-2k的一類,2k-4k的一類,4k-8k的一類...
我們需要alloc內存出來時迅速定位到hash表,然后選擇best fit的模塊進行分類;
分配時如果已有內存塊大于所需,就裂開,
free時,如果歸還內存前后有free的內存,就merge

最大問題是:external fragmentation,可能剩余10M內存,但是都是零碎的小塊,無法alloc出一個1m的空間;

由于游戲開發中,內存有一定的規律,比如在ps3中管理顯存,就可以根據游戲需要,特殊處理render target,resolve buffer這類問題,
利用游戲的特性來進行優化,而不是單純的去做支持general的工作;會很大程度上降低這個工作;

9.4 paging
paging--允許process的logical address是連續的,但是physical address是不連續的;非常牛逼的做法;
基本概念
physical memory被分成大小一樣的一塊塊,called frame
logical memory分成大小一樣的一塊塊,叫page
page靈活的map到frame中,邏輯地址中連續的page,在physical memory中就是可以分散的分配的;

requirements
需要page table,frame table
而且在真正訪問內存的時候,需要做邏輯地址向物理地址的轉換,這會大大降低速度,硬件的支持不可避免;
TLB作為page table的cache出現,加快邏輯物理轉換速度;

more:
可以有多級page table,shared page table。。。

9.5 segmentation
segmentation:支持用戶角度對內存的劃分;
比如我們coding時候常說的:stack,heap,全局區等等;
以segmentation table做管理,以[base,offset]對來索引,可以區域保護和共享,享受external fragmentation;

9.6 segmentation with paging
把segmentation架在paging上,通過segmentation的[base,offset]地址訪問到page的[page_number,offset]再到physical memory;
很靈活很牛逼,有硬件支持也很快,intel 80386這么干的;
?


原文鏈接: http://blog.csdn.net/ccanan/article/details/1575551

轉載于:https://my.oschina.net/dtec/blog/44686

總結

以上是生活随笔為你收集整理的Operating System Concepts--chap9 Memory Management;的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。