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

coreBugZJ

此 blog 已棄。

Minix 3 內(nèi)存管理


(Minix 3.1.0)

Minix 3 不支持頁式存儲,進(jìn)程在整個執(zhí)行過程中,所占用內(nèi)存的大小和位置不會變化。
它的內(nèi)存管理工作,主要是:
1.調(diào)用 fork() 創(chuàng)建新進(jìn)程時,為新進(jìn)程申請內(nèi)存;
2.調(diào)用 exec() 等更換內(nèi)存鏡像時,釋放舊鏡像占用的內(nèi)存,為新鏡像申請內(nèi)存(先釋放,后申請);
3.進(jìn)程結(jié)束(不管是自己退出,還是被殺死)時,釋放其所占用的內(nèi)存;
4.系統(tǒng)初始化時,系統(tǒng)進(jìn)程申請內(nèi)存。

下面不考慮系統(tǒng)初始化時的內(nèi)存管理工作。

在 Minix 3 中,由進(jìn)程管理器PM管理內(nèi)存。

Minix 3 中的程序可以被編譯為指令和數(shù)據(jù)不分離的形式,此時一個進(jìn)程的正文,數(shù)據(jù),堆棧共用一塊作為一個整體申請或釋放的內(nèi)存;
也可以被編譯為指令和數(shù)據(jù)分離的形式,兩部分占用的內(nèi)存分別管理。

指令和數(shù)據(jù)分離的好處在于可以通過共享正文來節(jié)約內(nèi)存:
1.當(dāng)一個進(jìn)程調(diào)用 fork() 來創(chuàng)建新進(jìn)程時,只需要為新進(jìn)程的數(shù)據(jù)和堆棧申請內(nèi)存,而正文可以共享。
2.當(dāng)一個進(jìn)程調(diào)用 exec() 等更換內(nèi)存鏡像時,系統(tǒng)進(jìn)程表會被搜索,以確定需要的正文是否已經(jīng)由其它進(jìn)程載入內(nèi)存,
若已經(jīng)載入,則該正文被共享,就只需為新鏡像的數(shù)據(jù)和堆棧申請內(nèi)存。
3.進(jìn)程結(jié)束時,它的數(shù)據(jù)和堆棧所占用的內(nèi)存會被釋放,而正文所占用的內(nèi)存,只有在該正文沒有被其它進(jìn)程共享時才會釋放。

Minix 3 雖不支持頁式存儲,但是提供一些用于交換的函數(shù),由文件
/include/minix/config.h 中的宏 ENABLE_SWAP 決定是否編譯進(jìn)系統(tǒng)。

進(jìn)程管理器PM管理內(nèi)存的主要數(shù)據(jù)結(jié)構(gòu)為 struct hole,
見 /servers/pm/alloc.c :

PRIVATE struct hole {
        struct hole *h_next;   /* pointer to next entry on the list */
        phys_clicks h_base;   /* where does the hole begin? */
        phys_clicks h_len;     /* how big is the hole? */
} hole[ NR_HOLES ];

使用單鏈表,按內(nèi)存地址由低到高記錄內(nèi)存塊。注意,進(jìn)程中數(shù)據(jù)和堆棧間的空隙被認(rèn)為已經(jīng)分配給了進(jìn)程,而不被記錄。
鏈表節(jié)點(diǎn)所占用的內(nèi)存,不是動態(tài)申請釋放的,而是定義了數(shù)組 hole,為鏈表節(jié)點(diǎn)提供內(nèi)存。

見該文件接下來的定義,
PRIVATE struct hole *hole_head;    /* pointer to first hole */
PRIVATE struct hole *free_slots;     /* ptr to list of unused table slots */

hole_head 一個單鏈表頭指針,此鏈表用于維護(hù)尚未分配的內(nèi)存塊,按內(nèi)存塊地址由低到高記錄。
free_slots 一個單鏈表頭指針,此鏈表用于維護(hù)數(shù)組 hole 中尚未被 hole_head 使用的節(jié)點(diǎn)。

mem_init() 對內(nèi)存管理的相關(guān)數(shù)據(jù)進(jìn)行初始化。
文件 /servers/pm/main.c 中的 main() 以適當(dāng)?shù)膮?shù)調(diào)用 mem_init() 完成內(nèi)存管理的初始化。

