理解Linux內(nèi)核最好預(yù)備的知識點(diǎn)
Linux內(nèi)核的特點(diǎn)
Linux內(nèi)核的任務(wù)
內(nèi)核的組成部分
哪些地方用到了內(nèi)核機(jī)制?
Linux進(jìn)程
Linux創(chuàng)建新進(jìn)程的機(jī)制
Linux線程
內(nèi)核線程
地址空間與特權(quán)級別
虛擬地址與物理地址
特權(quán)級別(Linux的兩種狀態(tài))
系統(tǒng)調(diào)用
設(shè)備驅(qū)動程序、塊設(shè)備和字符設(shè)備
網(wǎng)絡(luò)
文件系統(tǒng)
模塊和熱插拔
注:本文為《深入Linux內(nèi)核架構(gòu)》%20的學(xué)習(xí)筆記
理解Linux內(nèi)核最好預(yù)備的知識點(diǎn):
Linux內(nèi)核的特點(diǎn):
結(jié)合了unix操作系統(tǒng)的一些基礎(chǔ)概念
Linux內(nèi)核的任務(wù):
1.從技術(shù)層面講,內(nèi)核是硬件與軟件之間的一個中間層。作用是將應(yīng)用層序的請求傳遞給硬件,并充當(dāng)?shù)讓域?qū)動程序,對系統(tǒng)中的各種設(shè)備和組件進(jìn)行尋址。
2.從應(yīng)用程序的層面講,應(yīng)用程序與硬件沒有聯(lián)系,只與內(nèi)核有聯(lián)系,內(nèi)核是應(yīng)用程序知道的層次中的最底層。在實(shí)際工作中內(nèi)核抽象了相關(guān)細(xì)節(jié)。
輕量級進(jìn)程和普通進(jìn)程的區(qū)別在于:前者沒有獨(dú)立的用戶空間(內(nèi)核態(tài)線程無用戶空間,用戶態(tài)線程共享用戶空間)linux命令,而普通進(jìn)程有獨(dú)立的內(nèi)存空間?捎霉蚕泶疟P網(wǎng)格會顯示可用磁盤的列表、每個磁盤是否可用作共享磁盤以及每個磁盤資源的說明。cmd\輸入net%20config%20server%20可以顯示不能配置的下服務(wù)器計(jì)算機(jī)名\服務(wù)器注釋%20\服務(wù)器版本服務(wù)器處于活動狀態(tài)%20\服務(wù)器處于隱藏狀態(tài)最大登錄用戶數(shù)每個會話打開文件的最大數(shù)空閑會話時間chkdsk.exe磁盤檢查.chkdsk%20/r%202000命令控制臺中的chkdsk%20/r命令檢查修復(fù)系統(tǒng)文件cleanmgr%20垃圾整理clipbrd%20剪貼板查看器c:boot.ini打開啟動菜單compact.exe%20顯示或改變ntfs分區(qū)上文件的壓縮狀態(tài)conime.exeime控制臺control.exe控制面板convert.exe%20ntfs%20轉(zhuǎn)換文件系統(tǒng)到ntfsconvlog.exe%20轉(zhuǎn)換Ⅱs日志文件格式到ncsa格式cprofile.exe%20轉(zhuǎn)換顯示模式cscript.exe較本宿主版本csrss.exe客戶服務(wù)器runtime進(jìn)程csvde.exe%20格式轉(zhuǎn)換程序dcpromo活動目錄安裝drwtsn32%20系統(tǒng)醫(yī)生diskmgmt.msc磁盤管理器dxdiag%20檢查directx信息dcomcnfg.exedcom配置屬性dcpromo.exe%20安裝向?qū)deshare.exe%20dde共享debug.exe%20檢查debugdfrgfat.exefat分區(qū)磁盤碎片整理程序dfrgntfs.exentfs分區(qū)磁盤碎片整理程序名稱服務(wù)器的信息。
4.內(nèi)核就像一個庫,提供了一組面向系統(tǒng)的命令。系統(tǒng)調(diào)用對于應(yīng)用程序來說,就像調(diào)用普通函數(shù)一樣。
內(nèi)核實(shí)現(xiàn)策略:
1.微內(nèi)核。最基本的功能由中央內(nèi)核(微內(nèi)核)實(shí)現(xiàn)。所有其他的功能都委托給一些獨(dú)立進(jìn)程,這些進(jìn)程通過明確定義的通信接口與中心內(nèi)核通信。
2.宏內(nèi)核。內(nèi)核的所有代碼,包括子系統(tǒng)(如內(nèi)存管理、文件管理、設(shè)備驅(qū)動程序)都打包到一個文件中。內(nèi)核中的每一個函數(shù)都可以訪問到內(nèi)核中所有其他部分。目前支持模塊的動態(tài)裝卸(裁剪)。Linux內(nèi)核就是基于這個策略實(shí)現(xiàn)的。
內(nèi)核的組成部分:
1.用戶空間(在“地址空間與特權(quán)級別”小節(jié)會詳細(xì)介紹):
應(yīng)用程序:
C庫
2.內(nèi)核空間(在“地址空間與特權(quán)級別”小節(jié)會詳細(xì)介紹):
核心內(nèi)核
設(shè)備驅(qū)動程序
硬件
詳細(xì)可參考圖1
特點(diǎn):
1.不與任何特定的用戶空間進(jìn)程相關(guān)聯(lián)。
2.與中斷上下文運(yùn)轉(zhuǎn)的內(nèi)核相比,內(nèi)核線程可以進(jìn)入睡眠狀態(tài),也可以像系統(tǒng)中的普通進(jìn)程一樣被調(diào)度器跟蹤。
用途:
1.從內(nèi)存和塊設(shè)備之間的數(shù)據(jù)同步。
2.幫助調(diào)度器在CPU上分配進(jìn)程。
如何查看內(nèi)核線程:
命令:ps fax 方括號內(nèi)的就是內(nèi)核線程。
地址空間與特權(quán)級別
在正式介紹之前先介紹幾個單位:
KiB 2^10字節(jié)
MiB 2^20
GiB 2^30
虛擬地址與物理地址:
虛擬地址:在計(jì)算機(jī)的專用術(shù)語中是指標(biāo)識一個虛擬(非物理地址)的實(shí)體地址。
稱存儲字存儲單元:存放一個存儲字的若干個記憶單元組成一個存儲單元存儲體:大量存儲單元的集合組成存儲體存儲單元地址:存儲單元的編號字編址:對存儲單元按字編址字節(jié)編址:對存儲單元按字節(jié)編址尋址:由地址尋找數(shù)據(jù)。在計(jì)算機(jī)的組成結(jié)構(gòu)中,有一個很重要的部分,就是存儲器.存儲器是用來存儲程序和數(shù)據(jù)的部件,對于計(jì)算機(jī)來說,有了存儲器,才有記憶功能,才能保證正常工作.存儲器的種類很多,按其用途可分為主存儲器和輔助存儲器,主存儲器又稱內(nèi)存儲器(簡稱內(nèi)存),輔助存儲器又稱外存儲器(簡稱外存).外存通常是磁性介質(zhì)或光盤,像硬盤,軟盤,磁帶,cd等,能長期保存信息,并且不依賴于電來保存信息,但是由機(jī)械部件帶動,速度與cpu相比就顯得慢的多.內(nèi)存指的就是主板上的存儲部件,是cpu直接與之溝通,并用其存儲數(shù)據(jù)的部件,存放當(dāng)前正在使用的(即執(zhí)行中)的數(shù)據(jù)和程序,它的物理實(shí)質(zhì)就是一組或多組具備數(shù)據(jù)輸入輸出和數(shù)據(jù)存儲功能的集成電路,內(nèi)存只用于暫時存放程序和數(shù)據(jù),一旦關(guān)閉電源或發(fā)生斷電,其中的程序和數(shù)據(jù)就會丟失.。小段:字?jǐn)?shù)據(jù)的高字節(jié)存儲在高地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放 在低地址中。
映射關(guān)系:
用頁表為物理地址分配虛擬地址
注意:未必虛擬地址的所有頁都映射到某個頁幀。
原因:
1.頁沒有內(nèi)存可以使用
2.數(shù)據(jù)尚不需要使用而沒有載入內(nèi)存。
3.頁已經(jīng)換出硬盤,需要時再換回內(nèi)存。
頁幀:物理內(nèi)存頁
頁:專指虛擬地址空間中的頁。
頁表:將虛擬地址空間映射到物理地址空間的數(shù)據(jù)結(jié)構(gòu)。
多級分頁:建立虛擬地址到物理地址映射的一種方法,能有效減少內(nèi)存用量。
CPU加速內(nèi)存的訪問過程,方法:
1.MMU(Memory Management Unit)內(nèi)存管理單元