A. linux 內核和 Windows 內核有什麼區別
目錄
一、什麼是內核?
1.1 內核的能力
二、操作系統分層
三、內核是如何工作的?
四、Linux 的設計
4.1 Multitask and SMP(Symmetric multiprocessing)
4.2 ELF(Executable and Linkable Format)
4.3 Monolithic Kernel
4.4 在內核層和在用戶層有什麼區別?
五、Window 設計
六、總結
說到操作系統,就必須說內核。內核是操作系統中應用連接硬體設備的橋梁。
對於一個現代的操作系統來說,它的內核至少應該提供以下 4 種基本能力:
從上面 4 種能力來看操作系統和內核之間的關系,通常可以把操作系統分成 3 層,最底層的 硬體設備抽象 、中間的 內核 和最上層的 應用 。
內核許可權非常高,它可以管理進程、可以 直接訪問所有的內存 ,因此確實需要和進程之間有一定的隔離。這個隔離用 類似請求/響應 的模型,非常符合常理。
但不同的是在瀏覽器、服務端模型中,瀏覽器和服務端是用 不同的機器在執行 ,因此不需要共享一個 CPU。但是在進程調用內核的過程中,這里是存在資源共享的。
比如,一個機器有 4 個 CPU,不可能讓內核用一個 CPU,其他進程用剩下的 CPU。這樣太浪費資源了。
再比如,進程向內核請求 100M 的內存,內核把 100M 的數據傳回去。 這個模型不可行,因為傳輸太慢了。
所以,這里多數操作系統的設計都遵循一個原則: 進程向內核發起一個請求,然後將 CPU 執行許可權讓出給內核。內核接手 CPU 執行許可權,然後完成請求,再轉讓出 CPU 執行許可權給調用進程。
Linux 操作系統第一版是1991 年林納斯托·瓦茲(一個芬蘭的小夥子,當時 22 歲)用 C 語音寫的。 寫完之後他在網路上發布了 Linux 內核的源代碼。又經過了 3 年的努力,在 1994 年發布了完整的核心 Version 1.0。
MultiTask 指多任務,Linux 是一個多任務的操作系統。多任務就是多個任務可以同時執行,這里的「同時」並不是要求並發,而是在一段時間內可以執行多個任務。當然 Linux 支持並發。
SMP 指對稱多處理。其實是說 Linux 下每個處理器的地位是相等的,內存對多個處理器來說是共享的,每個處理器都可以訪問完整的內存和硬體資源。 這個特點決定了在 Linux 上不會存在一個特定的處理器處理用戶程序或者內核程序,它們可以被分配到任何一個處理器上執行。
這個名詞翻譯過來叫作 可執行文件鏈接格式 。這是一種從 Unix 繼承而來的可執行文件的存儲格式。我們可以看到 ELF 中把文件分成了一個個分段(Segment),每個段都有自己的作用。
這個名詞翻譯過來就是宏內核,宏內核反義詞就是 Microkernel ,微內核的意思。Linux 是宏內核架構,這說明 Linux 的內核是一個完整的可執行程序,且內核用最高許可權來運行。宏內核的特點就是有很多程序會打包在內核中,比如,文件系統、驅動、內存管理等。當然這並不是說,每次安裝驅動都需要重新編譯內核,現在 Linux 也可以動態載入內核模塊。所以哪些模塊在內核層,哪些模塊在用戶層,這是一種系統層的拆分,並不是很強的物理隔離。
與宏內核對應,接下來說說微內核,內核只保留最基本的能力。比如 進程調度、虛擬內存、中斷。多數應用,甚至包括驅動程序、文件系統,是在用戶空間管理 的。
感覺分層其實差不多。 我這里說一個很大的區別,比如說驅動程序是需要頻繁調用底層能力的,如果在內核中,性能肯定會好很多。對於微內核設計,驅動在內核外,驅動和硬體設備交互就需要頻繁做內核態的切換。
當然微內核也有它的好處,比如說微內核體積更小、可移植性更強。不過我認為,隨著計算能力、存儲技術越來越發達, 體積小、安裝快 已經不能算是一個很大的優勢了。現在更重要的是如何有效利用硬體設備的性能。
之所以這么思考,也可能因為我是帶著現代的目光回望當時人們對內核的評判,事實上,當時 Linux 團隊也因此爭論過很長一段時間。 但是我覺得 歷史 往往是螺旋上升的,說不定將來性能發展到了一個新的階段,像微內核的靈活性、可以提供強大的抽象能力這樣的特點,又重新受到人們的重視。
還有一種就是 混合類型內核 。 混合類型的特點就是架構像微內核,內核中會有一個最小版本的內核,其他功能會在這個能力上搭建。但是實現的時候,是用宏內核的方式實現的,就是內核被做成了一個完整的程序,大部分功能都包含在內核中。就是在宏內核之內有抽象出了一個微內核。
Windows 和 Linux 的設計有很大程度的相似性。Windows也有內核,它的內核是 C/C++ 寫的。准確地說,Windows 有兩個內核版本。一個是早期的Windows 9x 內核,早期的 Win95, Win98 都是這個內核。我們今天用的 Windows 7, Windows 10 是另一個內核,叫作 Windows NT。NT 指的是 New Technology。接下來我們討論的都是 NT 版本的內核。
下面我找到一張 Windows 內核架構的圖片給你一個直觀感受。
Windows 同樣支持 Multitask 和 SMP(對稱多處理)。Windows 的內核設計屬於混合類型。你可以看到內核中有一個 Microkernel 模塊。而整個內核實現又像宏內核一樣,含有的能力非常多,是一個完整的整體。
Windows 下也有自己的可執行文件格式,這個格式叫作 Portable Executable(PE),也就是可移植執行文件,擴展名通常是.exe、.dll、.sys等。
PE 文件的結構和 ELF 結構有很多相通的地方,我找到了一張圖片幫助你更直觀地理解。
Windows 還有很多獨特的能力,比如 Hyper-V 虛擬化技術.
這一講我們學習了內核的基礎知識,包括內核的作用、整體架構以及 3 種內核類型( 宏內核、微內核和混合類型內核 )。
內核很小(微內核)方便移植,因為體積小、安裝快;內核大(宏內核),方便優化性能,畢竟內核更了解計算機中的資源。
Linux 內核和 Windows 內核有什麼區別?
【解析】 Windows 有兩個內核,最新的是 NT 內核,目前主流的 Windows 產品都是 NT 內核。NT 內核和 Linux 內核非常相似,沒有太大的結構化差異。
從整體設計上來看, Linux 是宏內核 , NT 內核屬於混合型內核 。和微內核不同,宏內核和混合類型內核從實現上來看是一個完整的程序。只不過混合類型內核內部也抽象出了微內核的概念,從內核內部看混合型內核的架構更像微內核。
另外 NT 內核和 Linux 內核還存在著許多其他的差異,比如:
B. Linux系統一般由哪4個部分組成
linux系統由硬體系統、系統核心、用戶環境、應用程序組成。Linux全稱GNU/Linux,是一種回免費使用和自由答傳播的類UNIX操作系統。
其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。
優點
1、Linux由眾多微內核組成,其源代碼完全開源;
2、Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協議,包括TCP/IPv4、TCP/IPv6和鏈路層拓撲程序等,且可以利用Unix的網路特性開發出新的協議棧。
3、Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性;
C. Linux內核版本中的longterm和stable是什麼意思,請不要直接翻譯成中文,求解釋。
longterm support
提供長期支持的內核版本
stable
穩定版本,而不是Beta測試版
關系就是:穩定版本不一定都提供長期支持,而提供長期支持的一定是穩定版本。