1. 程式人生 > >淺談 unix, linux, ios, android 區別和聯系

淺談 unix, linux, ios, android 區別和聯系

bubuko 而且 否則 實施 淺談 win 由於 優秀 規範

淺談 unix, linux, ios, android 區別和聯系

網上的答案並不是很好,便從網上整理的相對專業的問答,本人很菜,大佬勿噴

UNIX 和 Linux

??UNIX 操作系統(尤尼斯), 是一個強大的多用戶、多任務操作系統,支持多種處理器架構,按照操作系統的分類,屬於分時操作系統,最早由 KenThompson、Dennis Ritchie和Douglas McIlroy於1969年在AT&T的貝爾實驗室開發。目前它的商標權由國際開放標準組織所擁有,只有符合單一UNIX 規範的 UNIX 系統才能 使用UNIX這個名稱,否則只能稱為類 UNIX(UNIX-like)

??unix 是在 posix 之前就有的,linux 是在 posix 出來之後有的,最初的 linux 是仿制的 minix,unix 和 linux 很多軟件都是相通的,linux 是 UNIX 的一個分支,別的分支還有freebsd 等,UNIX 是命令行下的系統 linux 是加了窗體管理的系統。 UNIX 是一個功能強大、性能全面的多用戶、多任務操作系統,可以應用從巨型計算機到普通PC機等多種不同的平臺上,是應用面最廣、影響力最大的操作系統。 Linux 是一種外觀和性能與 UNIX 相同或更好的操作系統,但,Linux 不源於任何版本的 UNIX 的源代碼,並不是 UNIX,而是一個類似於 UNIX 的產品。

??從發展的背景看,Linux 是從 UNIX 發展而來的。這種繼承使得Linux的用戶能大大地從 UNIX 團體貢獻中獲利。因為 UNIX 是世界上使用最普遍、發展最成熟的操作系統,它是七十年代中期發展起來的微機和巨型機的多任務系統,雖然有時接口比較混亂,並缺少相對集中的標準,但還是發展壯大成為了最廣泛使用的操作系統之一。UNIX 的用戶可以從很多方面得到支持和幫助。因此,Linux 做為 UNIX 的一個克隆,同樣會得到相應的支持和幫助,直接擁有 UNIX 在用戶中建立的牢固的地位。

??從使用費用上看,UNIX 與 Linux 的區別在於 Linux 是一種開放、免費的操作系統,而 UNIX 系統基本上需要有償使用。這一區別使得我們能夠不用花錢就能得到很多Linux的版本以及為其開發的應用軟件。當我們訪問 Internet 時,會發現幾乎所有可用的自由軟件都能夠運行在Linux系統上。並且,一大批世界級的優秀的程序員正在努力開發和提供基於 Linux 的共享軟件。 但是,也正是由於Linux 源碼可以開放的緣故,所以現在真正的商業應用尚未開始,原因很簡單:任何人都可以了解其內部最薄弱的環節,都可以實施侵襲和攻擊。

??從產品方面看,UNIX 和 Linux 都是操作系統的名稱.但 UNIX 這四個字母除了是操作系統名稱外,還作為商標歸 SCO 所有.Linux 商業化的有 RedHat Linux 、SuSe Linux、slakeware Linux、國內的紅旗等,還有 Turbo Linux.UNIX 主要有 Sun 的 Solaris、IBM 的 AIX, HP 的 HP-UX,以及x86平臺的的 SCO UNIX/UNIXwareUNIX多數是硬件廠商針對自己的硬件平臺的操作系統,主要與 CPU 等有關,如Sun 的Solaris作為商用,定位在其使用 SPARC/SPARCII 的CPU的工作站及服務器上,當然 Solaris 也有x86的版本,而Linux 也有其於 RISC 的版本。

?? 至於價格,個人使用的 Linux 基本上算是免費的,不同的Linux發行廠商針對企業級應用在基本的系統上有些優化,如 RedHat 的 Enterprise 產品,這些產品包括支持服務是比較貴的。像IBM/HP/SUN的UNIX,因為主要是針對其硬件平臺,所以操作系統通常在設備價格中。

??在性能上,Linux沒有 UNIX 那麽全面,但基本上對個人用戶和小型應用來說是綽綽有余.通常情況下,如果你有機會使用到UNIX環境,比如銀行、電信部門,那一般都是固定機型的UNIX。比如電信裏SUN的居多,民航裏HP的居多,銀行裏IBM的居多。學習中,不同的UNIX命令集有些不同,要註意。

