初識內核

  • 內核是什麼?


    內核是操作系統的內部核心程序,它向外部提供了對計算機設備的核心管理調用

    我們將操作系統的代碼分成2部分。內核所在的地址空間稱作內核空間,而在內核以外的統稱爲外部管理程序,它們大部分是對外圍設備的管理和界面操作。外部管理程序與用戶進程所佔據的地址空間稱爲外部空間。通常,一個程序會跨越兩個空間。當執行到內核空間的一段代碼時,我們稱程序處於內核態,而當程序執行到外部空間代碼時,我們稱程序處於用戶態
 


  • 單一內核、微內核、linux


  • 單一內核

    單一內核(monolithic kernel)是當時操作系統的主流,操作系統中所有的系統相關功能都被封裝在內核中,它們與外部程序處於不同的內存地址空間中,並通過各種方式(在Intel IA-32體系中採用386保護模式)防止外部程序直接訪問內核結構。程序只有通過一套稱作系統調用(system call)的界面訪問內核結構。

  • 微內核

    微內核結構中,操作系統的內核只需要提供最基本、最核心的一部分操作(比如創建和刪除任務、內存管理、中斷管理等)即可,而其他的管理程序(如文件系統、網絡協議棧等)則儘可能的放在內核之外。這些外部程序可以獨立運行,並對外部用戶程序提供操作系統服務,服務之間使用進程間通信機制(IPC)進行交互,只在需要內核的協助時,才通過一套接口對內核發出調用請求。
    微內核系統的優點:操作系統具有良好的靈活性;它使得操作系統內部結構簡單清晰;程序代碼的維護非常之方便

    微內核系統的不足:微內核系統由於核心態只實現了最基本的系統操作,這樣內核以外的外部程序之間由於獨立運行使得系統難以進行良好的整體優化。另外,進程間互相通信的開銷也比單一內核系統要大許多。

    從整體上看,在當前的硬件條件下,微內核在效率上的損失小於其在結構上獲得的收益,故而選取微內核成爲操作系統的一大潮流。

  • linux

    Linux是單一內核體系,但是它與傳統的單一內核UNIX操作系統不同。在普通的單一內核系統中,所有的內核代碼都是被靜態編譯聯入的,而在Linux中,可以動態裝入和卸載內核中的部分代碼。Linux將這些代碼段稱爲模塊。(module),並對模塊給予了強有力的支持。在Linux中,可以在需要時自動裝入和卸載模塊。
    Linux不支持用戶態線程。在用戶態中,Linux認爲線程就是共享上下文(Context)的進程。Linux通過LWP(light weight thread)的機制來實現用戶態線程的概念。通過系統調用clone()創建新的線程。
    Linux的內核爲非搶佔式的。即,Linux不能通過改變優先權來影響內核當前的執行流程。因此,Linux在實現實時操作時就有問題。Linux並不是一個“硬”實時操作系統。
   在Linux內核中,包括了進程管理(process management)、定時器(timer)、中斷管理(interrupt management)、內存管理(memory management)、模塊管理(module management)、虛擬文件系統接口(VFS layer)、文件系統(file system)、設備驅動程序(device driver)、進程間通信(inter-process communication)、網絡管理(network management)、系統啓動(system init)等操作系統功能的實現。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章