alloc_mem() 申請內(nèi)存。
當(dāng)申請一定大小的內(nèi)存時,遍歷鏈表 hole_head ,直至找到足夠大的內(nèi)存塊,從中剪切出所需大小。
即首次適應(yīng)算法。

free_mem() 釋放內(nèi)存。
與 alloc_mem() 功能相反,而且釋放內(nèi)存后,還會調(diào)用 merge() 合并相鄰的內(nèi)存塊。

merge() 合并連續(xù)的未分配內(nèi)存塊。
本來連續(xù)的內(nèi)存,經(jīng)過若干次內(nèi)存申請與釋放后,可能被切成多塊,由鏈表 hole_head 中的多個節(jié)點(diǎn)記錄,
每次釋放內(nèi)存后調(diào)用 merge() 以避免此情況出現(xiàn)。

del_slot() 將一個鏈表節(jié)點(diǎn)從 hole_head 中刪除,移入 free_slots 。
因?yàn)殒湵?hole_head 中的節(jié)點(diǎn)所占用的內(nèi)存不是動態(tài)申請釋放的,而是定義了數(shù)組,
需要新節(jié)點(diǎn)時,就從數(shù)組中取,所以需要一些相關(guān)的維護(hù)工作。

posted on 2011-10-21 21:21 coreBugZJ 閱讀(2514) 評論(2)  編輯 收藏 引用 所屬分類: OperatingSystem

Feedback

# re: Minix 3 內(nèi)存管理 2011-11-17 21:36 smy

怎么還在玩3.1.0啊~都快3.2.0了~  回復(fù)  更多評論   

# re: Minix 3 內(nèi)存管理 2011-11-18 20:09 coreBugZJ