??目前主流的Unix系統有三種,分別是 AIX、HP-UX、Solaris,它們分別運行在各自的 Unix 服務器上,這些 Unix 服務器自成體系,有自己生產的 CPU、內存、主板等等,這些Unix系統互不兼容,它們各自有自己的系統工程師,這些工程師一般只熟悉其中的某種 Unix 系統,如果要熟悉其它的 Unix 系統,則還要繼續學習,這些 Unix 系統沒有好壞,只有不同。

??另外,目前各個行業關鍵性的應用領域采用的都是Unix服務器,為什麽呢?Linux一般運行在PC機上,不太穩定,並行度不夠 一般應用在小型企業;而Unix系統則運行在Unix服務器上,這些服務器非常穩定,已經經歷過幾十年的考驗,還有這些Unix服務器CPU的個數最多的可以達到一百多個,並行度非常高,這個是PC機無法比擬的。目前在電信、金融、油田、移動、證券等行業的關鍵性應用,Unix服務器處於壟斷地位。所以只有掌握了Unix才能真正意義上的進入高端行業,對以後的職業發展是至關重要的。

Linux

??Linux 是一套免費使用和自由傳播的類 Unix 操作系統,是一個基於 POSIX 和 UNIX 的多用戶、多任務、支持多線程和多 CPU 的操作系統。它能運行主要的 UNIX 工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux 繼承了 Unix 以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
Linux 操作系統誕生於1991 年10 月5 日。Linux 有許多不同的版本,但是都使用了 Linux 內核。Linux 安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻遊戲控制臺、臺式計算機、大型機和超級計算機。

??嚴格來講,Linux 這個詞本身只表示 Linux 內核,但實際上人們已經習慣了用 Linux 來形容整個基於 Linux 內核,並且使用GNU工程各種工具和數據庫的操作系統。

??Linux 內核是可以裁剪的,可以對不同的目標平臺(如PC、嵌入式設備)做不同的裁剪。

??有實力的廠家一般還可以直接修改內核源代碼,做不同的定制或者裁剪。比如以前國產麒麟系統修改了 FreeBSD(一種Unix)內核以便符合自主安全,成為一個事件。

??各系統發展時間軸:

技術分享圖片

iOS

?? iOS 是由蘋果公司開發的移動操作系統,iOS 與蘋果的 Mac OS X操作系統一樣,屬於類 Unix 的商業操作系統。原本這個系統名為 iPhone OS,因為iPad,iPhone,iPod touch 都使用 iPhone OS,所以 2010WWDC 大會上宣布改名為 iOS(iOS為美國Cisco公司網絡設備操作系統註冊商標,蘋果改名已獲得Cisco公司授權)。

Android

??Android 是一種基於 Linux 的自由 及開放源代碼的操作系統,主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較 多人使用“安卓”或“安致”。Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購註資。

??雖然 Android 基於 Linux 內核,但是它與 Linux 之間還是有很大的差別,比如 Android 在 Linux 內核的基礎上添加了自己所特有的驅動程序。

??android 是否能稱為一種新的操作系統呢?至少我自己認為不算是,它最多算作一個新的應用程序罷了。

??Android 為什麽會選擇 Linux ?

??成熟的操作系統有很多,但是 Android 為什麽選擇采用 Linux 內核呢?這就與 Linux 的一些特性有關了,比如:

??1、強大的內存管理和進程管理方案 2、基於權限的安全模式 3、支持共享庫 4、經過認證的驅動模型 5、Linux本身就是開源項目

圖解 Android 和 Linux 的區別

技術分享圖片

技術分享圖片

??上面兩幅圖應該很直觀的展示了 Android 系統和 Linux 發行版系統(Ubuntu/Fedora/centos)之間的區別和聯系。

