新聞中心

        EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 改進Minix 3進程間通信

        改進Minix 3進程間通信

        作者: 時間:2009-07-22 來源:網(wǎng)絡(luò) 收藏

        但是通過內(nèi)核緩沖的方法降低了系統(tǒng)的性能。首先內(nèi)核必須在內(nèi)核空間開辟公用的消息緩沖,在很多都需要消息傳遞時,緩沖區(qū)將出現(xiàn)溢出情況,并且不同改變緩沖區(qū)的消息時,使得地址空間相互獨立的設(shè)計思想被變相的破壞了,進程可以通過改變緩沖區(qū)中的消息來實現(xiàn)改變其他進程地址空間的內(nèi)容,這使得微內(nèi)核 3原本的高可靠性和高安全性設(shè)計思想被破壞。其次,消息必須被復制兩次,這兩次數(shù)據(jù)拷貝可能耗時很大,拷貝消息n字節(jié)的消息必須消耗20+0.75n次CPU指令周期[2],并且還會導致TLB和cache的未命中。

        在這里我們提出一種新的設(shè)計思路。內(nèi)核通過將進程A地址空間中的消息映射給B通過這種快速映射來實現(xiàn)消息的傳遞(見圖3)。在映射過程為了防止進程B對進程A中的該頁面進行修改而產(chǎn)生的不可靠性,在映射過程中采用了寫時拷貝技術(shù)。資源的復制是在進程B需要寫入時才會進行,在此之前,頁面以只讀方式共享。它將地址空間上的頁的拷貝被推遲到實際發(fā)生寫入的時候。

        這種方法避免了在內(nèi)核中設(shè)置消息緩沖,這也符合了是 3在消息傳遞采用的聚合原則。

        Intel系列CPU的MMU可以采用兩級頁表,第一級為頁目錄,大小為4KB,存儲在物理頁中,每個表項4字節(jié)長,共1024個表項。每個表項對應(yīng)第二級的一個頁表,第二級的每一個頁表也有1024個表項,每個表項對應(yīng)一個物理頁。由于 3采用了固定大小的消息,消息的大小隨機器的體系結(jié)構(gòu)的不同會有所不同,但消息大小肯定是在頁面大小以內(nèi)的。因此,一次消息的映射只需要復制一個頁表,即4字節(jié)而已(見圖4)。這種方法對于消息傳遞所付出的代價是可以忽略的。

        3、實驗及結(jié)果分析

        測試所使用的機器配置是:CPU:Intel Celeron 1.7GHZ;Cache:256K;內(nèi)存:1G。
        我們讓后的Minix 3的測試進程重復執(zhí)行系統(tǒng)調(diào)用,以此來達到頻繁切換地址空間與進程間的目的。例如getpid系統(tǒng)調(diào)用就是一個用戶進程到進程管理器的一次進程。測試結(jié)果如表1。


        可以看到,在加入分頁機制,對進程間通信和地址空間的切換進行后,性能的犧牲僅僅是5-10%左右,但在保證Minix 3原有的穩(wěn)定性與可靠性的基礎(chǔ)上,再次提高了穩(wěn)定性和可靠性,這是非常值得的。

        4、結(jié)論

        微內(nèi)核中困擾性能的兩大因素主要是進程間通信以及任務(wù)切換。除了對進程間通信做出以外,也需要對任務(wù)切換進行優(yōu)化。大量的任務(wù)切換直接導致了地址空間的轉(zhuǎn)換,而地址空間的切換必然伴隨著TLB的刷新,隨著TLB容量的增加,TLB的刷新也為地址空間切換的帶來了很大的開銷,可以設(shè)計一種能有效避免TLB刷新的方法。


        上一頁 1 2 下一頁

        關(guān)鍵詞: 通信 進程 Minix 改進

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 岗巴县| 肇源县| 东乡| 澄迈县| 克山县| 潼关县| 富裕县| 宜兴市| 都江堰市| 齐齐哈尔市| 剑阁县| 什邡市| 临潭县| 镇康县| 丘北县| 黎平县| 宁明县| 台前县| 长宁区| 襄汾县| 贡山| 石屏县| 新干县| 云林县| 美姑县| 万安县| 阿勒泰市| 崇阳县| 恭城| 柳江县| 右玉县| 洛阳市| 沙河市| 洪湖市| 木里| 深泽县| 海城市| 鲁山县| 阿坝县| 广河县| 定西市|