@smy
作為初學(xué)者,我先學(xué)3.1.0~  回復(fù)  更多評論   


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品永久在线| 久久精品一区二区国产| 亚洲综合导航| 久久国产精品黑丝| 欧美国产日韩亚洲一区| 亚洲一区二区三区涩| 亚洲国产精品美女| 亚洲一区二区三区中文字幕| 狼人天天伊人久久| 国产精自产拍久久久久久蜜| 久久久久一区二区三区四区| 欧美日韩一区在线| 亚洲激情婷婷| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲经典在线| 性感少妇一区| 欧美成人久久| 欧美专区亚洲专区| 麻豆成人综合网| 国产日韩欧美在线视频观看| 亚洲日韩视频| 欧美一区2区三区4区公司二百| 亚洲精品久久久久| 欧美激情麻豆| 在线一区欧美| 亚洲在线免费观看| 欧美精品日韩一区| 欧美高清在线视频观看不卡| 免费视频一区| 99热这里只有精品8| 亚洲美女中文字幕| 欧美成人午夜激情在线| 免费人成精品欧美精品| 国产婷婷精品| 亚洲第一视频| 性欧美8khd高清极品| 麻豆久久婷婷| 亚洲美女视频| 亚洲男女毛片无遮挡| 噜噜噜噜噜久久久久久91 | 亚洲精品乱码久久久久久黑人| 欧美精品激情在线| 亚洲第一福利视频| 亚洲欧美色婷婷| 欧美午夜剧场| 在线观看亚洲视频| 久久亚洲精品伦理| 国产欧美日韩免费| 欧美刺激性大交免费视频| 亚洲女性喷水在线观看一区| 久久免费午夜影院| 鲁大师成人一区二区三区| 欧美专区在线观看| 亚洲第一福利社区| 亚洲视频在线观看免费| 亚洲理论在线观看| 亚洲黄色成人| 欧美综合77777色婷婷| 久久偷窥视频| 欧美在线亚洲在线| 亚洲美女av在线播放| 欧美午夜精品久久久久久超碰| 美女黄网久久| 欧美成人免费大片| 亚洲国产三级在线| 欧美成人官网二区| 久久综合五月| 久久亚洲春色中文字幕| 久久国产精品电影| 亚洲人成在线影院| 亚洲精品日韩综合观看成人91| 国产亚洲欧美日韩在线一区| 欧美三级日韩三级国产三级| 国产午夜精品福利 | 免费久久精品视频| 欧美一区二区免费视频| 免费视频亚洲| 亚洲精品日韩欧美| 久久福利精品| 国产精品日韩精品| 欧美日韩一区二区三区| 欧美大片在线看免费观看| 欧美精品大片| 亚洲人成久久| 亚洲精品在线观看免费| 欧美承认网站| 正在播放日韩| 久久资源在线| 欧美精品日韩一区| 欧美一级片在线播放| 欧美全黄视频| 久久视频国产精品免费视频在线| 免费观看日韩| 久久岛国电影| 亚洲国产综合91精品麻豆| 欧美一区二区免费| 欧美日韩亚洲另类| 欧美伊久线香蕉线新在线| 欧美日韩亚洲一区三区| 久久夜色精品国产噜噜av| 久久成人一区| 韩国精品在线观看| 欧美大片一区二区| 你懂的一区二区| 亚洲黄色一区| 亚洲毛片在线观看.| 国产一区二区0| 欧美资源在线观看| 欧美黄色精品| 亚洲欧美日韩综合| 久久久夜精品| 亚洲视频免费观看| 亚洲精品视频一区| 国产精品久久久久久久久久三级 | 性做久久久久久久久| 欧美人与禽性xxxxx杂性| 欧美一区二区三区四区在线观看地址 | 亚洲毛片在线看| 亚洲国产精品专区久久| 久久久久国产精品一区| 一区二区三区欧美在线| 亚洲高清在线观看一区| 美女视频黄 久久| 欧美黑人一区二区三区| 国产日韩欧美精品在线| 欧美亚洲三区| 香蕉久久夜色| 国内外成人在线视频| 一道本一区二区| 亚洲美女中文字幕| 欧美日韩一二区| 欧美国产精品人人做人人爱| 玖玖国产精品视频| 猛干欧美女孩| 国产亚洲精品久久久久动| 亚洲国产精品女人久久久| 国产日韩视频| 久久免费精品视频| 久久久久久久一区| 国产精品人成在线观看免费 | 欧美大秀在线观看| 欧美国产日韩一区二区| 在线观看一区二区精品视频| 免费亚洲一区二区| 亚洲免费视频成人| 欧美日韩亚洲天堂| 在线天堂一区av电影| 亚洲视频在线观看免费| 久久久精品一区| 欧美国产91| 日韩视频二区| 亚洲欧洲日产国产网站| 欧美激情一区二区三区在线视频| 亚洲伦伦在线| 91久久夜色精品国产九色| 女同性一区二区三区人了人一 | 日韩亚洲欧美在线观看| 在线观看一区视频| 亚洲黄色在线看| 亚洲尤物在线视频观看| 在线色欧美三级视频| 欧美视频中文在线看| 噜噜噜久久亚洲精品国产品小说| 亚洲精品网站在线播放gif| 99国产精品久久久久久久| 亚洲欧美在线x视频| 欧美日韩午夜视频在线观看| 欧美三级日本三级少妇99| 欧美视频免费| 久久国产精品网站| 宅男噜噜噜66国产日韩在线观看| 亚洲电影免费观看高清| 亚洲风情亚aⅴ在线发布| 一区二区毛片| 女女同性女同一区二区三区91| 亚洲国产日韩欧美在线99| 亚洲电影免费观看高清完整版在线| 亚洲综合日韩在线| 亚洲一品av免费观看| 久久久一区二区| 久久av资源网站| 久久亚洲综合网| 91久久精品日日躁夜夜躁欧美 | 女同一区二区| 亚洲国产一区二区三区a毛片| 这里是久久伊人| 亚洲麻豆av| 日韩一区二区久久| 国产精品成人一区二区三区吃奶 | 欧美va亚洲va国产综合| 亚洲国产乱码最新视频| 99这里只有精品| 亚洲午夜女主播在线直播| 欧美激情一区二区久久久| 国产视频欧美| 老色批av在线精品| av不卡在线看| 久久蜜桃资源一区二区老牛 | 欧美黄色一区二区| 亚洲第一视频网站|