我這學期會請蘇文鈺和Jim Huang (Jserv)兩位成大教授來我的「系統研究專題」課上談談他們在系統研究上的專業,時間和內容會再公布。此外我還會設法邀請其他的教授來幫忙,讓修課同學知道系統研究的學問之豐富有趣。
誰說上課只能在課堂上?Jserv 常常在臉書上講演作業系統的專業新知,使得學生和我大開眼界,也努力自學來充實自己。例如Jserv這篇,讓我回顧作業系統的發展以及最新趨勢,我在看了之後,記錄以下自己的想法,在臉書上向黃教授提出報告。
關於microkernel vs monolithic kernel的辯論,我覺得終究還是要考量 performance, application, security三者的trade-offs(這剛好也是我們實驗室命名的緣由)。
為了安全性而犧牲一些效能,或是為了效能而提高一些風險,到底哪個比較明智?很難講,我想必須針對每個應用做個案探討。
對於個人電腦,即便處理機效能和虛擬化技術大幅進步,trusted computing的概念始終沒有普遍化,為什麼呢?當然原因之一可能是主流的作業系統不大可能說自己不夠安全而引刀自宮,讓自己從monolithic kernel變成microkernel。但個人電腦的使用者對此沒有強烈地需求,是根本的原因。
在伺服器上,由於安全性出問題通常還是倚賴專人控管、人為處理,所以microkernel的安全性優勢還是往往被忽視,除非應用服務是極其重要和不可中斷的,才會考慮換掉Linux改用安全性較佳的OS。但是經過千錘百鍊的Linux Kernel,以及許多靠著Linux維生的開發者和管理員,在技術上和政治上讓換掉Linux這件事成為少數。
與金流、機密有關的專用電腦設備,例如銀行ATM、商場POS機、FBI的系統,往往選擇專用的OS,但是否一定要是microkernel呢?這也難講,因為專人開發的專用的OS,如果開發得好,有不錯的安全度,而且不給使用者亂裝額外應用,外人也不大清楚OS的內部,所以安全性的風險通常很低。當然還是有內神通外鬼的情況,以及駭客入侵,但層出不窮的監守自盜和攻擊方法,豈是microkernel就防得了的?
我想目前比較需要辯論的問題在於:與金流、機密有關,需要強化安全性,卻無專人可隨時控管的大規模電腦佈署上,例如手機和IoT裝置,要如何確認這些裝置的安全狀態?
已推出手機付費服務的Apple Pay,手機上跑的iOS,雖然源自於microkernel的Mach,但不被承認是純粹的microkernel,因為它的file systems, networking stacks, process and memory management functions都放在kernel裡面,頂多只能算是混種、介於兩者之間的hybrid kernel。
效能當然是Apple的主要考量之一。如果iOS改成純粹的microkernel,但是iPhone跑起來卡卡的,還會深受使用者的喜愛嗎?所以Apple把microkernel的Mach改成混種的OSX和iOS,以強化效能。
話說電腦進步至今,單核心的效能成長趨緩,很難再有重大突破,所以我不認為microkernel的效能弱點,在強調效能功耗效率的行動裝置上有辦法被降低到被忽視的程度,因此我不認為Apple會把那些在kernel裡面的模組移到user space。
Google的作法剛好與Apple相反,在設計Android架構的時候,他試圖解決Linux作為monolithic kernel最令人詬病的3rd party device drivers不安全的問題,設立了一個介於user space和kernel之間的hardware abstraction layer (HAL)來擺放drivers,算是有些效法microkernel的精神,同時讓廠商有規避Linux kernel的GPL的作法。但是為了效能,不少廠商還是會把一些功能放在kernel中。
類似的辯論可以延伸到virtual machines v.s. docker containers。就隔離性而言,VM比較好,但container的效率和速度較高。再次,我們看到performance-security的trade-offs,必須要看應用面的需求。
對於眾人注目的IoT裝置以及SDN/NFV設備,我覺得Muen separation kernel (SK)的說法是有些吸引力的。例如四軸直升機,如果被駭客入侵,飛去攻擊特定目標,那該如何是好?又例如有些網路設備乾脆就跑OpenFlow軟體來支援SDN,但如果控制軟體被駭,網路被綁架了怎麼辦?
很多這類型的裝置會使用Linux作為控制用途,以通訊業者的術語,就是control plane的部份,但這部份並不會一直在運作,因為理想的狀況是,一旦透過control plane設定好設備的功能之後,除非有異常狀況發生,否則這部份就可以在一旁休息,所以犧牲一點效能換取較高的安全性,應該是可以的。
相對於control plane的data plane的部份,做的是資料處理的功能,可以獨立出來在microkernel, container, 或是VM中進行,看看何者效能、效率、安全性、應用開發友善度較為符合需求。而Muen SK的構想,頗適用於網路設備上做NFV。這是個頗有趣的研究題目。
當然Trusted Computing (TC)的作法很多,這只是提供一個參考範例。幾乎每個處理機大廠都會有獨門的TC建置方式,但通常只有大內高手能真正搞清楚。以目前IoT和big data發展的趨勢看來,我想將來會有越來越多的地方需要很多這類大內高手。
沒有留言:
張貼留言