關鍵字:umwinlinux,從檔案夾中啟動的linux,user mode linux windows,iaas,baas,paas穿插開發運作環鏡,是原生裝機系統,還是語言系統後端虛拟機,實機/虛拟機/os内部 統一作業系統。真正的應用程式級統一的user mode OS,使用者态作業系統。使用者态作業系統核心。
自古以來,像python,js,php這類動态腳本語言系統都嚴重依賴于後端虛拟機實作,畢竟,可移殖性是soft vm的重大作用之一,這使得基于其上的開發和釋出可以做到僞“跨平台”(實際上是各大虛拟機在其上都實作了一遍),更有甚者,.net和java這些虛拟機更是提出了統一後端,使得常見的多語言系統有了共同的後端規範,基本上可以将包括上面這些語言在内的各大各自為政的語言整合到all in one和極緻,比如ironpy,ironjs,ironphp based on clr。 —— 所有這些,不過是把不同OS本地上的各異性封裝了一次,用軟體再造一層抽象,有了統一的接口再在其中建自己的東西,這裡的抽象與封裝過程作為基本技術,在軟體技術/藝術的各個層次頻頻可見。
但是遺憾的是,類似技術并沒有上提到OS層,,OS作為規範硬體各異性并提供native dev and run的統一層面,與上面提到的python,js,php等langsys backend soft vm有異曲同工之妙,然而正如它們沒有進一步發展為.net上的免binding ironpy,ironjs,ironphp一樣,各種OS上面實作的APP規範和系統調用(各種os subsystems,etc ..)實際上是各自為政的,不可移殖的,unix posix與windows win32/64實際并不相容,是以才會有各種CUI級别的cygwin,wine和各種使用者層虛拟機方案(接下來會講到)的出現,它們的工作正是為了統一這個層面。前者主要是為了運作程式,後者主要是為了開發/iaas化加速。
有幾種特殊的OS:
現在的雲各種虛拟OS的加速方案kvm,virtio,openvz等,還有各種虛拟機管理器virtualbox技術,還有vagrant開發虛拟機,特别是vagrant,随着開發的複雜化,建立paas,baas,iaas的穿插環境,在vagrant中建立起各種虛拟機環境,這種需求都開始變得很明顯和頻繁。
這些技術的出現,都可以稱作是一種user mode os的層次的東西。而jvm,clr這樣的規範和實作,一開始也都是工作在使用者層的。有相同的架構層次和整合基礎。
separated user mode os from kernel mode os
雖然OS這個層面并不需要直接考慮任何langsys,但是不妨這樣想,在OS的實作層,如果有一套類langsys的soft“虛拟機”,用來代替os的subsystem(傳統意義上的os subsystem api相容機制并不足以提供太多的東西。),那麼可以實際上有二種 OS:
一種OS是那些kernel的東西就足夠,并不需要包括cui層次,隻包括driver實作層次,是僅僅管理核心層次的OS。
而另一種OS不直接附在硬體上而是作為一個vm存在,專門用來負責除硬體虛拟化之外的其它任何應用相容和開發層任務,就像jvm,clr,安卓内部的java虛拟機一樣。
而第二種OS實際上可以完全采用第一種OS的kernel實作技術,隻不過它全程運作在user mode下。以第一 種OS為meta os,後面第二種OS的執行個體可以在資源限制範圍内無限開。 ——- 這完全類似于文章開頭就談到的:在langsys層提出clr,jvm,用它來建立起isolated langsyses的統一後端,達成最大相容和可移殖。
業界類似方案有colinux,也類似openvz這類方案,都有二套OS核心。二者兼備才能跨核心和跨使用者層都能做到高度統一,比如,通過colinux等usermodeos,實機OS可僅作metaos,而user os可以作各種虛拟層.
為什麼是colinux?
以上這些技術在colinux中全被包含,它符合淺封裝原生OS和不帶來太多損耗的原則。
colinux實際上是user mode linux的一種,不過它是建立在以windows/linux為host上的隻是不能以windows為guest。并且,它支援從某個實機盤和實機驅動。
為什麼不是虛拟機管理軟體和reactos這樣的方案?
虛拟機太重。
reactos太注重重複windows已經做過的工作,忽略了新時代user mode os的需求。
拿龍井Longene來說,龍井也放棄了驅動相容(它在最新一份解說中,提到類linux的andriod系已變成主流,windows才是需要相容linux的,是以不必相容)。畢竟多OS共存才是合理現象。本來就不必從那個層次相容。弄錯了相容層次。它現在專心做應用相容了。
他們都用了wine,希望ros能改正過來,向龍井靠攏,将roadmap改成先發展和完善user mode的東西,再有餘力去發展驅動相容級的實作裝機方向。
這樣的二套OS可以裝在實機上,當用在實機上,使用者可以在任意架構的機器上同時(注意這個同時)安裝運作多種作業系統并不需要安裝額外的驅動,性能并不會有太大的損耗,在裝機上可徹底去除UEFI這樣的東西,機器出廠商僅需要內建第一層OS及驅動支援即可 — 向使用者透露更好的直接裝應用的層次。
user mode os不但可用于裝機,還用于語言系統和開發運作
再來說第二層OS用于作為langsys backend,如果第一層OS可以支援任何類型的第二層虛拟機,那麼幾乎曆史上所有的APP開發/運作層相容問題都不複存在了。比如,一台手機的實機OS內建了三個第二層OS虛拟機,那麼它就可以同時運作winphone app,ios app,andriod app,還可以适用于雲主機虛拟機,還可以用于任何CUI層的vagrant開虛拟機過程。
看來,提出一個先行于realhw os和考慮整合langsys後端的使用者态OS,看來是潮流啊。。
xaas:大一統的user mode os
當第二層OS可以以vagrant方式被管理和使用時,它實際上變成了xaas,因為它可以為langsys baas服務了。
在我以前的文章《釋出engitor》《釋出enginx》中,實際上enginx +engitor是當paas和langsys baas用的,尤其是engitor還有engitor as visual editor service的意思,可以看作eaae service吧。
如果這些都可以做進我的msyscuione->xaas檔案夾與engitor,enginx放一起,(比如msyscuione中可直接安裝不同第二層user mode OS,比如colinux,再在colinux中裝msyscuione langsys),而不用到像vagrant之類太多虛拟技術和雲技術。統一用于實機,雲端裝機/開發。那麼這個user mode os就是不折不扣的跨iaas,paas,baas等的綜合xaas user mode os了。
或許還要加上我《一個設想:基于colinux,去厚重虛拟化,共盤直接檔案系統安裝運作的windows,linux》就更完美了。
(此處不設回複,掃碼到微信參與留言,或直接點選到原文)
