Linux作為一種強(qiáng)大的操作系統(tǒng)內(nèi)核,因其穩(wěn)定性、安全性和靈活性等優(yōu)點(diǎn),被廣泛應(yīng)用在數(shù)十億臺設(shè)備和各種各樣的場景中,并擁有強(qiáng)大的開發(fā)者社區(qū)支持。
操作系統(tǒng)是計(jì)算機(jī)的大腦,它和人的大腦一樣,經(jīng)歷了從無到有、從弱到強(qiáng)的演化過程。如今,站在萬物智聯(lián)的時代浪潮上,操作系統(tǒng)將如何前進(jìn)?
9月1日,中國科學(xué)技術(shù)大學(xué)軟件學(xué)院教授、夢寧軟件創(chuàng)始人孟寧,做客異步社區(qū)直播間,和大家聊了聊操作系統(tǒng)的前世今生,并帶來了他的新書《庖丁解牛Linux操作系統(tǒng)分析》,本書是他在中國科學(xué)技術(shù)大學(xué)多年來執(zhí)教Linux課程的總結(jié),對于操作系統(tǒng),聽聽他怎么說!
嘉賓簡介
孟 寧
目前任職于中國科學(xué)技術(shù)大學(xué)軟件學(xué)院,夢寧軟件創(chuàng)始人,多年來專注于自主可控某礎(chǔ)系統(tǒng)軟件研發(fā)和教學(xué)。
著作有《代碼中的軟件工程》和《丁解牛Linux操作系統(tǒng)分析》等。其擔(dān)任主講人或講師的“Linux 內(nèi)核分析”慕課課程入選2015 年網(wǎng)易云課堂“頂尖中文大學(xué)計(jì)算機(jī)專業(yè)課程體系”,課程“Linux 操作系統(tǒng)分析”獲得了教育部“國家精品在線開放課程”和“國家級一流本科課程”認(rèn)定,被中國高校計(jì)算機(jī)教育 MOOC 聯(lián)盟評為“優(yōu)秀課程”。
孟寧首先表示,要深入理解操作系統(tǒng),不僅需要學(xué)習(xí)操作系統(tǒng)原理,還要了解其發(fā)展的歷程。他從封閉式計(jì)算站、分時系統(tǒng)、多道程序和系統(tǒng)調(diào)用,再到經(jīng)典操作系統(tǒng)和分布式操作系統(tǒng)等發(fā)展階段,依次為大家梳理了操作系統(tǒng)的發(fā)展脈絡(luò)。
01操作系統(tǒng)的發(fā)展歷程
在最初的階段,并沒有真正的操作系統(tǒng)存在。IBM 701 開放式計(jì)算站(open shop)是由使用者手動操作的,工作效率?分低下。為了減少計(jì)算時間的浪費(fèi)并使開發(fā)人員從計(jì)算機(jī)房中解放出來,開發(fā)人員被要求在穿孔卡上準(zhǔn)備程序和數(shù)據(jù),然后提交到計(jì)算中心去執(zhí)行。開放式計(jì)算站由此變成了封閉式計(jì)算站(closed shop),所以封閉式計(jì)算站里的操作員可以被認(rèn)為是最初的操作系統(tǒng)。
批處理(Batch Processing)系統(tǒng)
當(dāng)主計(jì)算機(jī) 7094 執(zhí)行程序的時候,兩臺衛(wèi)星計(jì)算機(jī)同時做著輸入和輸出的工作。操作員完成了現(xiàn)代操作系統(tǒng)需要做的主要工作,比如決定程序運(yùn)行的順序,也就是任務(wù)調(diào)度。如果想讓你的程序得到優(yōu)先執(zhí)行,就得通過操作員想辦法插隊(duì)。
這種計(jì)算模式就是批處理(batch processing)系統(tǒng),IBM 7094 所使用的共享操作系統(tǒng)(shared operating system)是早期的批處理系統(tǒng)。
分時(Time Sharing)系統(tǒng)
然而,批處理費(fèi)時費(fèi)?,?且給了計(jì)算機(jī)管理員太?的權(quán)?,?客痛恨權(quán)威的傳統(tǒng),很??部分原因歸咎于計(jì)算機(jī)管理員有權(quán)決定哪個程序優(yōu)先運(yùn)?。
1962年MIT的Project MAC ?(??智能實(shí)驗(yàn)室的前身)引?了分時的概念,之前曾被稱為偷時(Timestealing),因?yàn)樗??個程序運(yùn)?中間的空隙執(zhí)?另外?個程序。同時電?打字機(jī)、電視機(jī)和?標(biāo)陸續(xù)引?計(jì)算機(jī)系統(tǒng)作為人機(jī)交互設(shè)備,再也不?靠打孔和打印來和計(jì)算機(jī)交互。
多道程序(Multiprogramming)
多道程序技術(shù)改變了操作系統(tǒng)。在大型機(jī)時代之后,小型機(jī)時代到來,計(jì)算機(jī)成本降低且硬件功能增強(qiáng)。處理器開始支持程序的并發(fā)執(zhí)?和控制。中斷技術(shù)使得處理器能夠控制多道程序的并發(fā)執(zhí)?,這時多道程序操作系統(tǒng)開始出現(xiàn)。多道程序操作系統(tǒng)不是一次只運(yùn)行一個程序,而是將大量程序加載到內(nèi)存中并在它們之間快速切換,從而提高CPU利用率。這種切換非常重要,因?yàn)镮/O訪問速度很慢,CPU在等待輸入數(shù)據(jù)或輸出完成時會空閑,快速切換不同的用戶程序可以提高CPU利用率。
系統(tǒng)調(diào)?(System Call)
所以系統(tǒng)調(diào)用的概念誕生了,系統(tǒng)調(diào)用(system call)概念的誕生是操作系統(tǒng)發(fā)展的一個重要里程碑。Atlas Supervisor 是第一個提出現(xiàn)代操作系統(tǒng)諸多概念的系統(tǒng),它率先采用了系統(tǒng)調(diào)用的工作機(jī)制。
系統(tǒng)調(diào)?將?戶程序和操作系統(tǒng)內(nèi)核之間進(jìn)?了隔離,通過添加?些特殊的硬件指 ?令和硬件狀態(tài)讓?戶程序進(jìn)?操作系統(tǒng)的過程更加正式、可控,這樣有效保護(hù)操作 ?系統(tǒng)提供的底層代碼,使得整個系統(tǒng)更加穩(wěn)定,不會讓?戶程序的錯誤造成整個系統(tǒng)的崩潰。系統(tǒng)調(diào)?機(jī)制的采?使得操作系統(tǒng)超越了早期操作系統(tǒng)只是提供?些底層 API 函數(shù) ?庫的狀況,這時的操作系統(tǒng)超越了 API 庫函數(shù),因?yàn)橥ㄟ^系統(tǒng)調(diào)?提供了有效的保護(hù)機(jī)制。
隨后,孟寧向大家介紹了一些經(jīng)典的操作系統(tǒng)和分布式操作系統(tǒng),并分析了未來操作系統(tǒng)發(fā)展所面臨的挑戰(zhàn)。
經(jīng)典操作系統(tǒng)
分布式操作系統(tǒng)
到今天,操作系統(tǒng)需要面對的
挑戰(zhàn)主要有這樣幾個方面:
萬物互聯(lián)的終端多樣性,邊緣計(jì)算、泛在計(jì)算、函數(shù)計(jì)算 …
異構(gòu)算?蓬勃發(fā)展, ?CPU 、NPU 、GPU 、DPU…xPU
軟硬件協(xié)同優(yōu)化越來越重要,以CPU為中?的ISA作為軟硬件的標(biāo)準(zhǔn)界 ?受到挑戰(zhàn)
在PC和移動互聯(lián)網(wǎng)時代,整個硬件平臺是相對標(biāo)準(zhǔn)的,但是在萬物智聯(lián)的時代,硬件平臺不是標(biāo)準(zhǔn)的且差異化非常大,隨著計(jì)算需求的多樣化,異構(gòu)計(jì)算在不同的場景下,不只是終端多樣,算力的需求也是多樣化的。
這時傳統(tǒng)計(jì)算機(jī)的結(jié)構(gòu)可能會面臨困境,以CPU為中?的ISA作為軟硬件的標(biāo)準(zhǔn)界?受到挑戰(zhàn)。不管是經(jīng)典操作系統(tǒng)還是分布式操作系統(tǒng),所管理的資源都是三大類:計(jì)算、I/O和存儲。
02未來,操作系統(tǒng)有哪些可能性?
孟寧用幾個例子分享了他對于操作系統(tǒng)未來的展望。
操作系統(tǒng)未來展望
第一個例子是
Hypervisor OS
Hypervisor OS
原來的操作系統(tǒng)是場景禁錮的操作系統(tǒng),現(xiàn)在要創(chuàng)建一個微內(nèi)核的操作系統(tǒng)平臺,通過組件化適配不同的硬件環(huán)境。在這個平臺上,可以組裝出各種類型的操作系統(tǒng),這是微內(nèi)核架構(gòu)的常見做法。然而,智者千慮,必有一失,孟寧指出,當(dāng)出現(xiàn)新的情況或需求變更時,我們在軟件工程上需要的不是穩(wěn)定性,而是不斷的迭代和重構(gòu)。
另一種思路是
平衡高效、安全、易用的
全系統(tǒng)可編程技術(shù)
我們現(xiàn)在需要的是能夠跨物聯(lián)網(wǎng)終端的技術(shù),大到汽車,小到手機(jī)、手環(huán)等等,目前最常用的兩種實(shí)現(xiàn)技術(shù)分別是當(dāng)前非常火爆的可以在內(nèi)核中注入的eBPF和擁有很好的跨平臺特性的WEBASSEBLY。
云原生落地困難重重
云原生主要集中在微服務(wù)架構(gòu)和云端來支撐環(huán)境的部署。Kubernetes解決了應(yīng)?編排和調(diào)度?動化問題,但是使?Kubernetes不僅要改變開發(fā)習(xí)慣,還要學(xué)習(xí)很多新概念新技術(shù)。云原?落地的難點(diǎn)在于使?,將云原?底層的復(fù)雜技術(shù)包裝成應(yīng)?開發(fā)者熟悉的應(yīng)?層概念?關(guān)重要,基于FaaS的應(yīng)?層編程框架可能是?個有前景的演化?向。
云原生技術(shù)涉及到的復(fù)雜環(huán)境決定了想要掌握它就要面臨更高的挑戰(zhàn)。
“The farther back you can look, the farther forward you are likely to see. ”
—— by Winston Churchill
你能看到多遠(yuǎn)的過去,就能看到多遠(yuǎn)的未來!
——溫斯頓 丘吉爾
可以做哪些嘗試?
選擇Wasm字節(jié)碼
選擇的原因:
執(zhí)?速度可以達(dá)到原?C代碼的92.79%;
冷啟動性能僅毫秒級,僅1ms左右;
主流的各種?級語?都可以編譯成Wasm字節(jié)碼,在開發(fā)者?態(tài)上更有包容性;
安全性和模塊化能?。
選擇了Wasm之后,需要面臨的問題是我們需要在不同的泛在環(huán)境下提供應(yīng)用開發(fā)框架,要給這個應(yīng)用開發(fā)框架提供工具集成開發(fā)環(huán)境。
基于Wasm的跨平臺應(yīng)?開發(fā)框架
孟寧提到他們正在開發(fā)一個基于WebAssembly的Faas高效資源管理平臺,使用Kuasar提供Wasm沙盒管理,在Kubernetes之上構(gòu)建的基于WebAssemblv的Faas無服務(wù)計(jì)算平臺。使用Wasm替代OCI容器解決函數(shù)冷啟動問題,實(shí)現(xiàn)不需預(yù)熱環(huán)境,按需加載和部署函數(shù),使用Kuasar降低Containerd的Pod沙盒開銷,提高冷啟動性能,使用WasmEdge SDK定制化運(yùn)行時,實(shí)現(xiàn)Wasm的HTTP函數(shù)式啟動和函數(shù)級的資源限制,以及資源消耗的監(jiān)控統(tǒng)計(jì)與管理。
直播最后,孟寧強(qiáng)調(diào)了當(dāng)前硬件環(huán)境的復(fù)雜性和重要性。他指出,過去我們所管理的硬件環(huán)境相對比較標(biāo)準(zhǔn),但是現(xiàn)在的情況已經(jīng)不再如此。現(xiàn)代硬件產(chǎn)品具有多樣性和復(fù)雜性,一個產(chǎn)品的需求決定了我們需要開發(fā)什么樣的產(chǎn)品。為了滿足這些需求,我們需要從不同的角度進(jìn)行分解,深入理解產(chǎn)品的需求和功能。
孟寧老師的講解全面而簡潔,相信廣大讀者和用戶聽完這一課都能加深對操作系統(tǒng)的了解,也能更好地理解操作系統(tǒng)的本質(zhì)和精髓,同時對操作系統(tǒng)的未來發(fā)展有了更加清晰的認(rèn)知。
審核編輯:湯梓紅
評論