青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Daly的游戲人生

資源和內存管理學習總結

整理了手頭上幾本書中關于資源和內存管理的章節


<Understanding the linux kenel 第三版> 8.1.7 the buddy system
    Buddy算法, 解決內存碎片問題. 張貼書本原文如下:

The technique adopted by Linux to solve the external fragmentation problem is based on the well-known buddy system algorithm. All free page frames are grouped into 11 lists of blocks that contain groups of 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, and 1024 contiguous page frames, respectively. The largest request of 1024 page frames corresponds to a chunk of 4 MB of contiguous RAM. The physical address of the first page frame of a block is a multiple of the group sizefor example, the initial address of a 16-page-frame block is a multiple of 16 x 212 (212 = 4,096, which is the regular page size).


We'll show how the algorithm works through a simple example:

Assume there is a request for a group of 256 contiguous page frames (i.e., one megabyte). The algorithm checks first to see whether a free block in the 256-page-frame list exists. If there is no such block, the algorithm looks for the next larger blocka free block in the 512-page-frame list. If such a block exists, the kernel allocates 256 of the 512 page frames to satisfy the request and inserts the remaining 256 page frames into the list of free 256-page-frame blocks. If there is no free 512-page block, the kernel then looks for the next larger block (i.e., a free 1024-page-frame block). If such a block exists, it allocates 256 of the 1024 page frames to satisfy the request, inserts the first 512 of the remaining 768 page frames into the list of free 512-page-frame blocks, and inserts the last 256 page frames into the list of free 256-page-frame blocks. If the list of 1024-page-frame blocks is empty, the algorithm gives up and signals an error condition.

The reverse operation, releasing blocks of page frames, gives rise to the name of this algorithm. The kernel attempts to merge pairs of free buddy blocks of size b together into a single block of size 2b. Two blocks are considered buddies if:

  • Both blocks have the same size, say b.

  • They are located in contiguous physical addresses.

  • The physical address of the first page frame of the first block is a multiple of 2 x b x 212.

The algorithm is iterative; if it succeeds in merging released blocks, it doubles b and tries again so as to create even bigger blocks




<Modern C++ design 泛型編程與設計模式> Chapter 4 small object allocation
    本書討論的是loki庫。第4章探討了小對象的內存分配

<STL源碼解析>  2.2 STL空間分配器  翻譯by 侯捷
    SGI的STL實現中,allocator的實現例子。
    二級分配器:大于128byte交給一個分配器,直接分配內存。小數據塊交給次級分配器。
    次級分配器用一個freelist數組維護可分配的小塊內存區域。freelist數組中的項是一個固定內存大小的鏈表。freelist中的項

這 里用了一個小技巧(union)
    
union obj {
    union obj*  free_list_link;
    char client_data[1];
}
  
    這個既可用于空閑列表節點,又能作為數據指針(強制轉換), 這樣就可以節省信息記錄的空間。
    詳細說明參考原書


< 游戲編程精粹1> 1.6 通用的基于句柄的資源管理器

    該文章實現HandleMgr模板類實現不同類型資源的管理器.handle為整數值
    基本思路
  1. vector<DATA>存放實際數據, vector儲存magic number, FreeVector儲存數據vector中的空閑索引值
  2. Acquire根據 handl值返回數據指針(引用計數+1), Release釋放data( 引用計數減1 )

    技巧1: 利用空結構實現類型匹配(STL內經常用這個技巧)
        struct tagTexture {}
        typedef Handle<tagTexture> HTexture
    技巧2:資源釋放時不需要析構,只需要把相應index加入空閑列表。分配時重用該對象,重新初始化值,可以提高效率。
    技巧3:一般資源管理器類作為Singleton

    擴展1:為標準功能增加自動引用計數(參考智能指針的實現?)

< 游戲編程精粹1> 1.9 基于幀的內存分配 by steven ranck
    思路:棧方式(后進先出)的內存分配器。預先分配大塊內存,然后按棧順序分配和釋放內存。
            僅適用于分配,釋放有嚴格順序的資源(如關卡資源)

<游戲編程精粹1> 1.1
    技巧:所謂的數據繼承
    對于不變的對象屬性,具體類用引用指向這些固定屬性,而不是繼承。
    因為僅通過對象繼承,每個對象都有這些固定屬性的拷貝,浪費空間。
    Sprite(速度,滿血值,攻擊力) <-- SpriteInstance( 對sprite引用, 位置,當前生命值)

posted on 2010-05-02 00:02 Daly 閱讀(2271) 評論(1)  編輯 收藏 引用 所屬分類: C/C++游戲開發

評論

# re: 資源和內存管理學習總結 2010-05-05 08:47 欣萌

