《linux內核設計與實現》第一章

第一章Linux內核簡介linux

 1、unix編程

  一、Unix的歷史服務器

  Unix是現存操做系統中最強大和最優秀的系統。網絡

  ——1969年由Ken Thompson和Dernis Ritchie的靈感點亮的產物。多線程

  ——1973年整個Unix操做系統用C語言進行重寫,給後來unix普遍移植鋪平道路。架構

  ——1977年伯克利推出第一個Unix演化版1BSD系統。異步

  ——1979年伯克利真正獨立開發的Unix系統3BSD。模塊化

  二、Unix的特色函數

  簡潔:僅提供幾百個系統調用並有一個很是明確的設計目的。工具

  抽象:在Unix中全部東西都被當作文件對待,這種抽象使對數據和對設備的操做是經過一套相同的系統調用接口來進行的:open()、read()、write()、lseek()、close()。

  可移植:用C語言編寫內核和相關的系統工具軟件,使其在各類硬件體系架構面前都具有使人驚異的移植能力,使開發人員易接受。

  進程建立迅速 : 有獨特的fork()系統調用。

  一次執行保質保量地完成一個任務:簡單的進程間通訊元語把單一目的的程序方便地組合在一塊兒,這種策略和機制分離的理念確保了Unix系統具有清晰的層次化結構。

 

  現在,Unix已經發展成一個支持搶佔式多任務、多線程、虛擬內存、換頁、動態連接和TCP/IP網絡的現代化操做系統。

2、linux簡介(linux=linux內核)

  1.linux歷史

  1991年,linux誕生。

  Linux是類Unix系統,借鑑了Unix的許多設計而且實現了Unix的API。可是Linux沒有直接使用Unix的源代碼,但它沒有拋棄Unix的設計目標而且保證了應用程序編程接口的一致。

  Linux是一個非商業化的產品,是一個互聯網上的協做開發項目,linux內核是自由(公開)軟件,但並非無限自由,受條款限制。

  Linux用途普遍,包含的東西也名目繁多。linux系統的基礎是內核、C庫、工具集和系統的基本工具。

3、操做系統和內核簡介

  操做系統:是指整個系統中負責完成最基本功能和系統管理的部分。

       包括內核、設備驅動程序、啓動引導程序、命令行Shell或者其餘種類的用戶界面、基本的文件管理工具和系統工具。

  系統:包含了操做系統和全部運行在他之上的應用程序。

  內核:是操做系統的核心。一般被稱做:管理者或操做系統核心。

     一般一個內核由負責響應中斷的中斷服務程序、負責管理多個進程從而分享處理器時間的調度程序、負責管理進程地址空間的內存管理程序和網絡、進程之間通訊等系統服務程序共同組成。

  系統態:擁有受保護的內存空間和訪問硬件設備的全部權限。

  內核空間:這種系統態和被保護起來的內存空間。

  用戶態:應用程序在用戶空間執行,系統以用戶態進入用戶空間執行,只能看到容許它們使用的部分系統資源,並只使用某些特定的系統功能,不能直接訪問系統硬件,也不能訪問其餘的內核劃給別人的內存範圍。

 

  系統中運行的應用程序經過系統調用來與內核通訊。應用程序常常調用庫函數,再由庫函數再由系統調用界面,讓內核代其完成各類不一樣的任務。

  應用程序經過系統調用界面陷入內核,是應用程序完成工做的基本行爲方式。

 

  中斷機制:當硬件設備想和系統通訊的時候,首先發出一個異步的中斷信號打斷處理器的執行,繼而打斷內核的執行。中斷一般對應一箇中斷號,內核經過中斷號查找相應的中斷服務程序,並調用這個程序響應和處理中斷。

每一個處理器在任何指定時間點上的活動必然是如下三者之一:

  運行於用戶空間,執行用戶進程

  運行於內核空間,處於進程上下文,表明某個特定的進程執行

  運行於內核空間,處於中斷上下文,與任何進程無關,處理某個特定的中斷。

4、Linux內核和傳統Unix內核的比較

  一、Unix內核特色

    是一個不可分割的靜態可執行庫。以巨大、單獨的可執行塊的形式在一個單獨的地址空間中運行。Unix內核一般須要硬件系統MMU(頁機制)以管理內存。這種頁機制能夠增強對內存空間的保護,並保證每一個進程均可以運行

    於不一樣的虛地址空間上。

  二、單內核與微內核設計之比較

    操做系統分爲單內核、微內核(外內核主要用於科研系統)。

    單內核:把它從總體上做爲一個單獨的大過程來實現。

    微內核:功能被劃分爲多個獨立過程每一個過程叫作一個服務器。

    Linux是一個單內核,即內核運行在單獨的內核地址空間上。並且Linux吸收了微內核的精華:模塊化設計、搶佔式內核、支持內核線程以及動態裝載內核模塊的能力,避免了微內核設計上的性能損失的缺陷。

    至今Linux是模塊化的、多線程的以及內核自己可調度的操做系統。

    Linux內核和傳統Unix內核的差別:

  • Linux支持動態加載內核模塊
  • Linux支持對稱多處理(SMP)
  • Linux內核能夠搶佔
  • Linux不區分線程和進程
  • Linux提供具備設備類的面向對象的設備模型、熱插拔事件,以及用戶空間的設備文件系統

5、Linux內核版本

Linux內核有兩種:穩定的和處於開發中的。穩定的內核具備工業級的強度,能夠普遍應用和部署。

Linux命名機制(可用於區分穩定的和處於開發中的內核):

第一個數字是主版本號,第二個是從版本號,第三是修訂版本號,最後是穩定版本號。

若是穩定版本號是偶數,則內核是穩定版;若是是奇數,內核就是開發版。

 

6、總結

  第一次接觸linux有不少不懂,不過不能由於困難就不學習,從基礎作起,跟着視頻結合課本,爭取每一天都取得一點進步。

相關文章
相關標籤/搜索