綜述:當今在移動端領域,linux可謂占有舉足輕重的地位。從linux作業系統的誕生,發展和成長過程依賴著5個重要的支柱:unix作業系統,minix作業系統,gnu計畫,posix標準和internet.。
一 linux作業系統的發展
下面我們簡述的說一下linux作業系統的成長過程。
unix作業系統:它是由美國貝爾實驗室的ken.thompson和dennis ritchie於2023年開發的乙個分時作業系統。linux作業系統可以看作unix作業系統的轉殖版本。
minix作業系統:也是unix的一種轉殖系統,linux剛開始就是參照minix系統於2023年開發的。
gnu計畫:它是"gnu's not unix"的縮寫。gnu專案已經開發出許多高質量的免費軟體,其中包括emacs編輯系統,bash shell程式,gcc系列編譯程式,gdb除錯程式。這些軟體為linux作業系統開發創造了乙個合適的環境,是linux誕生的基礎之一。沒有gnu軟體環境,linux將寸步難行。因此嚴格的說,"linux"應該稱為"gnu/linux"系統。
posix標準(可移植的作業系統介面):是由ieee和iso/iec開發的一組標準,用於保證編寫的應用程式可以在源**級上在多種作業系統中移植。
互連網:linux的強大,有很多原因是它擁有完備的網路系統,如果沒有網際網路,沒有遍布在全世界計算機駭客的無私奉獻,那麼linux最多停留在linux 0.13的水平。
andriod採用linux核心,但是在核心裡加入了一系列的補丁,比如binder ,ashmem,wakelock等。目前這些補丁中大多數已經進入linux產品線。
二 linux核心的組成部分
inux核心的組成有五部分: 分別是 程序排程,記憶體管理,虛擬檔案系統,網路檔案系統,程序間通訊。
程序排程:使多個程序對cpu的訪問,使得多個程序能在cpu中「微觀序列,巨集觀並行」的執行。
記憶體管理:主要的作用是控制多個程序安全地共享主記憶體區域。mmu完成從虛擬記憶體到物理記憶體的轉換。
虛擬檔案系統:隱藏了各種硬體的具體細節,為有裝置提供了統一的程式設計介面。它為上層應用提供了統一的介面函式,如read(),write()等,並呼叫具體底層檔案系統或者裝置驅動中實現的file_operations結構體的成員函式。
網路介面:提供對各種網路標準的訪問和各種網路硬體的支援。
程序間通訊:linux支援多種通訊機制,包含訊號量,共享記憶體,訊息佇列,管道,unix域套接字等。這些機制可協助多個程序,多資源的互斥訪問,程序間的同步和訊息傳遞。
三 核心的編譯
在編譯核心之前需要配置核心,執行 make menuconfig配置核心,並生成乙個.config配置檔案,linux核心由三部分組成:makefile(分布在核心原始碼中,定義編譯的規則),配置檔案(kconfig 給使用者提供編譯選項的功能),配置工具(提供字型,圖形介面等。)
在linux核心中增加程式需要完成以下三項工作:將編寫的源**複製到linux源**相應的目錄中,在目錄中的kconfig檔案中增加關於新源**對應專案的編譯配置選項。在目錄的makefile檔案中增加對新**的編譯條目。
liunx網路程式設計(1)
1.簡述tcp ip協議 tcp ip 是網路中使用的基本通訊協議,tcp ip 實際上是一組協議,它包括上百個能完成各種功能的協議,而 tcp協議和 ip協議是保證資料完整傳輸的的兩個基本重要協議。通常說 tcp ip 是internet 協議簇,而不只是 tcp 和ip 協議。2.點分十進位制表...
Windows核心程式設計
內容簡介 這是一本經典的windows核心程式設計指南,從第1版到第5版,引領著數十萬程式設計師走入windows開發陣營,培養了大批精英。作為windows開發人員的必備參考,本書是為打算理解windows的c和c 程式設計師精心設計的。第5版全面覆蓋windows xp,windows vist...
程式設計的核心
你無法斷定程式會在什麼地方耗費執行時間。瓶頸經常出現在想不到的地方,所以別急於胡亂找個地方改 除非你已經證實那兒就是瓶頸所在。估量。在你沒對 進行估量,特別是沒找到最耗時的那部分之前,別去優化速度。花哨的演算法在 n 很小時通常很慢,而 n 通常很小。花哨演算法的常數複雜度很大。除非你確定 n 總是...