1. 程式人生 > >安卓學習日記(一):瞭解安卓架構(linux核心層、系統執行庫層、應用框架層、應用層)

安卓學習日記(一):瞭解安卓架構(linux核心層、系統執行庫層、應用框架層、應用層)

10)timed device: 提供了對裝置進行定時控制的功能,目前支援vibrator和LED裝置。原始碼位於drivers/staging/android /timed_output.c(timed_gpio.c)。 11)Yaffs2 :是檔案系統 Android採用Yaffs2作為MTD nand flash檔案系統,原始碼位於fs/yaffs2/目錄下。Yaffs2是一個快速穩定的應用於NAND和NOR Flash的跨平臺的嵌入式裝置檔案系統,同其他Flash檔案系統相比,Yaffs2能使用更小的記憶體來儲存其執行狀態,因此它佔用記憶體小。Yaffs2的垃圾回收非常簡單而且快速,因此能表現出更好的效能。Yaffs2在大容量的NAND Flash上的效能表現尤為突出,非常適合大容量的Flash儲存。 那麼為什麼不自己開發一個核心而是使用Linux核心,這個牽扯到很多儘量描述一下,首先當時有了開源的Linux為什麼還要在自己去開發核心,android的本質是一個基於Linux上執行的java虛擬機器,Google只用了kernel所以只有系統的底層結構是一樣的其他的東西在Android裡都是不一樣的尤其是程式設計介面,所以Android距離Linux比MAC OS距離Linux還要遠。android是被google收購的,原來的小團隊沒有時間和精力去研發所以使用了上面說的開源的Linux(免費還免維護費),同時因為google是一個網際網路公司,google是靠服務來盈利不像Apple是裝置商依靠軟體給裝置服務,所以google是一個純粹的軟體提供者,為了讓硬體廠商能夠合作需要從硬體的角度思考問題(硬體廠商更願意再有一定把握的平臺進行開發),同時google也有比較好的對應措施去彌補Linux作業系統的一些缺點,從技術上失去了一些動力。 關於核心的作用簡單說就是提供了程序管理、檔案網路管理、系統安全許可權管理、以及系統與硬體裝置通訊基礎。而在無論Android還是iOS這類高度依賴框架的多層次作業系統上,核心對上層開發者來說是幾乎不可見的,只能通過開放給你的框架介面進行相關操作。因此可以說核心對整個系統來說是基礎性的,而非功能性。就整個Android工程來說主體互動、功能框架才是重中之重。再說說開發核心到底有多大好處,或者說價效比有多高的問題。作為整套系統的基礎,核心的高效穩定可以說是重重之重,而任何一款軟體的開發都要經歷迭代過程,微軟開發NT核心耗費大量資金與時間,而且至今還在不斷改進與維護正是對此種迭代的最佳例證。而即使如此,經過將近十年的開發與維護,NT核心之效率與功能性仍弱於Linux。由於Linux的開源特性,大量個人與企業對其進行持續不斷的維護與改進是Linux始終保持領先的重要原因,而微軟以其一己之力自不能與其媲美。這實際上是告訴大家在已有開源Linux的前提下,自己開發系統核心實際上是一件吃力不討好的事。
因此使用來源Linux自然是省時省力省錢又保險的選擇。另外值得一提的是蘋果自主研發核心實際上是不準確的iOS與OSX其實都是基於UNIX核心。