250
技術社區[雲棲]
怎樣開發一款操作係統(持續更新ing)
在如今,市場上主流的操作係統不用想都應該知道是Android和IOS吧,還有一個WindowsPhone,不過現在它的市場連百分之四都不到,現在無論微軟怎麼鼓勵開發者開發WP程序,甚至是自己掏腰包或幫忙寫程序都沒有多少程序員圍觀了,微軟這幾年的手機行業實在不景氣啊!這幾年來,在我們中國也有不少公司自己製作過移動操作係統(這裏操作係統在下麵統一使用OS代替了),但因為軟件市場不景氣都紛紛拋棄轉型做Android的二次開發了。
但是現在我們中國也有了自己的OS了,那就是AliOS,AliOS原名是叫YunOS,而YunOS原名又叫阿裏OS。這個OS改名期間,真是折騰了不少啊:之前叫做阿裏OS時被人說是盜版Android(但之前我也是這樣認為的,之前解析了一下阿裏OS的源代碼,隻是在Farmework中加入了一個Cloudservice的運行包而已),在改名後而仍然被人叫盜版。不過從YunOS6.0發布後,又改名成了AliOS。現在我還是改變了想法,畢竟現在去解析源碼就會發現開發人員還是下了不少功夫的,但美中不足的是口碑沒那麼好了,AliOS還是搭載在高檔手機上比較好!
分析了上麵的實例,有人會提問,有Android或IOS了,還要開發OS幹嘛?那你反過來想想,假如有一天Android閉源了,IOS倒閉了。那我們的OS版本就隻能永遠停留在那個階段了。如果我們中國開發了一部OS,而且自己的國家擁有OS的版權,不是挺好嗎?現在AliOS隻是兼容Android Application,而自己的應用市場小得可憐,開發出屬於自己的OS,意味著不被其他公司控製股權和限製。
無論如何,開發一款OS是非常考驗人心滴,甚至自己還有可能成為下一個喬布斯呢。
好,開始正題,,,,
一個完善的OS有以下部分組成:硬件、固件+軟件
硬件:WLAN硬件、攝像頭、CPU等等可見的硬件。
固件:內核、WLAN驅動、圖形驅動等等不可見的固件
軟件:運行庫、數據庫、文件係統等等不可見的軟件
由於硬件很好搞到手,可以直接買個開發板就行了,所以首先我們要根據自己所需要的功能選取所需要的內核,現在市場上的手機搭載的都是Linux Kernel或Unix Kernel 。linux Kernel可以移植到許多的平台上去,對硬件要求極低。而Unix Kernel對硬件要求極高(本人親測)。但Linux Kernel的功能少,一般適用於小型機,而Unix Kernel一般用於商業性。
接下來就是驅動,開發過Android UI的都應該知道,穀歌為了繞過GPL協議,把Linux Kernel能改的地方都改過了,特別是驅動這一方麵,比如攝像頭驅動是在RunTime運行時才進行初始化的。給張Android的架構圖大家看一下
如果模仿穀歌的做法也是可行的,遵從GPL協議也是可以的。
然後就是資源庫,資源庫可以隨這個時代的主流設計,比如數據庫可以使用MySQL,如果內核選的是Unix的話,最好在內核初始化時就對所有的驅動啊、資源庫啊定位好。
然後我們說到運行庫
大半夜了,明日更,謝謝觀看
最後更新:2017-10-21 02:03:18