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