不錯。  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜视频在线| 欧美在线观看一区| 国产精品久久久久久久久果冻传媒| 日韩亚洲在线观看| 一本色道久久综合一区| 亚洲剧情一区二区| 亚洲午夜91| 久久久久久夜| 欧美日韩国产小视频在线观看| 久久香蕉国产线看观看av| 久久九九免费| 欧美激情一区二区| 国产精品亚洲а∨天堂免在线| 有码中文亚洲精品| 亚洲丰满在线| 亚洲人www| 一区二区三区视频在线播放| 欧美成人乱码一区二区三区| 久久精品国产77777蜜臀| 久久久精品网| 亚洲激情社区| 久久av资源网站| 欧美日韩精品综合| 精品1区2区| 亚洲影音先锋| 亚洲国产精品123| 亚洲欧美在线高清| 欧美精品入口| 禁断一区二区三区在线| 一区二区三区久久| 欧美激情久久久| 亚洲一区二三| 欧美日韩精品一本二本三本| 国产精品网站视频| 日韩亚洲欧美精品| 美女脱光内衣内裤视频久久影院 | 国产欧美日本| 日韩视频久久| 欧美高清视频免费观看| 亚洲视频狠狠| 欧美日韩18| 亚洲欧洲一区二区三区在线观看| 亚洲一区二区在线看| 鲁大师影院一区二区三区| 亚洲美女在线一区| 欧美www在线| 在线观看国产欧美| 先锋影音国产精品| 中文国产成人精品| 欧美日韩国产色站一区二区三区| 一区二区亚洲精品国产| 欧美亚洲日本国产| 亚洲视频1区2区| 国产精品美女黄网| 亚洲欧美在线高清| 亚洲欧美视频在线观看视频| 欧美高清你懂得| 亚洲裸体俱乐部裸体舞表演av| 久久手机免费观看| 久久久精品国产免大香伊 | 久久视频一区二区| 在线不卡欧美| 亚洲高清精品中出| 欧美日韩国产综合视频在线| 一区二区三区在线观看国产| 亚洲第一精品影视| 宅男噜噜噜66国产日韩在线观看| 久久婷婷av| 狠狠久久婷婷| 麻豆精品视频| 欧美插天视频在线播放| 亚洲国产欧美一区二区三区同亚洲| 久久一区中文字幕| 久久午夜av| 99re6热只有精品免费观看| 亚洲级视频在线观看免费1级| 麻豆91精品| 国产精品99久久久久久宅男 | 欧美jizz19hd性欧美| 亚洲人午夜精品| 一本色道久久综合亚洲精品不| 欧美日韩在线免费观看| 亚洲午夜在线视频| 久久国产天堂福利天堂| 亚洲国产婷婷香蕉久久久久久99| 亚洲高清在线视频| 国产精品国产三级国产aⅴ入口| 亚洲欧美综合| 免费不卡中文字幕视频| 在线视频你懂得一区| 亚洲免费中文| 亚洲破处大片| 亚欧美中日韩视频| 夜夜嗨av一区二区三区网站四季av | 91久久精品日日躁夜夜躁国产| 欧美岛国激情| 亚洲欧美日韩人成在线播放| 亚洲小视频在线观看| 一区二区在线视频播放| 亚洲日本中文字幕| 揄拍成人国产精品视频| 日韩午夜电影| 在线观看精品| 亚洲字幕一区二区| 亚洲理论在线| 久久久久久久久久久一区| 99re热精品| 久久蜜桃资源一区二区老牛| 亚洲精品偷拍| 久久综合狠狠综合久久综合88| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲免费视频一区二区| 亚洲人人精品| 久久精品国产免费| 欧美在线视频免费观看| 欧美高清视频免费观看| 久久久av水蜜桃| 国产乱码精品一区二区三区五月婷 | 亚洲丰满少妇videoshd| 亚洲理伦在线| 亚洲日本欧美在线| 老色批av在线精品| 日韩图片一区| 久久一区中文字幕| 久久成人精品| 国产精品久久久久久影视| 亚洲国产经典视频| 亚洲国产视频一区| 久久亚洲精品网站| 欧美成人激情视频| 亚洲福利视频在线| 另类人畜视频在线| 欧美激情小视频| 最新国产乱人伦偷精品免费网站| 欧美在线亚洲| 久久综合伊人77777| 国内精品福利| 老司机凹凸av亚洲导航| 欧美三级第一页| 亚洲精品视频啊美女在线直播| 永久久久久久| 美女主播一区| 日韩亚洲欧美一区二区三区| 一区二区三区自拍| 噜噜噜躁狠狠躁狠狠精品视频| 久久久久久亚洲精品杨幂换脸| 国产精品久久久久久久久借妻| 99在线精品视频在线观看| 99精品国产在热久久| 欧美粗暴jizz性欧美20| 亚洲国产精品电影| 亚洲一区免费网站| 国产三级欧美三级日产三级99| 亚洲女同性videos| 久久婷婷亚洲| 亚洲精品久久久久| 欧美日韩一二三四五区| 一区二区三区日韩精品| 欧美一级在线播放| 激情婷婷欧美| 欧美激情在线有限公司| 一本色道88久久加勒比精品| 一区二区三区四区精品| 国产精品天天看| 蜜桃久久av一区| 国产精品99久久久久久www| 性欧美video另类hd性玩具| 国产一二三精品| 欧美福利一区二区| 午夜精品视频在线| 亚洲国产一区二区a毛片| 亚洲淫性视频| 亚洲高清色综合| 欧美午夜片在线免费观看| 亚洲欧美日本精品| 亚洲福利视频网| 久久久av水蜜桃| 亚洲永久精品国产| 亚洲成在人线av| 国产乱码精品一区二区三区不卡 | 久久久久久穴| 亚洲精品综合精品自拍| 一区二区久久久久| 美国成人毛片| 午夜精品福利在线| 亚洲国内精品在线| 国产一区二区三区黄视频| 欧美男人的天堂| 久久婷婷成人综合色| 中文在线一区| 亚洲人成免费| 欧美激情bt| 美女任你摸久久| 久久久久免费视频| 欧美一二三视频| 亚洲一卡久久| 在线一区二区日韩| 日韩系列欧美系列| 亚洲国产乱码最新视频| 国产精品一区在线观看|