王懷民,毛曉光,丁 博,沈 潔,羅 磊,任 怡
1(國(guó)防科技大學(xué),湖南 長(zhǎng)沙 410073)
2(國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)
系統(tǒng)軟件是計(jì)算學(xué)科的基本概念之一,早期,此概念是關(guān)于操作系統(tǒng)、編譯系統(tǒng)等基礎(chǔ)性軟件的統(tǒng)稱(chēng).隨著計(jì)算技術(shù)應(yīng)用范圍和應(yīng)用模式的不斷拓展,后續(xù)出現(xiàn)的數(shù)據(jù)庫(kù)管理系統(tǒng)、網(wǎng)絡(luò)中間件、云計(jì)算基礎(chǔ)軟件,甚至網(wǎng)絡(luò)瀏覽器等基礎(chǔ)性軟件也被歸入系統(tǒng)軟件的范疇.今天,隨著計(jì)算技術(shù)的持續(xù)變遷,系統(tǒng)軟件的外延仍在不斷拓展.那么,系統(tǒng)軟件的本質(zhì)特征究竟是什么?什么樣的軟件應(yīng)該屬于系統(tǒng)軟件范疇,或者因?yàn)槭裁礃拥膶傩允沟靡环N軟件應(yīng)該納入系統(tǒng)軟件的范疇?當(dāng)今的系統(tǒng)軟件具有什么樣的時(shí)代特點(diǎn)?如何認(rèn)識(shí)和把握系統(tǒng)軟件的未來(lái)發(fā)展趨勢(shì)?這是軟件領(lǐng)域研究者和實(shí)踐者關(guān)注的問(wèn)題.本文試圖從系統(tǒng)軟件的本質(zhì)特征、時(shí)代特點(diǎn)和發(fā)展趨勢(shì)這3個(gè)方面給出關(guān)于系統(tǒng)軟件的3個(gè)新洞察.
系統(tǒng)軟件是指操縱計(jì)算系統(tǒng)(硬件形態(tài)或軟件系統(tǒng))有效執(zhí)行、為上層應(yīng)用軟件提供運(yùn)行支撐的軟件.本文認(rèn)為,系統(tǒng)軟件的本質(zhì)特征是“操縱計(jì)算系統(tǒng)執(zhí)行”.這一洞察的理論源頭和技術(shù)源頭分別是阿蘭?圖靈的通用圖靈機(jī)模型和馮?諾依曼的“存儲(chǔ)程序”的通用電子計(jì)算機(jī)體系結(jié)構(gòu).
在軟件領(lǐng)域,系統(tǒng)軟件與應(yīng)用軟件的分野并非偶然,而是圖靈可計(jì)算理論,特別是通用圖靈機(jī)模型在實(shí)現(xiàn)層面上映射的必然結(jié)果.阿蘭?圖靈在1936年發(fā)表的著名論文“On Computable Numbers,with an Application to the Entscheidungsproblem”[1]不僅奠定了圖靈可計(jì)算的理論基礎(chǔ),而且也為系統(tǒng)軟件提供了理論依據(jù).具體表現(xiàn)在兩個(gè)方面.
· 第一,圖靈提出,把“一個(gè)可計(jì)算序列γ由計(jì)算γ的機(jī)器所描述”,這個(gè)機(jī)器就是圖靈構(gòu)思的圖靈機(jī),并且“可以用一個(gè)整數(shù)(描述數(shù))唯一確定一臺(tái)機(jī)器”[1],即,每個(gè)圖靈機(jī)可被規(guī)范表示或編碼.理論上講,此后發(fā)展起來(lái)的編程和編譯系統(tǒng)由此發(fā)端;
· 第二,圖靈提出能夠模擬任何圖靈機(jī)的機(jī)器,被稱(chēng)為通用圖靈機(jī)(或通用計(jì)算機(jī)器、通用機(jī)),通用圖靈機(jī)u通過(guò)在紙帶的開(kāi)頭寫(xiě)入任意圖靈機(jī)M的標(biāo)準(zhǔn)描述,可以模擬計(jì)算出與M相同的序列,即,實(shí)現(xiàn)通用計(jì)算.理論上講,此后發(fā)展起來(lái)的操作系統(tǒng)由此發(fā)端.
如今,主流的計(jì)算機(jī)系統(tǒng)從計(jì)算模型上講就是通用圖靈機(jī),其上執(zhí)行的軟件,從表示模型上講,就是完成該軟件所描述計(jì)算的圖靈機(jī)編碼,而系統(tǒng)軟件正是通用圖靈機(jī)模型在軟件實(shí)現(xiàn)層面上的具體表現(xiàn)形態(tài):從圖靈可計(jì)算角度而言,系統(tǒng)軟件具備接收、支撐和管理應(yīng)用層“圖靈機(jī)”的能力,負(fù)責(zé)“操縱”應(yīng)用層“圖靈機(jī)”的執(zhí)行;從實(shí)現(xiàn)角度而言,系統(tǒng)軟件是當(dāng)今各類(lèi)計(jì)算系統(tǒng)可被編碼、可被高效加載和執(zhí)行的前提和基礎(chǔ).
因此,系統(tǒng)軟件的本質(zhì)特征是“操縱”計(jì)算系統(tǒng)有效“執(zhí)行”的軟件.這里的“計(jì)算系統(tǒng)”包括了單一應(yīng)用軟件系統(tǒng),或者分布式系統(tǒng)乃至未來(lái)大規(guī)模人機(jī)物融合系統(tǒng),而“操縱”則具體有兩層含義.
· 編碼與加載.也即編碼并加載計(jì)算系統(tǒng),實(shí)現(xiàn)對(duì)其執(zhí)行生命周期的管理,能夠通過(guò)編排和協(xié)調(diào)硬件資源,為計(jì)算系統(tǒng)提供良好的通用執(zhí)行管理;
· 執(zhí)行與管控.也即在運(yùn)行時(shí)管控硬件資源和計(jì)算系統(tǒng)運(yùn)行時(shí)行為,從而實(shí)現(xiàn)對(duì)計(jì)算機(jī)資源的高效利用和高效復(fù)用.
需要指出的是:依據(jù)上述定義,單純地進(jìn)行數(shù)據(jù)查詢(xún)的數(shù)據(jù)庫(kù)管理系統(tǒng)并不屬于系統(tǒng)軟件范疇,因?yàn)樗痪邆湓谶\(yùn)行時(shí)“操縱”計(jì)算系統(tǒng)執(zhí)行的能力,僅僅是按照一定方式來(lái)存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù).但是,如果一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)加入了管理、裝載和執(zhí)行“存儲(chǔ)過(guò)程”的能力,則該數(shù)據(jù)庫(kù)管理系統(tǒng)可以劃歸系統(tǒng)軟件.部分瀏覽器也可以劃歸系統(tǒng)軟件,這是因?yàn)?它們具備加載、執(zhí)行和管控其中所運(yùn)行的內(nèi)容或插件的能力.此時(shí),瀏覽器構(gòu)成了通用“圖靈機(jī)”的物化實(shí)現(xiàn),而瀏覽器內(nèi)容或插件則可以被視為應(yīng)用層“圖靈機(jī)”的物化實(shí)現(xiàn).這也是近年來(lái)“Web操作系統(tǒng)”(如Google ChromeOS)[2]這一概念出現(xiàn)的背景.
如今,人們講“軟件定義一切”[3]“軟件是基礎(chǔ)設(shè)施”,一方面是指人們利用計(jì)算技術(shù)解決現(xiàn)實(shí)問(wèn)題的一種信念,即:通用計(jì)算平臺(tái)能夠模擬(或解決)物理世界的一切問(wèn)題,因此,現(xiàn)實(shí)世界將運(yùn)轉(zhuǎn)在通用計(jì)算平臺(tái)上;另一方面是指人們利用計(jì)算技術(shù)解決問(wèn)題的一種標(biāo)準(zhǔn)技術(shù)途徑:部署通用計(jì)算平臺(tái),其中的系統(tǒng)軟件支持編碼及其執(zhí)行.
從技術(shù)上講,系統(tǒng)軟件并不是與計(jì)算機(jī)硬件一起誕生的.1946年,在美國(guó)賓夕法尼亞大學(xué)問(wèn)世的世界上第一臺(tái)通用電子計(jì)算機(jī)ENIAC(electronic numerical integrator and computer)還沒(méi)有操作系統(tǒng)、編譯系統(tǒng)等系統(tǒng)軟件,計(jì)算機(jī)程序通過(guò)純硬件實(shí)編碼,編程采用接線和開(kāi)關(guān)等手工操作方式(如圖1所示).真正催生系統(tǒng)軟件并成為其技術(shù)基礎(chǔ)的是馮?諾依曼的“存儲(chǔ)程序”這一思想[4].1945年,馮?諾依曼等人在設(shè)計(jì)電子離散可變自動(dòng)計(jì)算機(jī)EDVAC(electronic discrete variable automatic computer)時(shí)提出了“存儲(chǔ)程序”這一思想:將程序數(shù)據(jù)和指令數(shù)據(jù)儲(chǔ)存在同一存儲(chǔ)器中.這一思想直接為系統(tǒng)軟件奠定了技術(shù)基礎(chǔ),使得在單一計(jì)算機(jī)和分布式系統(tǒng)中裝載(存儲(chǔ))和管控計(jì)算系統(tǒng)自動(dòng)執(zhí)行成為可能.阿蘭?圖靈本人在 1950年發(fā)表的論文“Computing Machinery and Intelligence”[5]中也明確寫(xiě)到:“數(shù)字計(jì)算機(jī)通常被認(rèn)為由 3部分構(gòu)成:(i) 存儲(chǔ);(ii) 執(zhí)行部件;(iii) 控制.”因此,通用圖靈機(jī)模型被Davis等人認(rèn)為是馮?諾依曼“存儲(chǔ)程序”思想的源頭[6].
Fig.1 Programming ENIAC by a combination of plugboard wiring and portable function tables[7]圖1 通過(guò)插接板接線和“移動(dòng)式轉(zhuǎn)換裝置”進(jìn)行ENIAC編程[7]
(1) 操縱方式1:“編譯加載”應(yīng)用軟件
隨著“存儲(chǔ)程序”思想的提出,應(yīng)用層“圖靈機(jī)”的具體編碼能夠以數(shù)據(jù)的形式存儲(chǔ).這催生了最早的匯編語(yǔ)言,一種作為機(jī)器體系結(jié)構(gòu)抽象的符號(hào)化語(yǔ)言.然而,計(jì)算機(jī)能讀懂的只有機(jī)器指令,此時(shí)就需要一個(gè)能夠?qū)R編指令轉(zhuǎn)換成機(jī)器指令的翻譯程序,這就是最早的編譯器——匯編器.1947年,倫敦大學(xué)伯貝克學(xué)院的Kathleen Booth為ARC2計(jì)算機(jī)開(kāi)發(fā)了第一個(gè)匯編語(yǔ)言及其機(jī)器匯編器[8].之后不久,開(kāi)始出現(xiàn)帶有支持代碼“庫(kù)”的計(jì)算機(jī),預(yù)先記錄在打孔卡片和磁帶上的支持代碼“庫(kù)”能夠在裝載器(loader)的支持下與用戶(hù)程序進(jìn)行連接,從而支持輸入/輸出等操作.這就是編譯器(或編譯系統(tǒng))這種系統(tǒng)軟件類(lèi)型最早的雛形.
雖然匯編語(yǔ)言相對(duì)于機(jī)器語(yǔ)言提高了程序的可讀性,但編寫(xiě)、閱讀和理解匯編語(yǔ)言的難度依然較高,而且匯編代碼很難在不同指令集機(jī)器間移植.為了提高編程效率和程序可移植性,出現(xiàn)了高級(jí)程序設(shè)計(jì)語(yǔ)言和相應(yīng)的編譯系統(tǒng).20世紀(jì)50年代為IBM 704大型機(jī)設(shè)計(jì)的FORTRAN語(yǔ)言是第一個(gè)高級(jí)程序設(shè)計(jì)語(yǔ)言,1957年發(fā)布的FORTRAN編譯器則是第一個(gè)功能比較完備的高級(jí)程序語(yǔ)言編譯器[9].它也是第一個(gè)具備優(yōu)化能力的編譯器,引入了循環(huán)優(yōu)化、寄存器分配等技術(shù),使編譯器翻譯的機(jī)器代碼能夠與當(dāng)時(shí)人工編寫(xiě)的匯編程序性能相當(dāng),從而使更多的用戶(hù)接受.20世紀(jì)70年代,B語(yǔ)言、C語(yǔ)言等高級(jí)語(yǔ)言和相應(yīng)的編譯技術(shù)快速發(fā)展,并在Unix操作系統(tǒng)[10]核開(kāi)發(fā)中發(fā)揮了重要作用.同時(shí),面向?qū)ο笏枷胍苍谶@一時(shí)期應(yīng)用到高級(jí)語(yǔ)言中,出現(xiàn)了SIMULA67、Smalltalk等多個(gè)面向?qū)ο笳Z(yǔ)言.受到C語(yǔ)言和SIMULA67語(yǔ)言的影響,Bell實(shí)驗(yàn)室在20世紀(jì)80年代開(kāi)發(fā)了C++,隨后開(kāi)發(fā)了支持C++的Cfront編譯器,逐漸成為主流編程語(yǔ)言[11].1995年,Sun公司發(fā)布了Java語(yǔ)言和Java編譯器.Java具有簡(jiǎn)單性、動(dòng)態(tài)性和獨(dú)立于平臺(tái)的特點(diǎn),至今應(yīng)用廣泛.進(jìn)入網(wǎng)絡(luò)時(shí)代,編程語(yǔ)言又進(jìn)入發(fā)展的活躍期,出現(xiàn)了Python、C#、Go等編程語(yǔ)言與編譯系統(tǒng).
這里有一個(gè)誤區(qū):既然編譯器是系統(tǒng)軟件,那么其他以程序?yàn)椴僮鲗?duì)象的工具軟件(例如程序分析或程序驗(yàn)證工具)是否也可以視為系統(tǒng)軟件?這里的界限在于該工具軟件的直接目的是否服務(wù)于操縱軟件執(zhí)行,這是系統(tǒng)軟件的本質(zhì)特征所決定的.軟件工程領(lǐng)域中大量的工具軟件以產(chǎn)生高質(zhì)量的軟件為直接目的,并不關(guān)注軟件的運(yùn)行態(tài)行為以及它們是如何被執(zhí)行的,而編譯器(當(dāng)然也被認(rèn)為是工具軟件)的直接目的是產(chǎn)生可加載執(zhí)行的代碼并為操縱軟件的執(zhí)行奠定基礎(chǔ).所以,一般以程序?yàn)椴僮鲗?duì)象的工具軟件通常不能納入系統(tǒng)軟件范疇,而編譯器則被納入系統(tǒng)軟件范疇.無(wú)論是以高級(jí)語(yǔ)言、匯編指令、機(jī)器指令二進(jìn)制編碼甚至是紙帶形式表示的代碼,它們都是應(yīng)用層“圖靈機(jī)”的一種物化實(shí)現(xiàn)形式.編譯器則是在上述形式之間進(jìn)行變換的系統(tǒng)軟件,并且這種變換通常是從高層次的高級(jí)語(yǔ)言向可加載執(zhí)行的機(jī)器指令集的變換,并最終映射為可加載執(zhí)行的形式.在與編譯系統(tǒng)密切相關(guān)的裝載器(通常內(nèi)置于操作系統(tǒng)/語(yǔ)言等運(yùn)行環(huán)境)[12]的協(xié)助下,應(yīng)用層“圖靈機(jī)”的具體編碼被載入到主內(nèi)存,成為準(zhǔn)備就緒、隨時(shí)可以執(zhí)行的狀態(tài).
(2) 操縱方式2:“執(zhí)行管控”應(yīng)用軟件和資源
早期的計(jì)算機(jī)雖然具備加載應(yīng)用程序的能力,但需要由操作人員手工裝入包含程序的紙帶或磁帶.計(jì)算機(jī)在加載完程序之后,運(yùn)行控制權(quán)就完全交給了應(yīng)用程序,只有程序運(yùn)行完并取走計(jì)算結(jié)果之后,才能再由人手工裝入下一個(gè)紙帶或磁帶.這種手工操作、排他運(yùn)行的方式具有效率低下、系統(tǒng)資源利用率低的特點(diǎn).最早的操作系統(tǒng)就是為了解決這一問(wèn)題而應(yīng)運(yùn)而生的[13]:1956年的GM-NAA IO系統(tǒng)具備單道批處理能力,能夠自動(dòng)地從磁帶順序讀入并執(zhí)行應(yīng)用程序.這種“執(zhí)行管控”避免了兩個(gè)作業(yè)之間的空閑時(shí)間,但在作業(yè)執(zhí)行過(guò)程中,由于只有單個(gè)應(yīng)用程序在排他運(yùn)行,資源利用率低的問(wèn)題并沒(méi)得到徹底解決.因此,以當(dāng)時(shí)主流的大型主機(jī)為載體,操作系統(tǒng)圍繞兩種使用模式展開(kāi)了探索.
(1) 多道批處理(batch processing):即對(duì)單道批處理進(jìn)行擴(kuò)展,允許單一計(jì)算機(jī)同時(shí)載入多個(gè)批處理作業(yè),使之可以以恰當(dāng)?shù)恼{(diào)度策略交替占用 CPU,從而提高資源利用率.其典型案例是 20世紀(jì) 60年代由Dijkstra所領(lǐng)導(dǎo)研發(fā)的THE操作系統(tǒng)[14];
(2) 分時(shí)(time sharing):其思想幾乎與操作系統(tǒng)同時(shí)出現(xiàn),目標(biāo)是“通過(guò)分時(shí)共享,使得一臺(tái)大的計(jì)算機(jī)能夠像多臺(tái)小型計(jì)算機(jī)一樣使用”[15].從1961年的首個(gè)CTSS(compatible time-sharing system)分時(shí)操作系統(tǒng)[16]開(kāi)始,此類(lèi)系統(tǒng)均通過(guò)CPU時(shí)間的劃分來(lái)支持多個(gè)終端用戶(hù).
無(wú)論是多道批處理還是分時(shí),其本質(zhì)都是“管控”應(yīng)用軟件執(zhí)行,也即通過(guò)引入恰當(dāng)?shù)膽?yīng)用程序調(diào)度和行為調(diào)控機(jī)制,使得單個(gè)通用“圖靈機(jī)”可以同時(shí)讀入和運(yùn)行多個(gè)應(yīng)用層“圖靈機(jī)”,最終實(shí)現(xiàn)計(jì)算機(jī)資源的高效利用和高效復(fù)用的目標(biāo).這一思路直接推動(dòng)了多任務(wù)多用戶(hù)的Unix操作系統(tǒng)的出現(xiàn),為現(xiàn)代意義上的操作系統(tǒng)奠定了基礎(chǔ).
除了“執(zhí)行管控”應(yīng)用軟件,操作系統(tǒng)的另一核心職能是“管控”資源,也即通過(guò)管理和協(xié)調(diào)執(zhí)行部件、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)等計(jì)算機(jī)資源,實(shí)現(xiàn)高效協(xié)同,形成具備通用圖靈機(jī)能力的基礎(chǔ)執(zhí)行環(huán)境.操作系統(tǒng)這一職能的發(fā)展經(jīng)歷了兩個(gè)階段.
(1) 早期的操作系統(tǒng)往往與特定計(jì)算機(jī)硬件和特定應(yīng)用綁定:即使是同一個(gè)生產(chǎn)商,不同型號(hào)計(jì)算機(jī)的操作系統(tǒng)也會(huì)有不同的使用方式,甚至很多操作系統(tǒng)就是計(jì)算機(jī)用戶(hù)根據(jù)應(yīng)用場(chǎng)景定制的;
(2) 其后,操作系統(tǒng)逐漸與具體硬件解耦,力求對(duì)應(yīng)用軟件提供一致的通用“圖靈機(jī)”物化形態(tài).
20世紀(jì)60年代,IBM為System/360系列計(jì)算機(jī)開(kāi)發(fā)了統(tǒng)一的操作系統(tǒng)OS/360[17],首次為應(yīng)用軟件提供標(biāo)準(zhǔn)化、與特定計(jì)算機(jī)型號(hào)和應(yīng)用場(chǎng)景解耦的運(yùn)行環(huán)境;其后,1972年發(fā)布的 VM/370操作系統(tǒng)擴(kuò)展了分時(shí)共享的思想,首次提供了成熟的虛擬化能力[18].20世紀(jì) 80年代,IEEE和 ISO組織制定了一組可移植操作系統(tǒng)接口POSIX(portable operating system interface of UNIX)標(biāo)準(zhǔn),在某種程度上,它定義了一個(gè)通用圖靈機(jī)物化形態(tài)所應(yīng)具備的接口,應(yīng)用軟件通過(guò)該接口與操作系統(tǒng)交互,再由操作系統(tǒng)操縱軟/硬件資源.無(wú)論是大型主機(jī)還是微型機(jī),這種解耦和抽象都直接推動(dòng)了軟/硬件技術(shù)的快速發(fā)展,奠定了操作系統(tǒng)作為整個(gè)計(jì)算機(jī)生態(tài)鏈的基礎(chǔ)性地位.
相對(duì)于其先驅(qū)者,今天的操作系統(tǒng)能力已經(jīng)得到極大豐富,諸如圖形用戶(hù)界面、多媒體播放器等各類(lèi)公用程序等都被內(nèi)建到操作系統(tǒng)中,其運(yùn)行場(chǎng)景也擴(kuò)展到了移動(dòng)終端、物聯(lián)網(wǎng)設(shè)備、無(wú)人系統(tǒng)等多樣化環(huán)境,但上述“管控”應(yīng)用軟件和資源的核心職能并沒(méi)有發(fā)生變化.
(3) 操縱方式3:“聯(lián)接協(xié)調(diào)”分布計(jì)算系統(tǒng)
“中間件(middleware)”的概念最早出現(xiàn)于 20世紀(jì) 60年代,1968年,北大西洋公約組織的軟件工程報(bào)告[19]所給出的軟件結(jié)構(gòu)倒金字塔中(如圖2所示),中間件被代指位于應(yīng)用軟件之下、控制程序/服務(wù)例程之上的一層軟件,被用來(lái)彌補(bǔ)底層系統(tǒng)軟件通用功能和上層應(yīng)用特殊需求之間的鴻溝.雖然也被納入系統(tǒng)軟件范疇,但此時(shí)的中間件還沒(méi)有“管控”分布計(jì)算系統(tǒng)的職能.
Fig.2 Inverted pyramid of software structure in NATO software engineering report[19]圖2 NATO軟件工程報(bào)告中的倒金字塔軟件結(jié)構(gòu)[19]
20世紀(jì)80年代,TCP/IP協(xié)議等計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)走向成熟,計(jì)算機(jī)應(yīng)用模式邁入網(wǎng)絡(luò)計(jì)算時(shí)代.與馮?諾依曼體系結(jié)構(gòu)中的“存儲(chǔ)程序”思想類(lèi)似,網(wǎng)絡(luò)環(huán)境下的分布式應(yīng)用通過(guò)二進(jìn)制網(wǎng)絡(luò)消息對(duì)指令和數(shù)據(jù)進(jìn)行統(tǒng)一編碼和傳遞.在現(xiàn)代中間件出現(xiàn)以前,開(kāi)發(fā)人員只能通過(guò)操作系統(tǒng)自帶的 SocketAPI等原生接口,以完全手工的方式實(shí)現(xiàn)從網(wǎng)絡(luò)消息到程序行為的雙向映射,直接后果是開(kāi)發(fā)繁瑣、復(fù)雜和低效.另一方面,研究者也逐漸認(rèn)識(shí)到:相對(duì)于單機(jī)軟件,分布式軟件有著特有的理論和技術(shù)問(wèn)題(如負(fù)載均衡、時(shí)間同步等),而傳統(tǒng)的操作系統(tǒng)并未提供相應(yīng)的管控能力.
為了應(yīng)對(duì)上述挑戰(zhàn),早期主要圍繞兩種思路展開(kāi)了探索.
· 一是以 Amobea[20]等分布式操作系統(tǒng)為代表的自頂向下方法,其核心思想是將單機(jī)操作系統(tǒng)的概念放大到網(wǎng)絡(luò)環(huán)境.例如,文獻(xiàn)[21]指出:“分布式操作系統(tǒng)對(duì)用戶(hù)而言與單機(jī)操作系統(tǒng)無(wú)二,只是運(yùn)行在多個(gè)獨(dú)立處理器上,它的核心概念是透明性.”但是,網(wǎng)絡(luò)資源具有分布自治、高度異構(gòu)、持續(xù)演化等特點(diǎn),其上軟件很難通過(guò)嚴(yán)格的以自頂向下的方法精確設(shè)計(jì)出來(lái),而更多的是通過(guò)互聯(lián)互通、以自底向上的方式成長(zhǎng)式構(gòu)造出來(lái)的[22];
年輕人告訴何良諸,他老子聽(tīng)說(shuō)北大坎礦的煤,含有琥珀顆粒,要了幾十車(chē)皮。礦區(qū)人傻實(shí)在,沒(méi)要預(yù)付款就發(fā)貨了。他老子的公司,欠煤款六百萬(wàn),七年了,不給人家一分錢(qián)。礦工們開(kāi)不出資,自發(fā)組織起討債隊(duì),黑道白道都趟,拿他頂了賬。
· 后一種思路以Birrel等人于1984年實(shí)現(xiàn)的首個(gè)遠(yuǎn)程過(guò)程調(diào)用(remote procedure call,簡(jiǎn)稱(chēng)RPC)框架[23]為代表,催生了現(xiàn)代意義上的中間件.
中間件運(yùn)行于操作系統(tǒng)之上,聚焦分布式應(yīng)用中的“連接”問(wèn)題,沉淀此類(lèi)軟件開(kāi)發(fā)、運(yùn)行與集成的共性機(jī)制.在馮?諾依曼體系結(jié)構(gòu)的單個(gè)計(jì)算機(jī)中,系統(tǒng)軟件會(huì)將所存儲(chǔ)的程序映射為 CPU指令執(zhí)行動(dòng)作,這是其操縱能力的最基本體現(xiàn).與之類(lèi)似,中間件通過(guò)將網(wǎng)絡(luò)消息映射為分布式應(yīng)用程序模型基本構(gòu)造單元的行為,實(shí)現(xiàn)對(duì)分布計(jì)算系統(tǒng)的操縱.依據(jù)應(yīng)用程序模型的不同,中間件可以分為面向過(guò)程中間件、面向?qū)ο笾虚g件、面向構(gòu)件中間件、面向消息中間件等,其操縱能力見(jiàn)表1.
Table 1 Manipulation capability of different types of middleware表1 不同中間件所具備的操縱能力
除了支撐應(yīng)用程序模型的通用中間件外,部分中間件僅關(guān)注“協(xié)調(diào)”分布計(jì)算系統(tǒng)過(guò)程中的一些特定場(chǎng)景.事務(wù)處理中間件即為一個(gè)典型案例,它通過(guò)控制服務(wù)端多個(gè)軟件實(shí)體的行為,保證分布式事務(wù)處理過(guò)程中的(全部或部分)一致性.早在大型主機(jī)時(shí)代,IBM的CICS(customer information control system)系統(tǒng)就已提供了跨計(jì)算節(jié)點(diǎn)事務(wù)支持.針對(duì)美國(guó)電話公司需要的聯(lián)機(jī)事務(wù)處理能力,AT &T貝爾實(shí)驗(yàn)室于20世紀(jì)80年代初發(fā)布了跨平臺(tái)的 Tuxedo事務(wù)處理中間件,相關(guān)研究與實(shí)踐對(duì)后續(xù) X/Open組織的分布式事務(wù)處理規(guī)范、OMG(Object Management Group)組織的對(duì)象事務(wù)服務(wù)規(guī)范等產(chǎn)生了較大影響[24].
系統(tǒng)軟件是持續(xù)在線提供基礎(chǔ)服務(wù)的軟件,這是系統(tǒng)軟件的時(shí)代特點(diǎn).這一洞察的時(shí)代背景是互聯(lián)網(wǎng)發(fā)展成為當(dāng)今世界的信息基礎(chǔ)設(shè)施.系統(tǒng)軟件是當(dāng)今云計(jì)算平臺(tái)之所以成為公共服務(wù)平臺(tái)的關(guān)鍵,是“軟件即服務(wù)”應(yīng)用模式的基石.
系統(tǒng)軟件是基礎(chǔ)性軟件,其誕生之初就具有不間斷持續(xù)運(yùn)行的基本屬性.例如:操作系統(tǒng)與計(jì)算機(jī)裸機(jī)緊密結(jié)合,共同向應(yīng)用軟件提供通用圖靈機(jī)能力抽象,其生命周期與硬件上電運(yùn)行時(shí)間基本一致;編譯系統(tǒng)中一個(gè)重要的內(nèi)容是運(yùn)行時(shí)庫(kù)(runtime library),程序由何種編程語(yǔ)言編寫(xiě)、運(yùn)行在何種運(yùn)行環(huán)境上,就需要相應(yīng)的編譯系統(tǒng)提供相應(yīng)的運(yùn)行時(shí)庫(kù),它不僅僅本身是動(dòng)態(tài)運(yùn)行的,更為上層應(yīng)用程序的持續(xù)運(yùn)行提供了有力支撐;無(wú)論是以靜態(tài)/動(dòng)態(tài)鏈接庫(kù),還是以獨(dú)立服務(wù)等形式存在,中間件的主要實(shí)現(xiàn)部件(如互操作協(xié)議引擎)的生命周期都至少與所支撐的分布式應(yīng)用生命周期相同.
然而,早期系統(tǒng)軟件的“持續(xù)運(yùn)行”是相對(duì)于其所操縱的計(jì)算系統(tǒng)而言的.換言之,系統(tǒng)軟件的生命周期通常與微觀層面上的具體計(jì)算系統(tǒng)一致,所操縱計(jì)算系統(tǒng)一旦停止運(yùn)行或重啟,系統(tǒng)軟件的狀態(tài)也隨之發(fā)生變化.此外,系統(tǒng)軟件能力提供的方式是“購(gòu)買(mǎi)/授權(quán)、本地安裝和配置、后期維護(hù)”的模式,與下文闡述的按需服務(wù)模式也存在很大差異.
互聯(lián)網(wǎng)的高速發(fā)展改變了計(jì)算系統(tǒng)應(yīng)用模式,同時(shí)也對(duì)系統(tǒng)軟件產(chǎn)生了重要影響,推動(dòng)著系統(tǒng)軟件“不間斷持續(xù)運(yùn)行”這一屬性跳出單個(gè)計(jì)算系統(tǒng)的微觀范疇,在整個(gè)信息空間的宏觀尺度上,成為持續(xù)在線提供基礎(chǔ)服務(wù)、支撐信息空間不間斷運(yùn)行的核心基礎(chǔ)設(shè)施.
系統(tǒng)軟件的上述時(shí)代特點(diǎn)與 20世紀(jì) 90年代中后期出現(xiàn)的服務(wù)化思想密切相關(guān):互聯(lián)網(wǎng)資源具有開(kāi)放動(dòng)態(tài)、成長(zhǎng)自治的特點(diǎn),但人們同時(shí)又希望軟件能夠持續(xù)在線、高度可用,二者之間的矛盾催生了“服務(wù)”的概念.從2000年左右W3C組織所制定的一系列Web Service標(biāo)準(zhǔn)[25]開(kāi)始,“服務(wù)”一詞即被用來(lái)抽象可通過(guò)網(wǎng)絡(luò)按需訪問(wèn)、無(wú)需關(guān)心實(shí)現(xiàn)細(xì)節(jié)的能力.以此為核心,面向服務(wù)體系結(jié)構(gòu)通過(guò)服務(wù)化封裝和“服務(wù)提供者-消費(fèi)者”之間的動(dòng)態(tài)發(fā)現(xiàn),以解決開(kāi)放動(dòng)態(tài)與持續(xù)在線之間的矛盾.
作為互聯(lián)網(wǎng)時(shí)代的產(chǎn)物,服務(wù)化思想首先推動(dòng)了中間件技術(shù)外延的拓展.Apache Tomcat、IBM WebSphere等Web服務(wù)中間件以支撐面向服務(wù)體系結(jié)構(gòu)為目標(biāo),封裝了服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、服務(wù)訪問(wèn)等共性基礎(chǔ)設(shè)施,完成對(duì)服務(wù)化軟件的操縱、實(shí)現(xiàn)網(wǎng)絡(luò)消息與服務(wù)實(shí)現(xiàn)者之間的映射;以企業(yè)服務(wù)總線(enterprise service bus,簡(jiǎn)稱(chēng) ESB)[26]為代表的服務(wù)集成中間件通過(guò)服務(wù)封裝、服務(wù)組合、服務(wù)協(xié)同等技術(shù)實(shí)現(xiàn)自治子系統(tǒng)之間的通信,進(jìn)而實(shí)現(xiàn)復(fù)雜業(yè)務(wù)系統(tǒng)跨域集成;微服務(wù)[27]則聚焦單個(gè)業(yè)務(wù)系統(tǒng)內(nèi)部,通過(guò)系統(tǒng)內(nèi)部組件的徹底服務(wù)化,實(shí)現(xiàn)開(kāi)發(fā)階段“分而治之”和運(yùn)行階段的靈活應(yīng)變,這一思路催生了Spring Cloud等微服務(wù)框架.
近年來(lái),作為服務(wù)化思想的集大成者,云計(jì)算模式被廣泛接受.如同工業(yè)革命讓水、電、交通等成為公共服務(wù)一樣,云計(jì)算正在通過(guò)后端資源集約化和前端按需服務(wù)的方式,推動(dòng)信息技術(shù)實(shí)現(xiàn)社會(huì)化和專(zhuān)業(yè)化,使得信息服務(wù)成為公共基礎(chǔ)設(shè)施[28].這一趨勢(shì)推動(dòng)著整個(gè)系統(tǒng)軟件生態(tài)鏈的變革:操作系統(tǒng)、編譯系統(tǒng)、中間件、數(shù)據(jù)庫(kù)等逐漸融合,以云計(jì)算操作系統(tǒng)、“平臺(tái)即服務(wù)(platform as a service,簡(jiǎn)稱(chēng)PaaS)”[29]軟件基礎(chǔ)設(shè)施等形式打包.此類(lèi)系統(tǒng)軟件是各大云服務(wù)提供商的核心競(jìng)爭(zhēng)力所在,其典型代表包括Google AppEngine、Microsoft Azure、Amazon EC2、阿里飛天平臺(tái)等,其特點(diǎn)如下.
· 在資源的管控方面,此類(lèi)系統(tǒng)軟件要應(yīng)對(duì)的資源規(guī)模是數(shù)據(jù)中心甚至多數(shù)據(jù)中心級(jí)別的,管控的核心在于通過(guò)計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)等資源虛擬化,實(shí)現(xiàn)資源池中資源的有效聚合和彈性擴(kuò)展,在不同尺度上形成具有通用圖靈機(jī)能力的環(huán)境.例如,互聯(lián)網(wǎng)虛擬計(jì)算環(huán)境iVCE[30]通過(guò)資源的“自主協(xié)同、按需聚合”,將靜態(tài)統(tǒng)一視圖的資源組織模式擴(kuò)展為相對(duì)穩(wěn)定視圖、按需可伸縮的資源組織模式,從而實(shí)現(xiàn)面向互聯(lián)網(wǎng)計(jì)算的高效管控;
· 在應(yīng)用軟件的執(zhí)行管控維度上,此類(lèi)系統(tǒng)軟件面向大規(guī)模云服務(wù)這類(lèi)分布計(jì)算系統(tǒng),提供了任務(wù)調(diào)度與執(zhí)行、負(fù)載均衡、安全管控、在線監(jiān)控和升級(jí)演化、分布式數(shù)據(jù)存儲(chǔ)訪問(wèn)等一系列基礎(chǔ)設(shè)施和相應(yīng)能力.這些能力以“Pay as you go”[27]的服務(wù)化方式提供,用戶(hù)無(wú)需像傳統(tǒng)系統(tǒng)軟件那樣自行安裝、部署和維護(hù).部分“平臺(tái)即服務(wù)”基礎(chǔ)設(shè)施還內(nèi)建了編譯系統(tǒng)和調(diào)測(cè)試環(huán)境,支持云端開(kāi)發(fā)和編譯構(gòu)建;
· 在自身生命周期方面,此類(lèi)系統(tǒng)軟件7×24小時(shí)持續(xù)提供基礎(chǔ)服務(wù),已經(jīng)與單個(gè)應(yīng)用軟件的生命周期解耦,是支撐整個(gè)信息空間持續(xù)運(yùn)行的核心基礎(chǔ)設(shè)施.其突出表現(xiàn)為一旦發(fā)生故障,會(huì)產(chǎn)生較大的社會(huì)經(jīng)濟(jì)影響.例如,文獻(xiàn)[31]指出:如果一個(gè)主要的云平臺(tái)宕機(jī)3~6天,美國(guó)經(jīng)濟(jì)會(huì)產(chǎn)生30億~150億美元的損失;而在現(xiàn)實(shí)生活中,2017年2月底,Amazon EC2中的對(duì)象存儲(chǔ)服務(wù)出現(xiàn)故障近4個(gè)小時(shí),導(dǎo)致數(shù)千個(gè)互聯(lián)網(wǎng)服務(wù)中斷,產(chǎn)生了重大的社會(huì)影響.
系統(tǒng)軟件是持續(xù)在線演化的軟件,這是系統(tǒng)軟件的發(fā)展趨勢(shì).這一洞察的依據(jù)是:因?yàn)檐浖诔蔀槲磥?lái)社會(huì)運(yùn)行的基礎(chǔ)設(shè)施,系統(tǒng)軟件不僅持續(xù)在線提供基礎(chǔ)服務(wù)、支撐上層應(yīng)用軟件的持續(xù)演化,而且本身也必須因適應(yīng)變化而持續(xù)在線演化,系統(tǒng)軟件是未來(lái)“軟件生態(tài)”的核心.
軟件正在成為未來(lái)社會(huì)運(yùn)行的基礎(chǔ)設(shè)施,這主要受3個(gè)方面因素的驅(qū)使.
(1) 軟件自身能力的不斷提升.表現(xiàn)為軟件規(guī)模的持續(xù)增長(zhǎng)、軟件實(shí)體之間連接形式的多樣化、連接緊密程度的深化等,使得軟件可以在許多關(guān)鍵領(lǐng)域代替原來(lái)傳統(tǒng)的非信息化手段,并表現(xiàn)出顯著優(yōu)勢(shì);
(2) 軟件正在驅(qū)動(dòng)信息空間與物理空間的深度融合,提高了人類(lèi)社會(huì)生產(chǎn)和生活的效率.以物聯(lián)網(wǎng)軟件為例,其應(yīng)用不斷融入智能工業(yè)、智能交通、環(huán)境保護(hù)、公共管理、智能家庭、醫(yī)療保健等多個(gè)領(lǐng)域,已經(jīng)成為世界經(jīng)濟(jì)社會(huì)發(fā)展的熱點(diǎn);
(3) 計(jì)算技術(shù)的普適化,使得人類(lèi)社會(huì)產(chǎn)生了深刻變革.在移動(dòng)和可穿戴設(shè)備、移動(dòng)互聯(lián)網(wǎng)、智能助理等功能的支持下,人們有可能接受“無(wú)時(shí)無(wú)處不在而又不可見(jiàn)”的軟件服務(wù).
在上述背景下,軟件將與其所在的社會(huì)和物理環(huán)境緊密融合在一起,相互作用、相互影響.這與傳統(tǒng)的、完全在信息空間運(yùn)行的軟件有著質(zhì)的區(qū)別.具體到基礎(chǔ)性的、“操縱計(jì)算系統(tǒng)執(zhí)行”的層面,體現(xiàn)為系統(tǒng)軟件需要能夠不斷地適應(yīng)技術(shù)、物理世界和人類(lèi)社會(huì)的變化,也即需要具備演化能力[22].事實(shí)上,系統(tǒng)軟件的演化并非新現(xiàn)象,以Linux內(nèi)核為例,據(jù)統(tǒng)計(jì),從1994年3月~2008年8月一共發(fā)布了810個(gè)版本;為了適應(yīng)硬件的急劇發(fā)展和變遷,Linux內(nèi)核中與體系結(jié)構(gòu)和外設(shè)有關(guān)的目錄(arch和drivers目錄)下的文件數(shù)從最早的寥寥數(shù)個(gè)擴(kuò)展到了將近10 000個(gè)[32].在Linux演化過(guò)程中,產(chǎn)生了大量分支和發(fā)行版本,這些“副本”以類(lèi)似于生物系統(tǒng)演化的方式“優(yōu)勝劣汰”,推動(dòng)著Linux逐漸走向成熟.
但是與傳統(tǒng)的離線、階段式演化不同,互聯(lián)網(wǎng)時(shí)代的系統(tǒng)軟件演化強(qiáng)調(diào)持續(xù)和在線的特點(diǎn):在整個(gè)信息空間尺度上,這種演化并非停止所有信息服務(wù)、離線更新版本,而是隨著社會(huì)和物理環(huán)境的變化在持續(xù)地、細(xì)粒度地演化.在單個(gè)平臺(tái)化的系統(tǒng)軟件運(yùn)行實(shí)例中,由于其需要 7×24小時(shí)持續(xù)提供基礎(chǔ)服務(wù),其適應(yīng)變化的過(guò)程多以部件的單獨(dú)更新、整體服務(wù)并不停止的在線形式表現(xiàn)出來(lái).
在驅(qū)動(dòng)軟件成為社會(huì)基礎(chǔ)設(shè)施的 3個(gè)因素的作用下,本文認(rèn)為,未來(lái)系統(tǒng)軟件自身的持續(xù)成長(zhǎng)和在線演化主要表現(xiàn)在如下一些方面.
(1) 適應(yīng)硬件和軟件技術(shù)創(chuàng)新,向平臺(tái)化、體系化拓展.
系統(tǒng)軟件是“操縱計(jì)算系統(tǒng)執(zhí)行”的軟件,它們與底層硬件一起,向上層應(yīng)用提供通用圖靈機(jī)能力抽象.因此,系統(tǒng)軟件的演化首先體現(xiàn)在適應(yīng)硬件體系結(jié)構(gòu)的變化上.以編譯系統(tǒng)為例,21世紀(jì)以來(lái),編譯系統(tǒng)的發(fā)展主要集中在面向多核和眾核處理器體系結(jié)構(gòu)的編譯優(yōu)化上[33].在可預(yù)見(jiàn)的未來(lái),眾核和寬向量將成為體系結(jié)構(gòu)的發(fā)展方向,計(jì)算部件和存儲(chǔ)層次的異構(gòu)性和復(fù)雜性將不斷增加,因此,面向體系結(jié)構(gòu)的編譯優(yōu)化技術(shù)仍將持續(xù)發(fā)展,如何在不對(duì)程序員造成過(guò)度負(fù)擔(dān)的條件下盡可能高效地優(yōu)化程序性能是其中的一大挑戰(zhàn).同時(shí),新型計(jì)算機(jī)架構(gòu),如量子計(jì)算機(jī)、生物計(jì)算機(jī)等,很有可能解決經(jīng)典計(jì)算機(jī)難以解決的問(wèn)題.這些新型器件和設(shè)備將與經(jīng)典計(jì)算機(jī)并存,如何設(shè)計(jì)面向新型設(shè)備的編程模型和編譯系統(tǒng),也是未來(lái)的一個(gè)研究難點(diǎn).
作為加載、支撐和管控應(yīng)用層“圖靈機(jī)”的基礎(chǔ)設(shè)施,系統(tǒng)軟件的演化還體現(xiàn)在適應(yīng)應(yīng)用軟件形態(tài)的變革上.例如:隨著信息空間內(nèi)部連接的進(jìn)一步深化,如何實(shí)現(xiàn)多個(gè)云服務(wù)提供者之間的無(wú)縫連接、實(shí)現(xiàn)資源的跨云共享,是云際計(jì)算(joint cloud)[34]這一新興計(jì)算模式的焦點(diǎn),相應(yīng)的系統(tǒng)軟件技術(shù)也開(kāi)始嶄露頭角,典型實(shí)例包括IBM的Altocumulus[35]、歐盟的mOSAIC[36]等中間件;“軟件即服務(wù)”模式對(duì)軟件敏捷交付能力和輕量級(jí)維護(hù)能力提出了新需求,開(kāi)發(fā)運(yùn)維一體化(DevOps)[37]及相關(guān)的自動(dòng)化測(cè)試部署、智能運(yùn)維(AIOps)[38]等技術(shù)也將沉淀到系統(tǒng)軟件中;隨著區(qū)塊鏈等技術(shù)的發(fā)展,智能合約、共識(shí)機(jī)制、信任機(jī)制等將在系統(tǒng)軟件層面上得以體現(xiàn).此外,各類(lèi)應(yīng)用軟件正在成為未來(lái)社會(huì)運(yùn)行的基礎(chǔ)設(shè)施,它們本身具有迫切的在線演化需求,作為“操縱”軟件的軟件,系統(tǒng)軟件成為驅(qū)動(dòng)上層應(yīng)用實(shí)施這種演化操作[39]的理想載體,相關(guān)“操縱”機(jī)制的沉淀是未來(lái)系統(tǒng)軟件的重要發(fā)展方向.
在適應(yīng)軟/硬件技術(shù)變革的過(guò)程中,操作系統(tǒng)、中間件、編譯系統(tǒng)等系統(tǒng)軟件各個(gè)分支將持續(xù)融合.用戶(hù)的選擇重心將從產(chǎn)品本身聚焦到自身能獲得的應(yīng)用和服務(wù)支持上,因此,系統(tǒng)軟件在產(chǎn)品形態(tài)上將表現(xiàn)出依托開(kāi)源社區(qū)等新興力量形成有機(jī)統(tǒng)一的整體解決方案,在運(yùn)營(yíng)形態(tài)上從傳統(tǒng)銷(xiāo)售獲利轉(zhuǎn)變?yōu)槠脚_(tái)化的持續(xù)服務(wù)提供,在生態(tài)建設(shè)方面呈現(xiàn)出技術(shù)、平臺(tái)和實(shí)踐三者良性互動(dòng)螺旋式上升的格局.此外,基于“云+端”和邊緣計(jì)算等體系結(jié)構(gòu),在后端提供具有豐富資源的服務(wù)化平臺(tái),在前端提供多樣化應(yīng)用環(huán)境,實(shí)現(xiàn)前后端的優(yōu)勢(shì)互補(bǔ)、有機(jī)融合,是未來(lái)系統(tǒng)軟件體系化發(fā)展的重要方向.
(2) 通過(guò)感知和操縱物理空間,成為“軟件定義一切”的基石.
信息技術(shù)向物理世界邁出的第一步是實(shí)現(xiàn)環(huán)境“感知”.自 20世紀(jì)末以來(lái),隨著相關(guān)硬件技術(shù)的逐漸成型,系統(tǒng)軟件領(lǐng)域開(kāi)始關(guān)注對(duì)物理空間情境數(shù)據(jù)的處理,出現(xiàn)了傳感器網(wǎng)絡(luò)操作系統(tǒng)/中間件[40]、情境感知中間件[41]等一系列系統(tǒng)軟件.近年來(lái)快速發(fā)展的物聯(lián)網(wǎng)中間件[42]在上述概念的基礎(chǔ)上進(jìn)一步針對(duì)“萬(wàn)物互聯(lián)”的大規(guī)模異構(gòu)環(huán)境進(jìn)行了拓展,其核心關(guān)注點(diǎn)是:在資源受限、高度異構(gòu)、規(guī)模龐大、網(wǎng)絡(luò)動(dòng)態(tài)變化條件下,如何實(shí)現(xiàn)互聯(lián)互通互操作,滿足物聯(lián)網(wǎng)應(yīng)用對(duì)海量傳感器數(shù)據(jù)或事件實(shí)時(shí)處理的需求.在“操縱”物理世界方面,系統(tǒng)軟件領(lǐng)域也已經(jīng)展開(kāi)了初步探索.例如,機(jī)器人操作系統(tǒng)/中間件面向機(jī)器人計(jì)算環(huán)境高度異構(gòu)、資源受限、常態(tài)失效、實(shí)時(shí)性要求高等特點(diǎn),自 2000年左右展開(kāi)探索,包括 Miro、CLARAty、OpenRTM-aist、Pyra、Orca、MARIE等在內(nèi)的一系列實(shí)踐推動(dòng)了無(wú)人系統(tǒng)中間件技術(shù)的發(fā)展[43],并直接為今天廣泛使用的開(kāi)源機(jī)器人操作系統(tǒng)ROS(robot operating system)[44]奠定了理論和技術(shù)基礎(chǔ).
未來(lái),作為信息物理融合軟件系統(tǒng)的基礎(chǔ)性軟件,系統(tǒng)軟件將繼續(xù)增強(qiáng)感知和操縱物理世界的能力,正在演化成為“軟件定義一切”的核心基礎(chǔ)設(shè)施.文獻(xiàn)[45]提出了普適操作系統(tǒng)的概念,指出操作系統(tǒng)正在將其軟件定義能力擴(kuò)展到物理世界和人類(lèi)社會(huì),這正是上述思想的體現(xiàn).
(3) 與智能技術(shù)融合,為軟件無(wú)縫融入人類(lèi)社會(huì)提供支撐.
近年來(lái),人工智能技術(shù)的巨大進(jìn)步迅速反映到軟件領(lǐng)域.“人工智能就是新的電能,正如100年前的電力改變了工業(yè)界,現(xiàn)在人工智能在做著同樣的事情.”智能化軟件正在將計(jì)算以人為中心、在人類(lèi)社會(huì)中“隨時(shí)隨地而又不可見(jiàn)”的理想變成現(xiàn)實(shí).反映到系統(tǒng)軟件層面:
· 一方面,系統(tǒng)軟件本身需要具備操縱智能化軟件執(zhí)行的能力.例如:操作系統(tǒng)可能需要提供對(duì)深度學(xué)習(xí)加速硬件的支持,在運(yùn)行時(shí)提供深度學(xué)習(xí)等共性抽象;針對(duì)大數(shù)據(jù)和深度學(xué)習(xí)應(yīng)用,編譯系統(tǒng)需要開(kāi)發(fā)相應(yīng)編程模型和接口、針對(duì)多硬件后端的可定制優(yōu)化模塊,以彌合高層次深度學(xué)習(xí)框架與底層硬件后端的性能差距;
· 另一方面,現(xiàn)代操作系統(tǒng)都提供了人機(jī)交互界面,而這一界面的智能化也是實(shí)現(xiàn)軟件無(wú)縫融入人類(lèi)社會(huì)的前提和基礎(chǔ).蘋(píng)果 iOS操作系統(tǒng)內(nèi)建的 Siri語(yǔ)音助手、谷歌 Android操作系統(tǒng)內(nèi)建的 Google Assistant在這一方面已經(jīng)做了有益的嘗試,中間件在情境智能(如智能家居、智能城市)等方面也已取得一些初步成果[46].長(zhǎng)遠(yuǎn)而言,系統(tǒng)軟件將變得越來(lái)越智能,并且這種智能是在與人和人類(lèi)社會(huì)交互過(guò)程中逐漸累積、以在線演化的方式成長(zhǎng)起來(lái)的.
1936年,阿蘭?圖靈提出了能夠模擬任何圖靈機(jī)的通用圖靈機(jī)模型;1945年,馮?諾依曼等人提出了“存儲(chǔ)程序”的思想,二者分別奠定了系統(tǒng)軟件的理論和技術(shù)基礎(chǔ).本文認(rèn)為:系統(tǒng)軟件是指操縱計(jì)算系統(tǒng)有效執(zhí)行、為上層應(yīng)用軟件提供運(yùn)行支撐的軟件,其本質(zhì)特征是“操縱計(jì)算系統(tǒng)執(zhí)行”,這就是本文的第 1個(gè)洞察.系統(tǒng)軟件與底層硬件一起,向上層應(yīng)用提供通用圖靈機(jī)能力抽象,其操縱計(jì)算系統(tǒng)的主要方式有3種:編譯加載應(yīng)用軟件、執(zhí)行管控應(yīng)用軟件和資源、聯(lián)接協(xié)調(diào)分布計(jì)算系統(tǒng).洞察 2認(rèn)為:系統(tǒng)軟件具有不間斷持續(xù)運(yùn)行的基本屬性,在互聯(lián)網(wǎng)時(shí)代的時(shí)代特點(diǎn)是持續(xù)在線提供基礎(chǔ)服務(wù),是當(dāng)今云計(jì)算平臺(tái)之所以成為公共服務(wù)平臺(tái)的關(guān)鍵,是“軟件即服務(wù)”新型應(yīng)用模式的基石.洞察 3認(rèn)為:系統(tǒng)軟件的發(fā)展趨勢(shì)是持續(xù)在線演化,計(jì)算系統(tǒng)軟/硬件技術(shù)創(chuàng)新、信息物理空間融合和智能技術(shù)是系統(tǒng)軟件持續(xù)成長(zhǎng)和在線演化的主要?jiǎng)恿?這也決定了系統(tǒng)軟件的未來(lái)發(fā)展趨勢(shì).