一直對linux內(nèi)核很感興趣,早就想深入的學(xué)習(xí)下,由于自己目前的水平還比較菜,所以在blog中記錄下學(xué)習(xí)中的心得和體會,一則自己做一個記錄,同時也可以督促自己的學(xué)習(xí)進度;二來可以拋磚引玉,希望和我一樣對內(nèi)核有興趣的朋友們多多指點,共同進步。
主要是一些概述性的內(nèi)容,主要包括:
1、Unix和Linux發(fā)展的背景和歷史,這部分沒有什么可說的,作為常識了解吧。
2、操作系統(tǒng)和內(nèi)核概述
(1)內(nèi)核主要組件
內(nèi)核有事也被稱為是supervisor或者core之類,典型的內(nèi)核組件通常包括
(2)MMU和地址空間
對于帶有受保護內(nèi)存管理單元(Protected MMU)的操作系統(tǒng)來說,kernel通常是處在比一般用戶程序更高級的狀態(tài),kernel具有受保護的內(nèi)存空間和對硬件的直接訪問,這種更高層的狀態(tài)和受保護的內(nèi)存空間一起,稱為內(nèi)核空間(Kernel Space);應(yīng)用程序則運行在用戶空間(User space),只能看到系統(tǒng)可用資源的一個子集并無法執(zhí)行某些系統(tǒng)功能。
在運行內(nèi)核時,系統(tǒng)在內(nèi)核空間以內(nèi)核模式運行,當(dāng)運行用戶應(yīng)用程序時,系統(tǒng)在用戶空間以User Mode運行。
下圖為Linux系統(tǒng)體系結(jié)構(gòu)的示意(引自 參考資料1)
(3)中斷
幾乎所有的體系結(jié)構(gòu),都提供了中斷的概念,當(dāng)硬件需要和系統(tǒng)通信時,它會發(fā)起一個中斷從而以異步方式中斷內(nèi)核。
中斷是以數(shù)字標示的,內(nèi)核根據(jù)中斷號來執(zhí)行指定的中斷處理器(interrupt handler)來處理和響應(yīng)中斷。
目前下面的這句話沒有理解,等讀到后續(xù)章節(jié)再回過頭看吧
To provide synchronization, the kernel can usually disable interrupts either all interrupts or just one specific interrupt number.
在很多操作系統(tǒng)中,包括Linux,中斷處理器并不在進程上下文中運行。相反,他們運行在一個特殊的中斷上下文環(huán)境中,這個context并不與任何進程存在關(guān)聯(lián)。這個特殊的上下文環(huán)境僅僅是為了中斷處理器更快的響應(yīng)中斷,然后退出。
上下文環(huán)境表述了內(nèi)核的活動范圍,我們可以概括的說,在任何一個時刻,內(nèi)核在做下面三件事其中之一:
在內(nèi)核空間,進程上下文中,為進程執(zhí)行
在內(nèi)核空間,中斷上下文中,不與任何進程關(guān)聯(lián),處理中斷
在用戶空間,在進程中執(zhí)行用戶代碼
參考資料:
1、Linux Kernel Development (2nd Edition) 英文影印版 Robert Love 機械工業(yè)出版社
2、Anatomy of the Linux kernel
From http://www.ibm.com/developerworks/linux/library/l-linux-kernel/
[ 第一章 ] Introduction to the Linux Kernel
主要是一些概述性的內(nèi)容,主要包括:
1、Unix和Linux發(fā)展的背景和歷史,這部分沒有什么可說的,作為常識了解吧。
2、操作系統(tǒng)和內(nèi)核概述
(1)內(nèi)核主要組件
內(nèi)核有事也被稱為是supervisor或者core之類,典型的內(nèi)核組件通常包括
用于中斷服務(wù)請求的interrupt handlers |
用于為多進程分配處理其時間的調(diào)度器scheduler |
用于管理進程地址空間的memory management system |
以及提供進程間通信等的系統(tǒng)服務(wù) |
(2)MMU和地址空間
對于帶有受保護內(nèi)存管理單元(Protected MMU)的操作系統(tǒng)來說,kernel通常是處在比一般用戶程序更高級的狀態(tài),kernel具有受保護的內(nèi)存空間和對硬件的直接訪問,這種更高層的狀態(tài)和受保護的內(nèi)存空間一起,稱為內(nèi)核空間(Kernel Space);應(yīng)用程序則運行在用戶空間(User space),只能看到系統(tǒng)可用資源的一個子集并無法執(zhí)行某些系統(tǒng)功能。
在運行內(nèi)核時,系統(tǒng)在內(nèi)核空間以內(nèi)核模式運行,當(dāng)運行用戶應(yīng)用程序時,系統(tǒng)在用戶空間以User Mode運行。
下圖為Linux系統(tǒng)體系結(jié)構(gòu)的示意(引自 參考資料1)

(3)中斷
幾乎所有的體系結(jié)構(gòu),都提供了中斷的概念,當(dāng)硬件需要和系統(tǒng)通信時,它會發(fā)起一個中斷從而以異步方式中斷內(nèi)核。
中斷是以數(shù)字標示的,內(nèi)核根據(jù)中斷號來執(zhí)行指定的中斷處理器(interrupt handler)來處理和響應(yīng)中斷。
目前下面的這句話沒有理解,等讀到后續(xù)章節(jié)再回過頭看吧
To provide synchronization, the kernel can usually disable interrupts either all interrupts or just one specific interrupt number.
在很多操作系統(tǒng)中,包括Linux,中斷處理器并不在進程上下文中運行。相反,他們運行在一個特殊的中斷上下文環(huán)境中,這個context并不與任何進程存在關(guān)聯(lián)。這個特殊的上下文環(huán)境僅僅是為了中斷處理器更快的響應(yīng)中斷,然后退出。
上下文環(huán)境表述了內(nèi)核的活動范圍,我們可以概括的說,在任何一個時刻,內(nèi)核在做下面三件事其中之一:
在內(nèi)核空間,進程上下文中,為進程執(zhí)行
在內(nèi)核空間,中斷上下文中,不與任何進程關(guān)聯(lián),處理中斷
在用戶空間,在進程中執(zhí)行用戶代碼
參考資料:
1、Linux Kernel Development (2nd Edition) 英文影印版 Robert Love 機械工業(yè)出版社
2、Anatomy of the Linux kernel
From http://www.ibm.com/developerworks/linux/library/l-linux-kernel/
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
