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

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 閱讀(2277) 評論(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>
            午夜视频在线观看一区二区三区| 欧美三级电影大全| 一区二区三区高清在线| 日韩亚洲视频在线| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲综合999| 亚洲一级在线观看| 亚洲欧美日韩一区二区三区在线观看 | 久久一区二区三区超碰国产精品| 久久亚洲精品一区二区| 欧美日韩国产一区二区三区| 国产精品呻吟| 在线观看欧美精品| 亚洲色图在线视频| 久久久91精品国产一区二区三区 | 亚洲欧美激情在线视频| 久久久人成影片一区二区三区 | 久久精品一区四区| 欧美激情欧美激情在线五月| 99天天综合性| 久久久久国产精品一区| 欧美日韩亚洲一区二区三区| 激情另类综合| 亚洲一区二区三区精品视频| 欧美成年人视频网站欧美| aa级大片欧美三级| 免费观看30秒视频久久| 国产精品一区二区三区观看| 亚洲国产欧美国产综合一区| 香蕉久久久久久久av网站| 亚洲国产影院| 午夜亚洲伦理| 欧美视频免费看| 亚洲毛片在线观看.| 久久久久88色偷偷免费| 亚洲精品久久在线| 久久久天天操| 亚洲欧美国产制服动漫| 欧美日韩视频| 亚洲精品久久久蜜桃| 老司机午夜精品视频| 性欧美videos另类喷潮| 国产精品国产福利国产秒拍| av不卡在线| 亚洲精品免费电影| 欧美激情综合在线| 亚洲精品综合久久中文字幕| 欧美成年人网| 久久先锋影音| 亚洲第一在线综合在线| 美女视频黄a大片欧美| 久久国产黑丝| 韩国av一区二区三区| 久久精品国产免费看久久精品| 亚洲午夜影视影院在线观看| 国产精品久久久一区二区三区| 亚洲一卡久久| 亚洲综合成人婷婷小说| 国产精品永久| 久久精品30| 久久精品盗摄| 亚洲第一区色| 91久久精品国产91久久性色tv| 欧美精品成人一区二区在线观看| 9人人澡人人爽人人精品| 日韩视频第一页| 国产精品大全| 久久久91精品国产| 免费久久精品视频| 一区二区三区 在线观看视频| 99国产精品一区| 国产精品色在线| 欧美+日本+国产+在线a∨观看| 美日韩在线观看| 亚洲精品国产精品国自产在线| 日韩一级在线观看| 国产日韩av在线播放| 久久久综合免费视频| 免费在线欧美视频| 亚洲视频免费在线观看| 亚洲男人的天堂在线观看| 好吊视频一区二区三区四区 | 久久久777| 欧美成人精品1314www| 亚洲天堂第二页| 久久成人精品| 亚洲视频一区在线| 欧美一区观看| 日韩亚洲欧美成人| 亚洲欧美综合国产精品一区| 亚洲动漫精品| 亚洲无毛电影| 亚洲国产天堂久久综合网| 一本一本a久久| 在线观看视频一区二区| 欧美一区二区在线免费观看| 久久亚洲捆绑美女| 欧美亚洲一区二区在线观看| 欧美成人一品| 久久婷婷国产综合精品青草| 欧美日韩一区二区在线观看视频| 久久中文字幕一区二区三区| 欧美日韩在线免费视频| 欧美成人r级一区二区三区| 国产精品萝li| 亚洲精品乱码久久久久久蜜桃91 | 欧美福利视频在线| 欧美一区二区网站| 欧美另类亚洲| 欧美 日韩 国产精品免费观看| 国产精品久久久久永久免费观看| 亚洲大片在线| 亚洲电影免费在线观看| 性感少妇一区| 欧美一区激情| 国产精品久久久久久久午夜 | 久久狠狠久久综合桃花| 亚洲一区二区三区影院| 男人的天堂亚洲| 免费视频亚洲| 激情五月婷婷综合| 欧美一区二区三区在线观看视频 | 国产精品视频免费观看| 亚洲剧情一区二区| 亚洲精品中文字幕有码专区| 久久综合999| 噜噜噜久久亚洲精品国产品小说| 国产日韩欧美制服另类| 亚洲专区免费| 欧美在线999| 国产手机视频精品| 亚洲女同同性videoxma| 先锋影院在线亚洲| 国产精品一区二区视频| 亚洲自拍偷拍网址| 久久成年人视频| 国产一区二区精品久久91| 欧美一区二区三区精品电影| 久久精品免费看| 极品尤物久久久av免费看| 久久久久国产一区二区三区| 六十路精品视频| 亚洲精品欧美一区二区三区| 欧美激情麻豆| 一本色道久久综合亚洲精品高清| 午夜精品久久久久久久久| 国产精品系列在线| 久久激情久久| 欧美激情一区二区三级高清视频| 亚洲精品中文字幕女同| 欧美视频中文一区二区三区在线观看| av成人免费观看| 欧美一区二区视频在线| 欧美怡红院视频一区二区三区| 老司机午夜精品| 夜夜嗨av一区二区三区网页 | 亚洲乱码国产乱码精品精天堂 | 国产精品日本精品| 久久精品视频在线观看| 亚洲第一区中文99精品| 亚洲午夜精品久久久久久app| 国产精品成人免费| 久久国产黑丝| 亚洲精品在线免费| 欧美一区二区三区免费观看| 亚洲第一福利在线观看| 欧美日韩免费在线| 久久爱www.| 亚洲精品免费一区二区三区| 欧美在线亚洲在线| 亚洲精品一区二区三区蜜桃久| 国产精品日韩精品欧美精品| 麻豆精品精华液| 亚洲资源在线观看| 亚洲激情视频| 久久野战av| 亚洲主播在线观看| 亚洲三级影片| 激情综合色丁香一区二区| 欧美午夜精品| 欧美暴力喷水在线| 欧美一区免费视频| 一本一本a久久| 亚洲电影毛片| 久久亚洲综合色一区二区三区| 亚洲综合视频1区| 亚洲精品偷拍| 在线看片日韩| 国产亚洲欧美aaaa| 国产精品高清在线观看| 欧美福利网址| 美女黄色成人网| 欧美一区二区在线视频| 亚洲少妇自拍| 夜夜嗨av一区二区三区网站四季av | 一区二区三区www| 亚洲黄色精品| 亚洲国产欧美一区二区三区久久 | 久久久久成人精品| 午夜国产精品视频免费体验区|