新聞中心

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

        改進(jìn)Minix 3進(jìn)程間通信

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

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

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

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

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

        3、實(shí)驗(yàn)及結(jié)果分析

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


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

        4、結(jié)論

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


        上一頁(yè) 1 2 下一頁(yè)

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

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 旅游| 仙居县| 民县| 黄浦区| 温宿县| 宁安市| 祥云县| 惠水县| 隆德县| 锦屏县| 湄潭县| 东至县| 江源县| 银川市| 咸丰县| 长岛县| 于都县| 任丘市| 日土县| 黑龙江省| 攀枝花市| 将乐县| 璧山县| 汉阴县| 桦南县| 贵州省| 广德县| 丹棱县| 工布江达县| 建德市| 积石山| 浦江县| 镇江市| 崇义县| 额尔古纳市| 贵港市| 冷水江市| 贵州省| 石首市| 开封县| 和龙市|