- 內(nèi)核
- 管理進(jìn)程烙肺、線程纳猪,決定哪個進(jìn)程、線程使用 CPU桃笙,也就是進(jìn)程調(diào)度的能力氏堤;
- 管理內(nèi)存,決定內(nèi)存的分配和回收搏明,也就是內(nèi)存管理的能力鼠锈;
- 管理硬件設(shè)備,為進(jìn)程與硬件設(shè)備之間提供通信能力星著,也就是硬件通信能力购笆;
- 提供系統(tǒng)調(diào)用,如果應(yīng)用程序要運行更高權(quán)限運行的服務(wù)虚循,那么就需要有系統(tǒng)調(diào)用同欠,它是用戶程序與操作系統(tǒng)之間的接口。
- linux 設(shè)計
Linux 內(nèi)核設(shè)計的理念主要有這幾個點:
MutiTask横缔,多任務(wù)
SMP铺遂,對稱多處理
ELF,可執(zhí)行文件鏈接格式
Monolithic Kernel剪廉,宏內(nèi)核
- windows設(shè)計
-
當(dāng)今 Windows 7、Windows 10 使用的內(nèi)核叫 Windows NT炕檩,NT 全稱叫 New Technology斗蒋。
-
Windows 和 Linux 一樣,同樣支持 MutiTask 和 SMP笛质,但不同的是泉沾,Windows 的內(nèi)核設(shè)計是混合型內(nèi)核,在上圖你可以看到內(nèi)核中有一個 MicroKernel 模塊妇押,這個就是最小版本的內(nèi)核跷究,而整個內(nèi)核實現(xiàn)是一個完整的程序,含有非常多模塊敲霍。
Windows 的可執(zhí)行文件的格式與 Linux 也不同俊马,所以這兩個系統(tǒng)的可執(zhí)行文件是不可以在對方上運行的丁存。
Windows 的可執(zhí)行文件格式叫 PE,稱為可移植執(zhí)行文件柴我,擴展名通常是.exe解寝、.dll、.sys等艘儒。
PE 的結(jié)構(gòu)你可以從下圖中看到聋伦,它與 ELF 結(jié)構(gòu)有一點相似。
- 比較
- 對于內(nèi)核的架構(gòu)一般有這三種類型:
宏內(nèi)核界睁,包含多個模塊觉增,整個內(nèi)核像一個完整的程序;
微內(nèi)核翻斟,有一個最小版本的內(nèi)核逾礁,一些模塊和服務(wù)則由用戶態(tài)管理;
混合內(nèi)核杨赤,是宏內(nèi)核和微內(nèi)核的結(jié)合體敞斋,內(nèi)核中抽象出了微內(nèi)核的概念,也就是內(nèi)核中會有一個小型的內(nèi)核疾牲,其他模塊就在這個基礎(chǔ)上搭建植捎,整個內(nèi)核是個完整的程序;
Linux 的內(nèi)核設(shè)計是采用了宏內(nèi)核阳柔,Windows 的內(nèi)核設(shè)計則是采用了混合內(nèi)核焰枢。 - 這兩個操作系統(tǒng)的可執(zhí)行文件格式也不一樣, Linux 可執(zhí)行文件格式叫作 ELF舌剂,Windows 可執(zhí)行文件格式叫作 PE济锄。
- 對于內(nèi)核的架構(gòu)一般有這三種類型: