《linux内核设计与实现》第一章
第一章Linux內核簡介
?一、unix
1、Unix的歷史
Unix是現存操作系統中最強大和最優秀的系統。
——1969年由Ken Thompson和Dernis Ritchie的靈感點亮的產物。
——1973年整個Unix操作系統用C語言進行重寫,給后來unix廣泛移植鋪平道路。
——1977年伯克利推出第一個Unix演化版1BSD系統。
——1979年伯克利真正獨立開發的Unix系統3BSD。
2、Unix的特點
簡潔:僅提供幾百個系統調用并有一個非常明確的設計目的。
抽象:在Unix中所有東西都被當做文件對待,這種抽象使對數據和對設備的操作是通過一套相同的系統調用接口來進行的:open()、read()、write()、lseek()、close()。
可移植:用C語言編寫內核和相關的系統工具軟件,使其在各種硬件體系架構面前都具備令人驚異的移植能力,使開發人員易接受。
進程創建迅速 : 有獨特的fork()系統調用。
一次執行保質保量地完成一個任務:簡單的進程間通信元語把單一目的的程序方便地組合在一起,這種策略和機制分離的理念確保了Unix系統具備清晰的層次化結構。
?
如今,Unix已經發展成一個支持搶占式多任務、多線程、虛擬內存、換頁、動態鏈接和TCP/IP網絡的現代化操作系統。
二、linux簡介(linux=linux內核)
1.linux歷史
1991年,linux誕生。
Linux是類Unix系統,借鑒了Unix的許多設計并且實現了Unix的API。但是Linux沒有直接使用Unix的源代碼,但它沒有拋棄Unix的設計目標并且保證了應用程序編程接口的一致。
Linux是一個非商業化的產品,是一個互聯網上的協作開發項目,linux內核是自由(公開)軟件,但并不是無限自由,受條款限制。
Linux用途廣泛,包含的東西也名目繁多。linux系統的基礎是內核、C庫、工具集和系統的基本工具。
三、操作系統和內核簡介
操作系統:是指整個系統中負責完成最基本功能和系統管理的部分。
包括內核、設備驅動程序、啟動引導程序、命令行Shell或者其他種類的用戶界面、基本的文件管理工具和系統工具。
系統:包含了操作系統和所有運行在他之上的應用程序。
內核:是操作系統的核心。通常被稱作:管理者或操作系統核心。
通常一個內核由負責響應中斷的中斷服務程序、負責管理多個進程從而分享處理器時間的調度程序、負責管理進程地址空間的內存管理程序和網絡、進程之間通信等系統服務程序共同組成。
系統態:擁有受保護的內存空間和訪問硬件設備的所有權限。
內核空間:這種系統態和被保護起來的內存空間。
用戶態:應用程序在用戶空間執行,系統以用戶態進入用戶空間執行,只能看到允許它們使用的部分系統資源,并只使用某些特定的系統功能,不能直接訪問系統硬件,也不能訪問其他的內核劃給別人的內存范圍。
?
系統中運行的應用程序通過系統調用來與內核通信。應用程序經常調用庫函數,再由庫函數再由系統調用界面,讓內核代其完成各種不同的任務。
應用程序通過系統調用界面陷入內核,是應用程序完成工作的基本行為方式。
?
中斷機制:當硬件設備想和系統通信的時候,首先發出一個異步的中斷信號打斷處理器的執行,繼而打斷內核的執行。中斷通常對應一個中斷號,內核通過中斷號查找相應的中斷服務程序,并調用這個程序響應和處理中斷。
每個處理器在任何指定時間點上的活動必然是以下三者之一:
運行于用戶空間,執行用戶進程
運行于內核空間,處于進程上下文,代表某個特定的進程執行
運行于內核空間,處于中斷上下文,與任何進程無關,處理某個特定的中斷。
四、Linux內核和傳統Unix內核的比較
1、Unix內核特點
是一個不可分割的靜態可執行庫。以巨大、單獨的可執行塊的形式在一個單獨的地址空間中運行。Unix內核通常需要硬件系統MMU(頁機制)以管理內存。這種頁機制可以加強對內存空間的保護,并保證每個進程都可以運行
于不同的虛地址空間上。
2、單內核與微內核設計之比較
操作系統分為單內核、微內核(外內核主要用于科研系統)。
單內核:把它從整體上作為一個單獨的大過程來實現。
微內核:功能被劃分為多個獨立過程每個過程叫做一個服務器。
Linux是一個單內核,即內核運行在單獨的內核地址空間上。而且Linux吸取了微內核的精華:模塊化設計、搶占式內核、支持內核線程以及動態裝載內核模塊的能力,避免了微內核設計上的性能損失的缺陷。
至今Linux是模塊化的、多線程的以及內核本身可調度的操作系統。
Linux內核和傳統Unix內核的差異:
- Linux支持動態加載內核模塊
- Linux支持對稱多處理(SMP)
- Linux內核可以搶占
- Linux不區分線程和進程
- Linux提供具有設備類的面向對象的設備模型、熱插拔事件,以及用戶空間的設備文件系統
五、Linux內核版本
Linux內核有兩種:穩定的和處于開發中的。穩定的內核具有工業級的強度,可以廣泛應用和部署。
Linux命名機制(可用于區分穩定的和處于開發中的內核):
第一個數字是主版本號,第二個是從版本號,第三是修訂版本號,最后是穩定版本號。
如果穩定版本號是偶數,則內核是穩定版;如果是奇數,內核就是開發版。
?
六、總結
第一次接觸linux有很多不懂,不過不能因為困難就不學習,從基礎做起,跟著視頻結合課本,爭取每一天都取得一點進步。
轉載于:https://www.cnblogs.com/20135132yoggie/p/5277550.html
總結
以上是生活随笔為你收集整理的《linux内核设计与实现》第一章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: object-c 随机数总结
- 下一篇: const在c中的用法