【正文】
棧大小有特殊要求的情況。設(shè)備的中斷服務(wù)例程并不在中斷消息中完成,核心內(nèi)核實(shí)現(xiàn)了一個(gè)功能更加完善的實(shí)時(shí)中斷處理機(jī)制用以處理設(shè)備中斷。Connect根據(jù)所提供的服務(wù)體的名字和小端口號給目標(biāo)服務(wù)體發(fā)送連接請求消息,由該服務(wù)體并對各項(xiàng)安全指標(biāo)進(jìn)行認(rèn)證,如果通過認(rèn)證則返回代表連接的描述符。(4) 檢查消息中的Complete位是否為”完成”(該位由回復(fù)元語設(shè)置),否則當(dāng)前執(zhí)行流睡眠在該消息上等待該位變?yōu)椤蓖瓿伞?。消息處理對提出請求的服?wù)體來說是總是同步的,服務(wù)體模型不支持異步通訊方式。例如,它允許把高層協(xié)議問題與特定的基礎(chǔ)硬件的管理分開,從而有可能支持多種硬件而不必重寫許多代碼,并可通過對同一協(xié)議設(shè)備服務(wù)體在運(yùn)行時(shí)插入不同的硬件驅(qū)動(dòng)程序來提高靈活性,還可把硬件限制對設(shè)備的用戶隱藏起來,或者增加硬件自身不支持的功能。MiniCore V3使用運(yùn)行環(huán)境服務(wù)體來實(shí)現(xiàn)現(xiàn)有多地址空間操作系統(tǒng)(如UNIX)如進(jìn)程控制、調(diào)度機(jī)制以及用戶API在內(nèi)的基本特征從而兼容不同的操作系統(tǒng)。 在表1中A是得到進(jìn)程號(GetPid);B是創(chuàng)建新的進(jìn)程(Fork);C是內(nèi)存的匿名映射(Mmap),映射的內(nèi)存大小為1M; D是父進(jìn)程向子進(jìn)程發(fā)送信號(Kill);E是加載ELF格式可執(zhí)行映像(Execve)。服務(wù)體之間通過消息進(jìn)行信息交換,不必關(guān)心服務(wù)體的具體位置使得服務(wù)體模型很容易應(yīng)用在分布式系統(tǒng)當(dāng)中,另一方面用戶可以根據(jù)需要選擇滿足需要的服務(wù)體方便的實(shí)現(xiàn)系統(tǒng)功能的剪裁。當(dāng)所有服務(wù)體都是用基本空間且應(yīng)用程序也組織為服務(wù)體,即可實(shí)現(xiàn)單地址操作系統(tǒng),小端口中的地址控制信息實(shí)現(xiàn)內(nèi)存保護(hù)。 Experience, 28(9), 901928 ,July 1998(5) Bryan Ford, Jay Lepreau. Evolving Mach to a Migrating Thread Model. In Proc. of the Winter Usenix Conference, January 1995(6) S. Shapiro, EROS: a fast capability system. In Proceedings of the 17th ACM Symposium on Operating Systems Principles, pages 170185, 1999.(7) 李宏,吳明橋,MiniCore體系結(jié)構(gòu)設(shè)計(jì),中國科大信息處理實(shí)驗(yàn)室技術(shù)報(bào)告,2002(8) 劉福巖,尤晉元,從多地址空間到單地址空間再到無地址空間,軟件學(xué)報(bào),9 / 9。服務(wù)體模型的這種特性為操作系統(tǒng)的設(shè)計(jì)者在效率、安全性等方面的權(quán)衡帶來很大的靈活性。實(shí)驗(yàn)數(shù)據(jù)表明二者之間的速度非常相近,考慮到平臺(tái)間的性能差別,這些數(shù)據(jù)可以直觀的表明服務(wù)體模型在服務(wù)體通訊、中斷的處理、驅(qū)動(dòng)程序的組織等方面具有很好的運(yùn)行效率。(2)由于所實(shí)現(xiàn)的Linux運(yùn)行環(huán)境是一個(gè)功能子集,由于少了很多功能限制,這一點(diǎn)也會(huì)引起運(yùn)行時(shí)間的不同。其他服務(wù)體也可以通過向服務(wù)體管理器訂閱這些錯(cuò)誤來改變這些默認(rèn)的動(dòng)作。否則將重定向服務(wù)體控制塊作為目標(biāo)服務(wù)體句柄并重復(fù)步驟(1)。掛在隊(duì)列上的消息由其他執(zhí)行流負(fù)責(zé)處理和回復(fù)。(2) 根據(jù)小端口的屬性切換資源和運(yùn)行狀態(tài)包括地址空間、堆棧、調(diào)度優(yōu)先級、存取控制信息以及運(yùn)行特權(quán)級等,必要時(shí)阻塞當(dāng)前執(zhí)行流以等待空閑的堆棧資源。目標(biāo)服務(wù)體的每個(gè)連接都使得該服務(wù)體的引用數(shù)增加一,釋放時(shí)引用數(shù)減一。需要相關(guān)異常、中斷消息的服務(wù)體可以通過訂閱核心內(nèi)核的相關(guān)消息來捕獲相應(yīng)的消息。服務(wù)體提供執(zhí)行流運(yùn)行所需要的棧,當(dāng)執(zhí)行流進(jìn)入通過小端口進(jìn)入服務(wù)體時(shí)要進(jìn)行堆棧切換。擴(kuò)展空間是服務(wù)體所私有的,私有空間是分頁管理的,可以根據(jù)需要交換到后備存儲(chǔ)器中以優(yōu)化系統(tǒng)內(nèi)存的使用。這樣就減少2 兩項(xiàng)的開銷。服務(wù)體管理器為每個(gè)服務(wù)體準(zhǔn)備了三個(gè)標(biāo)準(zhǔn)的插口:命令插口、異常插口、廣播插口。服務(wù)體是系統(tǒng)的基本組成單位,用戶程序包括驅(qū)動(dòng)程序在內(nèi)的各種功能組件都以服務(wù)體的形式存在,傳統(tǒng)的用戶程序模型(進(jìn)程/線程)通過運(yùn)行環(huán)境服務(wù)體實(shí)現(xiàn)兼容。執(zhí)行流根據(jù)用途分為普通執(zhí)行流和工作者執(zhí)行流兩類。 2.服務(wù)體模型的基本結(jié)構(gòu)服務(wù)體模型的基本結(jié)構(gòu)包括執(zhí)行流、服務(wù)體,服務(wù)體空間、服務(wù)體管理器,核心內(nèi)核等要素,各部分的關(guān)系如圖一所示。執(zhí)行流是比線程更基本的概念,執(zhí)行流是CPU對指令的執(zhí)行的抽象,是一種動(dòng)態(tài)的概念。單地址空間操作系統(tǒng)面臨的主要困難是要求運(yùn)行平臺(tái)提供大的虛擬尋址空間,同時(shí)難以完全兼容UNIX語義。微內(nèi)核的主要缺點(diǎn)是過大的運(yùn)行開銷,主要集中于過于頻繁的上下文切換以及由于進(jìn)程空間的隔離所帶來的進(jìn)程間通訊的開銷[1]?;诜?wù)體的操作系統(tǒng)體系結(jié)構(gòu)李宏基金項(xiàng)目: 本項(xiàng)目受到國家自然科學(xué)基金項(xiàng)目(60273042)和安徽省自然科學(xué)基金項(xiàng)目(03042203)支持作者介紹: 李宏,男, 博士研究生,1975,研究方向操作系統(tǒng);吳明橋,男,博士研究生,1978,研究方向操作系統(tǒng);龔育昌,女,博士生導(dǎo)師,1945,研究方向數(shù)據(jù)庫,算法,操作系統(tǒng),超媒體;趙振西,男,博士生導(dǎo)師,1937,研究方向體系結(jié)構(gòu),超媒體,操作系統(tǒng),開放性固件,低功耗。用戶級進(jìn)程/線程作為系統(tǒng)功能的提供者也給操作系統(tǒng)的調(diào)試帶來莫大的方便,可以較為容易構(gòu)建用戶態(tài)操作系統(tǒng)的模擬調(diào)試環(huán)境。單地址空間模型具有良好的運(yùn)行效率,易于實(shí)現(xiàn)單層次以及持久存儲(chǔ)系統(tǒng)。同步消息處理模式使我們可以采用一種新的系統(tǒng)抽象:執(zhí)行流。本文首先詳細(xì)描述了服務(wù)體模型的基本要素和工作原理,然后介紹了一個(gè)基于服務(wù)體模型的一個(gè)實(shí)例MiniCoreV3,并對