引言
ç›®å‰åµŒå…¥å¼ç³»çµ±(tÇ’ng)開發(fÄ)已經(jÄ«ng)æˆç‚ºäº†è¨ˆ(jì)算機(jÄ«)å·¥æ¥(yè)æœ€ç†±é–€çš„é ˜(lÇng)域之一,嵌入å¼ç³»çµ±(tÇ’ng)應(yÄ«ng)用滲é€åˆ°ä¿¡æ¯å®¶é›»ã€å·¥æ¥(yè)控制ã€é€šä¿¡èˆ‡é›»åè¨(shè)å‚™ã€äººå·¥æ™ºèƒ½è¨(shè)å‚™ç‰è«¸å¤šé ˜(lÇng)åŸŸã€‚åµŒå…¥å¼æ“作系統(tÇ’ng)的引入大大æé«˜äº†åµŒå…¥å¼ç³»çµ±(tÇ’ng)çš„åŠŸèƒ½ï¼Œæ–¹ä¾¿äº†åµŒå…¥å¼æ‡‰(yÄ«ng)用軟件的è¨(shè)計(jì),但相應(yÄ«ng)也å 用了寶貴的嵌入å¼ç³»çµ±(tÇ’ng)資æºã€‚åŒæ™‚(shÃ)ï¼Œå› ?yà n)æ¦åº¦èƒ§ç¶‰?yÄ«ng)用系統(tÇ’ng)é…置差別較大,Iï¼Oæ“作也沒有標(biÄo)準(zhÇ”n)化,這部分驅(qÅ«)å‹•(dòng)軟件常常由應(yÄ«ng)ç”¨ç¨‹åºæä¾›ï¼Œé€™å°±è¦æ±‚在開發(fÄ)ç’°(huán)境ä¸èƒ½å¤ ?qÅ«)τ脩暨x定的實(shÃ)時(shÃ)æ“作系統(tÇ’ng)進(jìn)行剪è£å’Œæ“´(kuò)展,并和應(yÄ«ng)用程åºç¶å®šåœ¨ä¸€èµ·ç”Ÿæˆä¸€å€‹(gè)å¯é‹(yùn)行在目標(biÄo)ç’°(huán)境下的應(yÄ«ng)用系統(tÇ’ng)。所以é‡å°(duì)ä¸åŒæ‡‰(yÄ«ng)ç”¨éœ€æ±‚è£æ¸›æŽ‰ä¸éœ€è¦çš„æ“ä½œç³»çµ±(tÇ’ng)模塊,é…ç½®ç‰¹å®šçš„åµŒå…¥å¼æ“作系統(tÇ’ng)是é™ä½Žç³»çµ±(tÇ’ng)ç¡¬ä»¶æˆæœ¬ï¼Œ 減少系統(tÇ’ng)è³‡æºæ¶ˆè€—,æé«˜ç³»çµ±(tÇ’ng)éˆæ´»æ€§çš„é—œ(guÄn)éµã€‚
åµŒå…¥å¼æ“作系統(tÇ’ng)大多采用構(gòu)ä»¶åŒ–ã€æ¨¡å¡ŠåŒ–çš„è¨(shè)計(jì)æ€æƒ³ï¼Œä»¥æç©æœ¨çš„æ–¹å¼é€šéŽäº’連構(gòu)é€ è»Ÿä»¶å› è€Œæ˜¯å¯é…置的。但是由于æ“作系統(tÇ’ng)的多樣性,ä¸åŒæ“作系統(tÇ’ng)æä¾›çš„é…置方å¼è¿¥ç•°ä¸”ç¹ç°¡ä¸ä¸€ã€‚例如:風(fÄ“ng)河公å¸çš„VxWoksæ“作系統(tÇ’ng),其開發(fÄ)ç’°(huán)境Tornadoæä¾›çš„é…置工具å¯ä»¥å°(duì)æ“作系統(tÇ’ng)模塊進(jìn)è¡Œé¸æ“‡å’Œåˆªé™¤ï¼Œä½†å…¶é…置主è¦é‚„是通éŽç”¨æˆ¶å°(duì)目標(biÄo)系統(tÇ’ng)目錄樹下相關(guÄn)é…置文件進(jìn)行手工編輯和修改來完æˆçš„;科銀京æˆå…¬å¸ã€‚Delta OSçš„é…套開發(fÄ)ç’°(huán)境Lambda Tool,å¯ä»¥ç°¡å–®å°(duì)å…§(nèi)æ ¸åƒæ•¸(shù)ã€æ–‡ä»¶ç³»çµ±(tÇ’ng)åƒæ•¸(shù)和網(wÇŽng)絡(luò)系統(tÇ’ng)åƒæ•¸(shù)進(jìn)行è¨(shè)定。由于硬 件平臺(tái)的多樣性,å³ä½¿æ˜¯ç›¸åŒæ“作系統(tÇ’ng),其é…置也是有差別的。應(yÄ«ng)用程åºé–‹ç™¼(fÄ)è€…å¿…é ˆç†Ÿæ‚‰ä¸åŒçš„硬件平臺(tái)å’Œä¸åŒçš„æ“ä½œç³»çµ±(tÇ’ng)æ‰èƒ½é€²(jìn)行å¯è¡Œçš„æ‡‰(yÄ«ng)用的開發(fÄ)ï¼Œå¢žåŠ äº†æ‡‰(yÄ«ng)用開發(fÄ)的難度。
å°(duì)äºŽåµŒå…¥å¼æ‡‰(yÄ«ng)用的行æ¥(yè)開發(fÄ),往往æä¾›äº†å¤šç¨®æ“作系統(tÇ’ng)供應(yÄ«ng)用開發(fÄ)è€…é¸æ“‡ã€‚如果能æä¾›ä¸€å¥—çµ±(tÇ’ng)一的æ“作系統(tÇ’ng)é…置工具,那么應(yÄ«ng)用開發(fÄ)者ä¸å¿…å› ?yà n)檫x擇ä¸åŒçš„æ“ä½œç³»çµ±(tÇ’ng)è€Œé‡æ–°å¸(xué)ç¿’(xÃ)使用新的é…置環(huán)境,必然能æé«˜é–‹ç™¼(fÄ)效率,這在行æ¥(yè)開發(fÄ)䏿œ‰è‘—é‡è¦æ„義。
本文將軟件復(fù)用技術(shù)ç”¨äºŽåµŒå…¥å¼æ“作系統(tÇ’ng)的定制éŽç¨‹ï¼Œæå‡ºäº†ä¸€å€‹(gè)åµŒå…¥å¼æ“作系統(tÇ’ng)定制éŽç¨‹çš„通用模型(OSTAILOR),并在æ¤åŸºç¤Ž(chÇ”)ä¸Šç ”ç©¶è¨(shè)計(jì)了基于嵌入å¼Linuxçš„é…置剪è£å™¨ã€‚
1ã€åµŒå…¥å¼æ“作系統(tÇ’ng)é…置通用化模型
以æ“作系統(tÇ’ng)抽象模塊作為æ“作系統(tÇ’ng)é…置的基本單ä½ï¼Œåœ¨æ¤åŸºç¤Ž(chÇ”)ä¸Šå¾—åˆ°äº†åµŒå…¥å¼æ“作系統(tÇ’ng)é…置通用化模型OSCFG。
1.1 模型概述
如圖1所示,虛線框表示建立的æ“作系統(tÇ’ng)é…置模型。左邊的兩個(gè)實(shÃ)線框表示å°(duì)于æ“作系統(tÇ’ng)é…ç½®æ¨¡åž‹çš„è¼¸å…¥ï¼šé¸æ“‡é…置的æ“作系統(tÇ’ng)é¡žåž‹å’Œé¸æ“‡é…置的æ“作系統(tÇ’ng)抽象模塊。å³é‚Šçš„實(shÃ)線框表示輸出的é…置生æˆçµ(jié)果:特定的é…置文件。
[align=center][img=433,80]http://www.e-works.net.cn/images/128050202526093750.GIF[/img]
圖1 æ“作系統(tÇ’ng)定制éŽç¨‹[/align] æ“作系統(tÇ’ng)é…置模型的關(guÄn)éµåœ¨äºŽé€šç”¨æ€§ï¼Œå³å°(duì)ä¸åŒçš„æ“ä½œç³»çµ±(tÇ’ng)ï¼Œèƒ½å¤ åœ¨é‚輯上å°(duì)æ“作系統(tÇ’ng)æ‰€åŠƒåˆ†å‡ºä¾†çš„ç‰©ç†æ¨¡å¡Šä¿æŒé€æ˜Žæ€§ï¼Œå› 而,建模è¦é»ž(diÇŽn)在于以下兩點(diÇŽn):
â‘ å°(duì)å„å¼å„樣的æ“作系統(tÇ’ng)模塊進(jìn)行抽象,使之æˆç‚ºå°(duì)應(yÄ«ng)于é…置模型的抽象模塊。抽象模塊以模塊屬性文件的形å¼å˜æ”¾åœ¨æ§‹(gòu)件庫,供é…ç½®é¸ç”¨ã€‚
②抽象模塊最åŽèƒ½æ˜ 射為å°(duì)應(yÄ«ng)于ä¸åŒæ“作系統(tÇ’ng)的實(shÃ)體信æ¯ã€‚
åœ¨ä¸Šè¿°å‰æä¸‹ï¼Œæ§‹(gòu)建了如圖2所示的æ“作系統(tÇ’ng)é…ç½®éŽç¨‹æ¨¡åž‹ OSTAILOR。圖ä¸é™°å½±éƒ¨åˆ†å¯¦(shÃ)ç¾(xià n)了é…置的æ“作系統(tÇ’ng)ç„¡é—œ(guÄn)性,å¯ä»¥ç¨±ç‚ºæ“作系統(tÇ’ng)抽象層。 圖2 O$1AII一0RéŽç¨‹æ¨¡åž‹å°(duì)于具體的æ“作系統(tÇ’ng)模塊實(shÃ)體,首先經(jÄ«ng)éŽæ¨¡å¡ŠæŠ½è±¡ï¼Œå°è£æˆå°(duì)應(yÄ«ng)用å¯è¦‹çš„æ“ä½œç³»çµ±(tÇ’ng)抽象模塊。æ¯ä¸€å€‹(gè)æ“作系統(tÇ’ng)模塊包å«å…©å€‹(gè)é—œ(guÄn)éµå±¬æ€§ï¼šâ‘ 抽象出來的模塊åã€‚æ ¹æ“š(jù)æ¤æ¨¡å¡Šå,應(yÄ«ng)用開發(fÄ)人員å¯ä»¥çŸ¥é“æ¤æ“作系統(tÇ’ng)模塊具有的基本功能。②模塊層次,隸屬于ä¸åŒå±¤æ¬¡çš„æ¨¡å¡Šå…·æœ‰ä¸åŒçš„æ¨¡å¡Šç²’度。一般而言,越é 近底層的模塊,粒度越細(xì)。在é…置完æˆä»¥åŽï¼Œæ ¹æ“š(jù)ç”¨æˆ¶è¼¸å…¥é¸æ“‡éœ€è¦æ˜ 射的特定æ“作系統(tÇ’ng)ï¼Œæ ¹æ“š(jù)æ¤è¼¸å…¥é¸æ“‡ï¼Œæ¨¡å¡Šé…置完æˆä»¥åŽï¼Œæ‰èƒ½é¸æ“‡ç‰¹å®šçš„æ“ä½œç³»çµ±(tÇ’ng)æ˜ å°„ç®—æ³•å°‡æŠ½è±¡çš„æ¨¡å¡Šæ˜ å°„åˆ°å…·é«”çš„æ“作系統(tÇ’ng)功能上。
[align=center][img=352,232]http://www.e-works.net.cn/images/128050202750000000.GIF[/img]
圖2 OSTAILORéŽç¨‹æ¨¡åž‹[/align]
圖2ä¸æŠ½è±¡æ¨¡å¡Šé…置層完æˆçš„åŠŸèƒ½é‚„åŒ…æ‹¬å¯æ ¹æ“š(jù)ç”¨æˆ¶é¸æ“‡ï¼Œå°‡æ“作系統(tÇ’ng)抽象模塊é…ç½®æˆæ›´é«˜å±¤æ¬¡ï¼Œæ›´å¤§ç²’度的模塊,供本次æ“作系統(tÇ’ng)ç”Ÿæˆæˆ–下次定制使用。在這個(gè)æ“作系統(tÇ’ng)定制模型ä¸ï¼ŒæŠ½è±¡æ¨¡å¡Šé…置層以下層次完æˆçš„åŠŸèƒ½æ˜¯æ ¹æ“š(jù)模塊é…置層的é…ç½®çµ(jié)果和用戶å°(duì)æ“作系統(tÇ’ng)é¡žåž‹çš„é¸æ“‡ï¼Œå®Œæˆå°(duì)å…·é«”æ“作系統(tÇ’ng)çš„æ˜ å°„ã€‚é€™éƒ¨åˆ†å› ?yà n)榕cå…·é«”åµŒå…¥å¼æ“作系統(tÇ’ng)相關(guÄn)ï¼Œå› è€Œå…·æœ‰ç‰¹æ®Šæ€§ã€‚ç‚ºäº†å¯¦(shÃ)ç¾(xià n)é…置的通用性,也就需è¦è€ƒæ…®å¦‚何把特殊性é™ä½Žåˆ°æœ€å°ã€‚
1.2 基本工作原ç†
(1) é…置基本æµç¨‹
定制的基本æµç¨‹å¦‚圖3所示。用戶ç€è¦½å™¨æŸ¥è©¢æ§‹(gòu)件庫,并å°(duì)用戶顯示出å¯é¸æ¨¡å¡Šï¼Œç„¶åŽæŽ¥æ”¶ç”¨æˆ¶å°(duì)æ¨¡å¡Šçš„é¸æ“‡ï¼Œå°‡é¸æ“‡çµ(jié)æžœé€è‡³æ–‡ä»¶è§£æžå™¨ã€‚從構(gòu)件庫ç²å¾—å°(duì)應(yÄ«ng)模塊的屬性文件。通éŽè§£æžï¼Œå°‡è§£æžçµ(jié)æžœç”Ÿæˆæ¨¡å¡Šçµ(jié)æ§‹(gòu)æ˜ å°„é—œ(guÄn)系圖。模塊çµ(jié)æ§‹(gòu)é—œ(guÄn)系圖ä¸çš„æ¨¡å¡Šå‡ä»¥æŠ½è±¡é‚輯形å¼å˜åœ¨ï¼Œå¯ä»¥é€šéŽæŸ¥æ‰¾æ§‹(gòu)件庫得到它以文件形å¼å˜åœ¨ç‰©ç†å¯¦(shÃ)體信æ¯ã€‚æ ¹æ“š(jù)模塊çµ(jié)æ§‹(gòu)æ˜ å°„é—œ(guÄn)系圖和æ¯ä¸€å€‹(gè)模塊的物ç†å¯¦(shÃ)體信æ¯ã€‚生æˆå°(duì)應(yÄ«ng)çš„Makefile或其它一些相關(guÄn)é…置文件,把它æä¾›çµ¦å°(duì)應(yÄ«ng)çš„Make工具(編è¯å™¨ã€éˆæŽ¥å™¨ç‰ï¼‰ï¼Œæœ€åŽç”Ÿæˆç³»çµ±(tÇ’ng)çš„å¯åŸ·(zhÃ)行文件。
[align=center][img=462,242]http://www.e-works.net.cn/images/128050202942343750.GIF[/img]
圖3 é…置基本æµç¨‹[/align]
(2) 模塊抽象的層次劃分
一般說來,模塊的粒度越大,æ¯ä¸€å€‹(gè)模塊所包å«çš„功能越多,其å¯é…置性就越低;而模塊粒度越å°ï¼Œé…置復(fù)雜度越高。為了é”(dá)到é…ç½®çš„éˆæ´»æ€§å’Œæ–¹ä¾¿æ€§ï¼Œå¹¶å°‡é…ç½®ä¸æ¶‰åŠåˆ°æ“作系統(tÇ’ng)特殊性的地方é™åˆ°æœ€å°ï¼Œæˆ‘們將模塊抽象出來,并將其劃分為多級(jÃ)çµ(jié)æ§‹(gòu),ä¸åŒå±¤æ¬¡çš„æ¨¡å¡Šå°è£å…¶ä¸‹å±¤æ¨¡å¡Šï¼Œå½¢æˆä¸åŒçš„é…置粒度。ç¾(xià n)以3層çµ(jié)æ§‹(gòu)進(jìn)行æè¿°ï¼Œå¦‚圖4所示。
[align=center][img=500,213]http://www.e-works.net.cn/images/128050203171250000.GIF[/img]
圖4 模塊抽象çµ(jié)æ§‹(gòu)[/align]
圖4䏿œ€ä¸‹å±¤æ˜¯åŽŸåç´š(jÃ)模塊,它抽象了æ“作系統(tÇ’ng)的基本功能,包括任務(wù)(task)ã€Iï¼Oé©…(qÅ«)å‹•(dòng)(driver)ã€å®šæ™‚(shÃ)器(timel)ã€ä¿¡è™Ÿ(hà o)é‡ï¼ˆsernaphoreï¼‰ã€æ¶ˆæ¯éšŠ(duì)列(quecue)ã€äº‹ä»¶ï¼ˆevent group)ã€éƒµç®±ï¼ˆmailBox)ã€ç®¡é“(pipe)ç‰ã€‚除æ¤ä¹‹å¤–,還包括一些基本的應(yÄ«ng)用功能。之所以å–å為原åç´š(jÃ)模塊,是為了表明它是ä¸å¯å†åˆ†çš„基本模塊,是é…置其它層次模塊的基礎(chÇ”)。
原åç´š(jÃ)模塊的粒度å˜åœ¨äºŽç›®æ¨™(biÄo)代碼或庫文件級(jÃ)ï¼Œå› ?yà n)æ¨—îžæˆæ¶žå¥ˆé”¢éŸº?shÃ)體以目標(biÄo)代碼或庫文件å˜åœ¨ã€‚雖然在圖4的層次çµ(jié)æ§‹(gòu)ä¸ï¼Œå®ƒä¹Ÿæ˜¯ä½œç‚ºæŠ½è±¡çš„é‚輯模塊å˜åœ¨ï¼Œä½†æ˜¯å®ƒæ˜¯å’Œç‰©ç†å¯¦(shÃ)é«”è¯(lián)系最緊密的一層,也是模塊粒度最細(xì)çš„ä¸€å±¤ã€‚å› è€Œåœ¨é…ç½®éŽç¨‹çµ(jié)æŸä»¥åŽï¼Œé€šéŽé€™å±¤æ˜ 射到ä¸åŒçš„æ–‡ä»¶ï¼Œç”¢(chÇŽn)生ä¸åŒæ ¼å¼çš„é…置文件,é”(dá)到é…ç½®ä¸åŒæ“作系統(tÇ’ng)的目的。原åç´š(jÃ)模塊完æˆçš„åªæ˜¯æŸä¸€ç‰¹å®šåŠŸèƒ½çš„ä¸€éƒ¨åˆ†ï¼Œæˆ–è€…åªæ˜¯æŸä¸€ç‰¹å®šåŠŸèƒ½ä¸€å€‹(gè)ååŠŸèƒ½ï¼Œå¿…é ˆå’Œå…¶å®ƒåŽŸåç´š(jÃ)模塊相çµ(jié)臺(tái)æ‰èƒ½ç™¼(fÄ)æ®æ‡‰(yÄ«ng)æœ‰çš„ä½œç”¨ã€‚å› è€Œåœ¨å®ƒçš„ä¸Šå±¤æå‡ºäº†åŠŸèƒ½ç´š(jÃ)模塊的概念。
功能級(jÃ)模塊由原åç´š(jÃ)模塊é…置生æˆã€‚é€šéŽæŠŠä¸åŒçš„原åç´š(jÃ)模塊çµ(jié)åˆåœ¨ä¸€èµ·ï¼Œå®ŒæˆæŸä¸€ç‰¹å®šåŠŸèƒ½ï¼Œå¹¶åŠ å¤§äº†æ¨¡å¡Šç²’åº¦ã€‚ä¾‹å¦‚ï¼Œé…置無線上網(wÇŽng)的功能模塊,除了è¦é¸æ“‡ç„¡ç·šä¸Šç¶²(wÇŽng)本身這個(gè)原åç´š(jÃ)模塊,還需è¦é¸æ“‡æ“作系統(tÇ’ng)䏿”¯æŒä¸Šç¶²(wÇŽng)功能的原åç´š(jÃ)模塊,比如TCPï¼IPå”(xié)è°æ£§ã€‚
é€šéŽæŠŠåŠŸèƒ½ç´š(jÃ)模塊組è£åœ¨ä¸€èµ·ï¼Œå®Œæˆæ›´å¼·(qiáng)大的功能,就構(gòu)æˆäº†æ‡‰(yÄ«ng)用級(jÃ)模塊。æ¯ä¸€å€‹(gè)應(yÄ«ng)用級(jÃ)模塊都是一個(gè)功能模塊集,也是粒度最大的一層模塊。å°(duì)于應(yÄ«ng)用程åºé–‹ç™¼(fÄ)者,為了開發(fÄ)特定的應(yÄ«ng)用程åºï¼Œå¦‚æžœä¸æƒ³é¸æ“‡ç´°(xì)粒度的模塊,å¯ä»¥ç›´æŽ¥é¸æ“‡æ‡‰(yÄ«ng)用級(jÃ)模塊來é…ç½®æ“作系統(tÇ’ng)。
這種模塊化的分層çµ(jié)æ§‹(gòu),能為開發(fÄ)者æä¾›ä¸åŒçš„æ¨¡å¡Šç²’度,使用戶å¯ä»¥æ ¹æ“š(jù)需è¦ï¼Œé¸æ“‡ä¸åŒå±¤æ¬¡çš„æ¨¡å¡Šï¼Œä»¥ä¾¿å¢žå¼·(qiáng)定制éŽç¨‹çš„éˆæ´»æ€§ï¼›è€Œå…¶æœ€å¤§çš„優(yÅu)點(diÇŽn)是,å°(duì)于æ¯ä¸€æ¬¡å®šåˆ¶éœ€æ±‚的改變,ä¸å¿…由最細(xì)粒度的原åç´š(jÃ)模塊é…ç½®é‡æ–°åšèµ·ï¼Œè€Œæ˜¯å¯ä»¥å°(duì)需求改變進(jìn)行分æžï¼Œæ›¿æ›æŽ‰æ°ç•¶(dÄng)ç²’åº¦çš„æ¨¡å¡Šï¼Œä¿æŒå…¶å®ƒéƒ¨åˆ†ä¸è®Šï¼Œç°¡åŒ–了é…ç½®éŽç¨‹ï¼Œæ¸›å°‘了é…置時(shÃ)間。
(3) 模塊層次的解æž
模塊解æžå’Œæ¨¡å¡Šé…ç½®éŽç¨‹æ£å¥½ç›¸å。模塊é…置是從最底層開始,é€å±¤æ§‹(gòu)建出高層模塊;而模塊解æžå‰‡å¾žæœ€ä¸Šå±¤é–‹å§‹ï¼Œå±¤å±¤å‘ä¸‹ï¼Œç›´åˆ°å°‹æ‰¾åˆ°æœ€ä¸‹å±¤çš„æ˜ å°„é—œ(guÄn)ç³»ï¼ŒåŒæ™‚(shÃ)æ§‹(gòu)é€ å‡ºå°(duì)應(yÄ«ng)的關(guÄn)系圖。
基于å°(duì)模塊的å°è£ï¼Œæ¯å±¤æ¨¡å¡Šåªé—œ(guÄn)心和它緊密è¯(lián)ç³»çš„ä¸‹å±¤æ¨¡å¡Šçš„æ˜ å°„é—œ(guÄn)系,å³å®ƒæ˜¯ç”±ä¸‹å±¤çš„什么模塊所構(gòu)æˆçš„。為æ¤ï¼Œæˆ‘們在é…ç½®ç”Ÿæˆæ¯ä¸€å€‹(gè)模塊時(shÃ),將它å°(duì)ä¸‹å±¤çš„æ˜ å°„é—œ(guÄn)ç³»ä¿å˜åœ¨æ•¸(shù)據(jù)庫ä¸ã€‚
é€å±¤è§£æžæ™‚(shÃ),我們把模塊å作為關(guÄn)ç³»åœ–çš„é ‚å±¤çµ(jié)點(diÇŽn),并在數(shù)據(jù)åº«ä¸æŸ¥æ‰¾å®ƒå°(duì)ä¸‹å±¤æ¨¡å¡Šçš„æ˜ å°„é—œ(guÄn)ç³»ã€‚æ ¹æ“š(jù)æ˜ å°„é—œ(guÄn)ç³»ä¸æ¶‰åŠçš„下層模塊,如果關(guÄn)系圖ä¸ä¸å˜åœ¨å®ƒå°(duì)應(yÄ«ng)çš„çµ(jié)點(diÇŽn),在關(guÄn)ç³»åœ–ä¸æ·»åŠ æ–°çš„çµ(jié)點(diÇŽn),æ¯å€‹(gè)æ–°çµ(jié)點(diÇŽn)å°(duì)應(yÄ«ng)一個(gè)下層模塊åã€‚æ ¹æ“š(jù)æ˜ å°„é—œ(guÄn)ç³»ï¼Œæ·»åŠ åœ–ä¸çš„æ‹“?fù)æ½¢P(guÄn)系。å†å°‡æ¯å€‹(gè)æ–°çµ(jié)點(diÇŽn)作為一個(gè)æ–°çš„é ‚å±¤çµ(jié)點(diÇŽn),é‡å¾©(fù)剛æ‰çš„éŽç¨‹ï¼Œç›´è‡³æœ€çµ‚æ˜ å°„åˆ°åŽŸåç´š(jÃ)æ§‹(gòu)件,則構(gòu)é€ å‡ºä¸€å€‹(gè)完整的關(guÄn)系圖。å¯ä»¥èªªï¼Œé—œ(guÄn)系圖生æˆçš„éŽç¨‹ä¹Ÿå°±æ˜¯æ•´å€‹(gè)æ˜ å°„çš„éŽç¨‹ã€‚算法æè¿°å¦‚圖5所示。
[align=center][img=490,434]http://www.e-works.net.cn/images/128050204730625000.GIF[/img]
圖5 è§£æžç®—法æè¿°[/align] (4) é…置的最終完æˆ
到模塊層次解æžéŽç¨‹å®Œæˆç‚ºæ¢ï¼Œæ‰€æœ‰çš„æ“ä½œå‡å±äº†æ“作系統(tÇ’ng)的特殊性;但嵌入å¼ç³»çµ±(tÇ’ng)是多樣的,ä¸åƒ…é«”ç¾(xià n)在æ“作系統(tÇ’ng)的多樣性上,而且,å³ä½¿ç›¸åŒçš„æ“ä½œç³»çµ±(tÇ’ng),å°(duì)應(yÄ«ng)ä¸åŒçš„處ç†å™¨ï¼Œå…¶çµ„æˆä¹Ÿæ˜¯åƒå·®è¬åˆ¥çš„。為了生æˆç”¨æˆ¶å®šåˆ¶çš„å…·é«”æ“作系統(tÇ’ng)ï¼Œæ ¹æ“š(jù)ç”¨æˆ¶è¼¸å…¥é¸æ“‡çš„æ“ä½œç³»çµ±(tÇ’ng)類型,在上é¢è§£æžè™•ç†ç”Ÿæˆçš„é—œ(guÄn)系圖ä¸ï¼Œé¸æ“‡å‡ºåº¦ç‚ºOçš„çµ(jié)點(diÇŽn)(å³ç‚ºåŽŸåç´š(jÃ)模塊å°(duì)應(yÄ«ng)çš„çµ(jié)點(diÇŽn)ï¼‰æ˜ å°„åˆ°ä¸åŒçš„æ“ä½œç³»çµ±(tÇ’ng)實(shÃ)é«”ï¼Œå†æ ¹æ“š(jù)ä¸åŒç·¨è¯å™¨ã€éˆæŽ¥å™¨èƒ½è˜(shÃ)別的è¦(guÄ«)則,生æˆä¸åŒçš„makefile文件ã€configæ–‡ä»¶å’Œè³‡æºæ–‡ä»¶ã€‚å¯ä»¥èªªï¼Œå„種é…ç½®æ–‡ä»¶çš„ç”Ÿæˆæ¨™(biÄo)å¿—è‘—æ“作系統(tÇ’ng)定制éŽç¨‹çš„完æˆã€‚
2ã€åŸºäºŽåµŒå…¥å¼Linuxçš„é…置剪è£å™¨çš„實(shÃ)ç¾(xià n)
使用定制éŽç¨‹çš„通用模型,我們實(shÃ)ç¾(xià n)了一個(gè)嵌入å¼Linuxçš„é…置剪è£å™¨ã€‚該é…置剪è£å™¨ä½œç‚ºä¸€å€‹(gè)工具集æˆåˆ°åŸºäºŽåµŒå…¥å¼Linuxçš„PDA手機(jÄ«)開發(fÄ)平臺(tái)ä¸ã€‚é…置剪è£å™¨ä½¿ç”¨æ§‹(gòu)件庫管ç†å™¨ä½œç‚ºå…¶å¯é¸æŠ½è±¡æ¨¡å¡Šçš„容器,而其輸出的é…置文件則æä¾›çµ¦é …(xià ng)目管ç†å™¨ï¼Œç”±åŽè€…æäº¤çµ¦ç·¨è¯å™¨å’ŒéˆæŽ¥å™¨é€²(jìn)行æ“作系統(tÇ’ng)生æˆã€‚三者的關(guÄn)系如圖6所示。
䏋颿˜¯ä¸‰å€‹(gè)工具的功能說明。
[align=center][img=418,168]http://www.e-works.net.cn/images/128050204936406250.GIF[/img]
圖6 PDS手機(jÄ«)開發(fÄ)平臺(tái)çµ(jié)æ§‹(gòu)[/align]
(1) é…置剪è£å™¨
①顯示從構(gòu)件庫ç²å¾—的已有模塊信æ¯ã€‚
â‘¡æ ¹æ“š(jù)ç”¨æˆ¶é¸æ“‡ï¼Œé…置新的模塊,并將模塊信æ¯å˜å…¥æ§‹(gòu)件庫,供下次定制時(shÃ)作為已有模塊使用。
③定制特定應(yÄ«ng)用開發(fÄ)所需的æ“作系統(tÇ’ng):用戶å¯ä»¥é¸æ“‡æ§‹(gòu)件庫ä¸å·²å˜åœ¨çš„ä¸åŒç²’度的模塊進(jìn)行é…置。在需è¦ç·¨è¯é€£æŽ¥ç”Ÿæˆå¯ä¸‹è¼‰åˆ°ç›®æ¨™(biÄo)機(jÄ«)的目標(biÄo)代碼時(shÃ),生æˆå°(duì)應(yÄ«ng)çš„é…ç½®æ–‡ä»¶ï¼Œå‚³çµ¦é …(xià ng)目管ç†å™¨ã€‚
(2) æ§‹(gòu)件庫管ç†å™¨
ä¿å˜æ“作系統(tÇ’ng)抽象模塊信æ¯ï¼Œä¾›é…置剪è£å™¨æŸ¥è©¢å’Œä½¿ç”¨ã€‚查詢內(nèi)容包括:①å¯ä»¥é…置的模塊å,供é…置剪è£å™¨æå–出顯示在用戶界é¢ä¸Šï¼Œä¾›ç”¨æˆ¶é…ç½®é¸æ“‡ï¼›â‘¡æ¯å€‹(gè)模塊å°(duì)å®ƒä¸‹ä¸€å±¤çš„æ˜ å°„ä¿¡æ¯ã€‚æ ¹æ“š(jù)æ¤æ˜ å°„ä¿¡æ¯ï¼Œå¯ä»¥é€²(jìn)è¡Œéžæ¸å¾€ä¸‹æŸ¥æ‰¾ï¼Œå› 而支æŒé…置剪è£å™¨ä¸å°(duì)æ¯å€‹(gè)模塊的層次解æžå’Œæ“作系統(tÇ’ng)æ˜ å°„åŠŸèƒ½ã€‚
(3) é …(xià ng)目管ç†å™¨
é …(xià ng)目管ç†å™¨ç®¡ç†æ‡‰(yÄ«ng)用程åºçš„開發(fÄ)ï¼Œå› è€Œé …(xià ng)目管ç†å™¨å‘é…置剪è£å™¨æä¾›æ‡‰(yÄ«ng)用開發(fÄ)者編制的應(yÄ«ng)用程åºçš„æºæ–‡ä»¶è·¯å¾‘ä¿¡æ¯ã€‚嵌入å¼è»Ÿä»¶çš„æœ€å¤§ç‰¹é»ž(diÇŽn)就是應(yÄ«ng)用程åºå¾€å¾€ä¸æ˜¯ç¨(dú)ç«‹å˜åœ¨çš„,它最終和æ“作系統(tÇ’ng)一é“作為二進(jìn)制目標(biÄo)代碼下載到目標(biÄo)機(jÄ«)。所以,é…置剪è£å™¨éœ€æŠŠå¾žé …(xià ng)目管ç†å™¨ç²å¾—çš„æºæ–‡ä»¶è·¯å¾‘ä¿¡æ¯å¯«å…¥å°(duì)應(yÄ«ng)çš„Makefile文件ä¸ã€‚
以用戶的應(yÄ«ng)用程åºé–‹ç™¼(fÄ)é…置所需的應(yÄ«ng)用級(jÃ)模塊為例,將é…置剪è£å™¨å·¥ä½œæ¥é©Ÿèªªæ˜Žå¦‚下:
â‘ é¸æ“‡æ§‹(gòu)件庫ä¸å·²æœ‰çš„æ‡‰(yÄ«ng)用級(jÃ)模塊,定制æ“作系統(tÇ’ng),將é…置文件路徑ä¿å˜åœ¨æ§‹(gòu)件庫管ç†å™¨ä¸ã€‚
â‘¡ç•¶(dÄng)æ”¶åˆ°é …(xià ng)目管ç†å™¨ç²å¾—å…·é«”æ“作系統(tÇ’ng)é…置文件的請求時(shÃ),查找構(gòu)件庫,得到ä¿å˜çš„特定應(yÄ«ng)用的é…ç½®æ–‡ä»¶è·¯å¾‘ã€‚æ ¹æ“š(jù)æ¤è·¯å¾‘和文件å,打開文件進(jìn)行解æžï¼Œç²å¾—應(yÄ«ng)用所包å«çš„æ‡‰(yÄ«ng)用級(jÃ)模塊的個(gè)數(shù)和模塊å,生æˆåˆå§‹çš„é—œ(guÄn)系圖。
â‘¢æ ¹æ“š(jù)應(yÄ«ng)用級(jÃ)模塊的個(gè)數(shù)和模塊å,查找構(gòu)件庫,得到æ¯å€‹(gè)應(yÄ«ng)用級(jÃ)模塊的é…置文件åå’Œè·¯å¾‘ã€‚è§£æžæ–‡ä»¶å¾—到å°(duì)應(yÄ«ng)的功能級(jÃ)模塊,將功能級(jÃ)模塊和å°(duì)應(yÄ«ng)æ‹“?fù)æ½¢P(guÄn)ç³»æ·»åŠ åœ¨é—œ(guÄn)系圖ä¸ã€‚
④以æ¤é¡žæŽ¨ï¼Œç›´åˆ°æ‰¾åˆ°å°(duì)應(yÄ«ng)的原åç´š(jÃ)模塊,最終生æˆä¸€å€‹(gè)完整的關(guÄn)系圖。
â‘¤æ ¹æ“š(jù)é—œ(guÄn)系圖查找構(gòu)件庫,把原åç´š(jÃ)æ¨¡å¡Šæ˜ å°„åˆ°å®šåˆ¶çš„æ“作系統(tÇ’ng)實(shÃ)體上。本系統(tÇ’ng)利用Linux自帶é…置系統(tÇ’ng),通éŽä¿®æ”¹Linuxçš„æºç¢¼ç³»çµ±(tÇ’ng)ä¸å·²æœ‰çš„Makefileå’Œkconfig文件,來編è¯å…§(nèi)æ ¸ï¼Œç”Ÿæˆç”¨æˆ¶å®šåˆ¶çš„æ“ä½œç³»çµ±(tÇ’ng)å…§(nèi)æ ¸ã€‚å› æ¤åŽŸåç´š(jÃ)模塊å°(duì)應(yÄ«ng)于特定æ“作系統(tÇ’ng)的實(shÃ)體信æ¯å°±æ˜¯kconfig文件ä¸éœ€æ·»åŠ çš„é…ç½®é …(xià ng)ï¼Œå¦‚é¸æ“‡äº†ç¶²(wÇŽng)絡(luò)模塊å°(duì)應(yÄ«ng)的實(shÃ)體信æ¯ï¼Œå³â€œCONFIG_NET=yâ€é…ç½®é …(xià ng)。
çµ(jié)語
通éŽå°(duì)æ“作系統(tÇ’ng)定制技術(shù)進(jìn)è¡Œç ”ç©¶ï¼ŒæŠ½è±¡å‡ºæ“作系統(tÇ’ng)定制éŽç¨‹é€šç”¨æ¨¡åž‹OSTAILOR,并çµ(jié)åˆ863é …(xià ng)目“é¢å‘PDA手機(jÄ«)的嵌入å¼è»Ÿä»¶é–‹ç™¼(fÄ)平臺(tái)â€å¯¦(shÃ)ç¾(xià n)了一個(gè)嵌入å¼Linuxçš„é…置剪è£å™¨ã€‚用戶å¯ä»¥ä½¿ç”¨æœ¬å·¥å…·å‹å¥½çš„圖形化界é¢å°(duì)Linuxå…§(nèi)æ ¸çµ„ä»¶åŠæ‡‰(yÄ«ng)用模塊進(jìn)行æ“作系統(tÇ’ng)定制,自動(dòng)生æˆå„種é…ç½®ä¸é–“文件,é¿å…了手工編寫修改這些文件的ç¹ç‘£ï¼Œå¾žè€Œæ¼”ç¤ºäº†ä½¿ç”¨æ¤æ¨¡åž‹ä¾†å¯¦(shÃ)ç¾(xià n)åµŒå…¥å¼æ“作系統(tÇ’ng)定制éŽç¨‹çš„通用化的å¯è¡Œæ€§ã€‚但是在本模型ä¸ï¼Œæ‡‰(yÄ«ng)用開發(fÄ)者定制了特定的æ“作系統(tÇ’ng)ï¼Œå°±å¿…é ˆä½¿ç”¨è©²æ“作系統(tÇ’ng)æä¾›çš„æ‡‰(yÄ«ng)用編程接å£ï¼ˆAPI)。若需修改定制的æ“作系統(tÇ’ng)ï¼Œå°±å¿…é ˆæ›¿æ›æ‡‰(yÄ«ng)用程åºä¸å°(duì)應(yÄ«ng)çš„API。如何在æ“作系統(tÇ’ng)定制éŽç¨‹ä¸ï¼Œæ»¿è¶³æ‡‰(yÄ«ng)用開發(fÄ)çš„æ“作系統(tÇ’ng)ç„¡é—œ(guÄn)性,將是本課題進(jìn)一æ¥ç ”究的方å‘。