- 內(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)用程序要運(yùn)行更高權(quán)限運(yùn)行的服務(wù),那么就需要有系統(tǒng)調(diào)用,它是用戶程序與操作系統(tǒng)之間的接口。

- linux 設(shè)計(jì)
Linux 內(nèi)核設(shè)計(jì)的理念主要有這幾個點(diǎn):
MutiTask,多任務(wù)
SMP,對稱多處理
ELF,可執(zhí)行文件鏈接格式
Monolithic Kernel,宏內(nèi)核
- windows設(shè)計(jì)
-
當(dāng)今 Windows 7、Windows 10 使用的內(nèi)核叫 Windows NT,NT 全稱叫 New Technology。
-
Windows 和 Linux 一樣,同樣支持 MutiTask 和 SMP,但不同的是,Windows 的內(nèi)核設(shè)計(jì)是混合型內(nèi)核,在上圖你可以看到內(nèi)核中有一個 MicroKernel 模塊,這個就是最小版本的內(nèi)核,而整個內(nèi)核實(shí)現(xiàn)是一個完整的程序,含有非常多模塊。
Windows 的可執(zhí)行文件的格式與 Linux 也不同,所以這兩個系統(tǒng)的可執(zhí)行文件是不可以在對方上運(yùn)行的。
Windows 的可執(zhí)行文件格式叫 PE,稱為可移植執(zhí)行文件,擴(kuò)展名通常是.exe、.dll、.sys等。
PE 的結(jié)構(gòu)你可以從下圖中看到,它與 ELF 結(jié)構(gòu)有一點(diǎn)相似。
- 比較
- 對于內(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è)計(jì)是采用了宏內(nèi)核,Windows 的內(nèi)核設(shè)計(jì)則是采用了混合內(nèi)核。 - 這兩個操作系統(tǒng)的可執(zhí)行文件格式也不一樣, Linux 可執(zhí)行文件格式叫作 ELF,Windows 可執(zhí)行文件格式叫作 PE。
- 對于內(nèi)核的架構(gòu)一般有這三種類型:
