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