??可以這麽說 Android 本質上還是一個 Linux 系統,只不過 Google 對它進行了裁剪和定制,這跟我們定制Linux到自己的嵌入式設備上的做法大同小異,只不過Google做的更多罷了,那麽 Google 主要做了哪些事情呢?上圖中也可以看出來,很多人說 Android 系統的程序只能用Java開發,這麽說的說明對 Android 系統的架構了解的還不是很深入,其實從圖上看到,Google 自己寫了一個叫Dalvik的程序運行在Linux的系統上面,這個程序就是 Android 的 Java虛擬機(JVM),由於效率等問題 Android4.4 以後改為 Android Run Time(ART),但不管是 Dalvik 還是ART,都是用c/c++開發的,而用 Java 開發出來的 APP 其實是運行在 Dalvik/ART 上面的,皮之不存毛將焉附,沒有 Dalvik/ART,那些 Java 開發的 APP 是根本沒法運行的,所以說那些說 Android 系統不能用 c/c++ 開發的說法是站不住腳的,只要用 AOSP(安卓開放源碼項目)裏面的交叉編譯器編譯出來的二進制文件在 Android 上面照樣也是可以運行的,而且跟 Dalvik/ART 屬於同一層次的東西,即(都是init進程的子進程),但是一般的 Android 系統上 init 進程只有一個子進程即Dalvik/ART,如果非要說Dalvik/ART才算Android的話,那麽Android確實不能用 c/c++ 開發,因為 Java 程序編譯出來的是字節碼,只能在 Dalvik/ART 上運行,c/c++ 編譯出來的是二進制機器碼直接在CPU中運行,應該說c/c++開發(這裏不是說的JNI方式)Android 程序無法調用 Android 的 Java 類庫這樣才是正確的。

??說了這麽多Android的,再看看 Linux 發行版的做法,Linux 發行版一般是在 Linux 的基礎上開發了一套桌面管理系統,比如基於 GTK 框架的gnome,比如基於Qt框架的LXQT(聽說 Ubuntu 準備拋棄 gnome 投向Qt懷抱了?Qt的死忠粉表示幹得好!)。跟 Windows 一樣,經典的一個桌面系統+N個軟件的模式,用 c/c++ 開發出來程序編譯成二進制的機器碼直接運行在 Linux 系統上,這些軟件全部都是跟Dalvik/ART一個層次的東西,而Linux發行版的程序能不能用 Java 開發呢?這個問題就跟問 Windows上 能不能用Java開發一樣沒水準。畢竟 Dalvik/ART 本身也是運行在 Linux 系統上的,你只要把 Dalvik/ART 移植到 Linux 發行版甚至 Windows 上,你手機裏的那些 APP 就可以運行了(當然是不依賴硬件的,如果要打電話肯定是不行了),不然你以為Android模擬器是怎麽弄的。

??總結起來,Android 系統和 Linux 發行版的系統根本區別是 Android 上面只跑了一個 Dalvik/ART,而Linux發行版上面跑了很多“Dalvik/ART”而已。如果你把 gnome 或者LXQT部署到Android 上,或者把 Dalvik/ART 部署到 Linux 發行版上的話,那麽二者的區別可能並沒你想象的那麽大。

??其實,在 Linux 上面跑一個軟件(虛擬機、解釋器),然後再基於這個軟件做二次開發的的做法 Google 的 Android 並不是第一個這麽幹的。工控行業的小夥伴對控制器應該很熟悉吧?什麽,你不知道控制器?或者說PLC更親切吧,PLC(可編程控制器)只是一種通用的控制器而已,PLC 分為兩種,一種是編譯型的PLC,我們在學校裏學習的什麽歐姆龍,三菱,西門子S300都是這種PLC,這種PLC的軟件架構很簡單,就是一個單片機,然後我們畫的梯形圖跟我們編譯單片機程序一樣直接被編譯成了機器碼,然後燒寫到單片機裏面執行,這種PLC是沒有辦法監控運行的,不過我要說的是另外一種PLC,曾經機緣巧合接觸過一段時間,那就是軟PLC,最常用的軟PLC就是codesys,codesys可不止是一個簡單的PLC編譯工具!它是一個軟PLC核!為什麽說他跟Android的做法十分相似呢?看看它的架構就知道了,codesys 通常被部署在Linux系統上面,開機即運行,然後我們的梯形圖程序被codesys編譯工具轉成梯形圖指令保存到內存中,然後codesys內核逐句解析梯形圖指令,邊解析邊執行,而不是像傳統的編譯型的PLC一樣先把所有程序編譯成機器碼再燒寫到flash中,運行的時候再搬到內存裏面運行,這跟JVM執行字節碼如出一轍,這種PLC可以很方便的實現監控運行,怎麽樣,是不是跟Android的做法很相似呢?

技術分享圖片

淺談 unix, linux, ios, android 區別和聯系