中文字幕亚洲第一精品|精品国产免费一区二区|久久婷婷五月六月综合版|中文字幕熟妇久久久人妻|久久综合精品国产一区无码|国产成人精品永久免费视频|午夜亚洲国产精品理论片a级|久久精品一区二区三区无码护土

 訪問手機(jī)版  

Linux常用命令|Linux培訓(xùn)學(xué)習(xí)|考試認(rèn)證|工資待遇與招聘,認(rèn)準(zhǔn)超級網(wǎng)工!

招聘|合作 登陸|注冊

網(wǎng)絡(luò)工程師培訓(xùn)

當(dāng)前位置:網(wǎng)絡(luò)工程師 > 技術(shù)課程 > linux > 熱點(diǎn)關(guān)注 > linux常用命令

【linux命令 退出登入】

時(shí)間:2019-09-21

linux命令_linux命令手冊_linux vi命令

理解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)》 的學(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é)。

3.內(nèi)核是一個資源管理程序。負(fù)責(zé)將可用的共享資源(CPU時(shí)間、磁盤空間、網(wǎng)絡(luò)連接等)分配得到各個系統(tǒng)進(jìn)程。

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)核通信。

linux命令手冊_linux vi命令_linux命令

2.宏內(nèi)核。內(nèi)核的所有代碼linux命令,包括子系統(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

linux命令_linux命令手冊_linux vi命令

特點(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í)體地址。

物理地址:切切實(shí)實(shí)存在的地址。在存儲器里以字節(jié)為單位存儲信息,為正確地存放或取得信息,每一個字節(jié)單元給以一個唯一的存儲器地址,稱為物理地址。

映射關(guān)系:

用頁表為物理地址分配虛擬地址

注意:未必虛擬地址的所有頁都映射到某個頁幀。

原因:

1.頁沒有內(nèi)存可以使用

2.數(shù)據(jù)尚不需要使用而沒有載入內(nèi)存。

3.頁已經(jīng)換出硬盤,需要時(shí)再換回內(nèi)存。

頁幀:物理內(nèi)存頁

頁:專指虛擬地址空間中的頁。

頁表:將虛擬地址空間映射到物理地址空間的數(shù)據(jù)結(jié)構(gòu)。

多級分頁:建立虛擬地址到物理地址映射的一種方法,能有效減少內(nèi)存用量。

CPU加速內(nèi)存的訪問過程,方法:

linux vi命令_linux命令_linux命令手冊

1.MMU(Memory Management Unit)內(nèi)存管理單元

2.TLB(Translation Lookaside Buffer)地址轉(zhuǎn)換后備緩沖器

IA-32位結(jié)構(gòu)的CPU只需要使用二級頁表,Linux內(nèi)核總是使用四級頁表,剩余部分由內(nèi)核通過控頁表對缺少的頁表進(jìn)行仿真。

概念注意:

1.CPU的字長決定了所能管理的地址空間的最大長度。對于32位系統(tǒng)是2^32 B = 4GiB

2.虛擬地址空間:地址空間的最大長度與實(shí)際可用的物理內(nèi)存的數(shù)量無關(guān)。

虛擬地址空間劃分為兩個部分:

內(nèi)核空間

用戶空間

如圖2所示:

圖2%20虛擬內(nèi)存的劃分

有個等價(jià)名稱值得一提:

用戶層:指應(yīng)用程序本身。指不屬于內(nèi)核的東西。

用戶空間:不僅可以表示應(yīng)用程序,還指代應(yīng)用程序所運(yùn)行的虛擬地址空間的一部分。與內(nèi)核空間相對。

注意:每一個進(jìn)程都有上述獨(dú)立的虛擬地址空間。對于圖2所示,每個進(jìn)程有4GiB的內(nèi)存空間。

Linux有兩種狀態(tài),兩種狀態(tài)代表兩種特權(quán)級別:

核心態(tài):在虛擬地址的內(nèi)核空間運(yùn)行的狀態(tài)。

用戶狀態(tài):在虛擬地址的用戶空間運(yùn)行的狀態(tài)。

注意:在用戶狀態(tài)禁止訪問內(nèi)核空間

這兩種狀態(tài)的差別在于:對高于TASK_SIZE的內(nèi)存區(qū)域的訪問。

定義:從用戶狀態(tài)到核心態(tài)的切換通過系統(tǒng)調(diào)用的特定手段完成。

方法:

1.內(nèi)核代表用戶程序執(zhí)行代碼

2.異步硬件中斷激活,然后在中斷上下文中進(jìn)行。注意:在中斷上下文運(yùn)行時(shí),內(nèi)核不能進(jìn)入睡眠狀態(tài)。

注意:

內(nèi)核空間中的代碼可以對硬件執(zhí)行一些底層操作并訪問所有的虛擬和物理內(nèi)存,而用戶空間中的代碼則由于cpu的安全邊界控制,無法訪問所有內(nèi)存。平時(shí)我們調(diào)用recv函數(shù)會將網(wǎng)絡(luò)i/o數(shù)據(jù)拷貝到定義的用戶緩沖區(qū)內(nèi)linux命令,這樣就會在內(nèi)核空間和用戶空間之間進(jìn)行數(shù)據(jù)拷貝,這樣就會導(dǎo)致進(jìn)程再內(nèi)核態(tài)和用戶態(tài)之間進(jìn)行頻繁轉(zhuǎn)換,降低效率。假設(shè)用戶代碼調(diào)用write()這個系統(tǒng)調(diào)用,此時(shí)控制流轉(zhuǎn)到了內(nèi)核空間即cpu開始執(zhí)行內(nèi)核空間的代碼,同時(shí)cpu運(yùn)行狀態(tài)也進(jìn)入了內(nèi)核態(tài)。