国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux 內(nèi)核概念和學(xué)習(xí)詳解

這篇具有很好參考價(jià)值的文章主要介紹了Linux 內(nèi)核概念和學(xué)習(xí)詳解。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言


?

?

1、前言

本文主要講解什么是Linux內(nèi)核,以及通過多張圖片展示Linux內(nèi)核的作用與功能,以便于讀者能快速理解什么是Linux內(nèi)核,能看懂Linux內(nèi)核。

擁有超過1300萬行的代碼,Linux內(nèi)核是世界上最大的開源項(xiàng)目之一,但是內(nèi)核是什么,它用于什么?

Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言

?Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言

?

2、什么是內(nèi)核

內(nèi)核是與計(jì)算機(jī)硬件接口的易替換軟件的最低級別。它負(fù)責(zé)將所有以“用戶模式”運(yùn)行的應(yīng)用程序連接到物理硬件,并允許稱為服務(wù)器的進(jìn)程使用進(jìn)程間通信(IPC)彼此獲取信息。

?

3、內(nèi)核還要分種類?

是的,沒錯(cuò)。

3.1 微內(nèi)核

微內(nèi)核只管理它必須管理的東西:CPU、內(nèi)存和IPC。計(jì)算機(jī)中幾乎所有的東西都可以被看作是一個(gè)附件,并且可以在用戶模式下處理。微內(nèi)核具有可移植性的優(yōu)勢,因?yàn)橹灰僮飨到y(tǒng)仍然試圖以相同的方式訪問硬件,就不必?fù)?dān)心您是否更改了視頻卡,甚至是操作系統(tǒng)。

微內(nèi)核對內(nèi)存和安裝空間的占用也非常小,而且它們往往更安全,因?yàn)橹挥刑囟ǖ倪M(jìn)程在用戶模式下運(yùn)行,而用戶模式不具有管理員模式的高權(quán)限。

Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言

3.1.1 Pros

  • 可移植性

  • 安裝占用空間小

  • 小內(nèi)存占用

  • 安全

3.1.2 Cons

  • 通過驅(qū)動程序,硬件更加抽象

  • 硬件可能反應(yīng)較慢,因?yàn)轵?qū)動程序處于用戶模式

  • 進(jìn)程必須在隊(duì)列中等待才能獲得信息

  • 進(jìn)程不能在不等待的情況下訪問其他進(jìn)程

3.2 單內(nèi)核

單內(nèi)核與微內(nèi)核相反,因?yàn)樗鼈儾粌H包含CPU、內(nèi)存和IPC,而且還包含設(shè)備驅(qū)動程序、文件系統(tǒng)管理和系統(tǒng)服務(wù)器調(diào)用等內(nèi)容。單內(nèi)核更擅長于訪問硬件和多任務(wù)處理,因?yàn)槿绻粋€(gè)程序需要從內(nèi)存或運(yùn)行中的其他進(jìn)程中獲取信息,那么它就有一條更直接的線路來訪問信息,而不需要在隊(duì)列中等待來完成任務(wù)。但是,這可能會導(dǎo)致問題,因?yàn)樵诠芾砟J较逻\(yùn)行的東西越多,如果行為不正常,就會有越多的東西導(dǎo)致系統(tǒng)崩潰。

Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言

3.2.1 Pros

  • 更直接地訪問程序的硬件

  • 流程之間更容易通信

  • 如果支持您的設(shè)備,它應(yīng)該不需要額外安裝就可以工作

  • 進(jìn)程反應(yīng)更快,因?yàn)闆]有等待處理器時(shí)間的隊(duì)列

3.2.2 Cons

  • 較大安裝體積

  • 較大內(nèi)存占用

  • 不太安全,因?yàn)樗胁僮鞫荚诠芾砟J较逻\(yùn)行

?

4、混合的內(nèi)核

混合內(nèi)核能夠選擇在用戶模式下運(yùn)行什么,以及在管理模式下運(yùn)行什么。通常情況下,設(shè)備驅(qū)動程序和文件系統(tǒng)I/O將在用戶模式下運(yùn)行,而IPC和服務(wù)器調(diào)用將保持在管理器模式下。這是兩全其美,但通常需要硬件制造商做更多的工作,因?yàn)樗序?qū)動程序的責(zé)任都由他們來承擔(dān)。它還可能存在一些與微內(nèi)核固有的延遲問題。

Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言

4.1 Pros

  • 開發(fā)人員可以選擇什么在用戶模式下運(yùn)行,什么在管理模式下運(yùn)行

  • 比單片內(nèi)核更小的安裝占用空間

  • 比其他型號更靈活

4.2 Cons

  • 會遭受與微內(nèi)核相同的進(jìn)程延遲

  • 設(shè)備驅(qū)動程序需要由用戶管理(通常)

?

5、Linux內(nèi)核文件在哪里

Ubuntu中的內(nèi)核文件存儲在/boot文件夾中,稱為vmlinux -version。vmlinuz這個(gè)名字來自于unix世界,早在60年代,他們就把內(nèi)核簡單地稱為“unix”,所以當(dāng)內(nèi)核在90年代首次開發(fā)時(shí),Linux就開始把內(nèi)核稱為“Linux”。

Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言

?當(dāng)開發(fā)虛擬內(nèi)存以便更容易地進(jìn)行多任務(wù)處理時(shí),將“vm”放在文件的前面,以顯示內(nèi)核支持虛擬內(nèi)存。有一段時(shí)間,Linux內(nèi)核被稱為vmlinux,但是內(nèi)核變得太大,無法裝入可用的引導(dǎo)內(nèi)存,因此壓縮了內(nèi)核映像,并將末尾的x更改為z,以顯示它是用zlib壓縮的。并不總是使用相同的壓縮,通常用LZMA或BZIP2替換,一些內(nèi)核簡單地稱為zImage。

在/boot文件夾中還有其他非常重要的文件,稱為initrd.img-version、system.map-version, config-version。initrd文件用作一個(gè)小RAM磁盤,用于提取和執(zhí)行實(shí)際的內(nèi)核文件。這個(gè)系統(tǒng)。map文件用于內(nèi)核完全加載之前的內(nèi)存管理,配置文件告訴內(nèi)核在編譯內(nèi)核映像時(shí)要加載哪些選項(xiàng)和模塊。

?

6、Linux內(nèi)核體系結(jié)構(gòu)

因?yàn)長inux內(nèi)核是單片的,所以它比其他類型的內(nèi)核占用空間最大,復(fù)雜度也最高。這是一個(gè)設(shè)計(jì)特性,在Linux早期引起了相當(dāng)多的爭論,并且仍然帶有一些與單內(nèi)核固有的相同的設(shè)計(jì)缺陷。

Linux 內(nèi)核概念和學(xué)習(xí)詳解,linux,學(xué)習(xí),開發(fā)語言

?為了解決這些缺陷,Linux內(nèi)核開發(fā)人員所做的一件事就是使內(nèi)核模塊可以在運(yùn)行時(shí)加載和卸載,這意味著您可以動態(tài)地添加或刪除內(nèi)核的特性。這不僅可以向內(nèi)核添加硬件功能,還可以包括運(yùn)行服務(wù)器進(jìn)程的模塊,比如低級別虛擬化,但也可以替換整個(gè)內(nèi)核,而不需要在某些情況下重啟計(jì)算機(jī)。

想象一下,如果您可以升級到Windows服務(wù)包,而不需要重新啟動……

?

7、內(nèi)核模塊

如果Windows已經(jīng)安裝了所有可用的驅(qū)動程序,而您只需要打開所需的驅(qū)動程序怎么辦?這本質(zhì)上就是內(nèi)核模塊為Linux所做的。內(nèi)核模塊,也稱為可加載內(nèi)核模塊(LKM),對于保持內(nèi)核在不消耗所有可用內(nèi)存的情況下與所有硬件一起工作是必不可少的。

模塊通常向基本內(nèi)核添加設(shè)備、文件系統(tǒng)和系統(tǒng)調(diào)用等功能。lkm的文件擴(kuò)展名是.ko,通常存儲在/lib/modules目錄中。由于模塊的特性,您可以通過在啟動時(shí)使用menuconfig命令將模塊設(shè)置為load或not load,或者通過編輯/boot/config文件,或者使用modprobe命令動態(tài)地加載和卸載模塊,輕松定制內(nèi)核。

第三方和封閉源碼模塊在一些發(fā)行版中是可用的,比如Ubuntu,默認(rèn)情況下可能無法安裝,因?yàn)檫@些模塊的源代碼是不可用的。該軟件的開發(fā)人員(即nVidia、ATI等)不提供源代碼,而是構(gòu)建自己的模塊并編譯所需的.ko文件以便分發(fā)。雖然這些模塊像beer一樣是免費(fèi)的,但它們不像speech那樣是免費(fèi)的,因此不包括在一些發(fā)行版中,因?yàn)榫S護(hù)人員認(rèn)為它通過提供非免費(fèi)軟件“污染”了內(nèi)核。

內(nèi)核并不神奇,但對于任何正常運(yùn)行的計(jì)算機(jī)來說,它都是必不可少的。Linux內(nèi)核不同于OS X和Windows,因?yàn)樗瑑?nèi)核級別的驅(qū)動程序,并使許多東西“開箱即用”。希望您能對軟件和硬件如何協(xié)同工作以及啟動計(jì)算機(jī)所需的文件有更多的了解。

?

8、Linux 內(nèi)核學(xué)習(xí)經(jīng)驗(yàn)總結(jié)

開篇

學(xué)習(xí)內(nèi)核,每個(gè)人都有自己的學(xué)習(xí)方法,仁者見仁智者見智。以下是我在學(xué)習(xí)過程中總結(jié)出來的東西,對自身來說,我認(rèn)為比較有效率,拿出來跟大家交流一下。

內(nèi)核學(xué)習(xí),一偏之見;疏漏難免,懇請指正。

為什么寫這篇博客

剛開始學(xué)內(nèi)核的時(shí)候,不要執(zhí)著于一個(gè)方面,不要專注于一個(gè)子系統(tǒng)就一頭扎到實(shí)際的代碼行中去,因?yàn)檫@樣的話,牽涉的面會很廣,會碰到很多困難,容易產(chǎn)生挫敗感,一個(gè)函數(shù)體中(假設(shè)剛開始的時(shí)候正在學(xué)習(xí)某個(gè)方面的某個(gè)具體的功能函數(shù))很可能摻雜著其他各個(gè)子系統(tǒng)方面設(shè)計(jì)理念(多是大量相關(guān)的數(shù)據(jù)結(jié)構(gòu)或者全局變量,用于支撐該子系統(tǒng)的管理工作)下相應(yīng)的代碼實(shí)現(xiàn),這個(gè)時(shí)候看到這些東西,紛繁蕪雜,是沒有頭緒而且很不理解的,會產(chǎn)生很多很多的疑問,

(這個(gè)時(shí)候如果對這些疑問糾纏不清,刨根問底,那么事實(shí)上就是在學(xué)習(xí)當(dāng)前子系統(tǒng)的過程中頻繁的去涉足其他子系統(tǒng),這時(shí)候注意力就分散了),而事實(shí)上等了解了各個(gè)子系統(tǒng)后再回頭看這些東西的話,就簡單多了,而且思路也會比較清晰。所以,要避免 “只見樹木,不見森林”,不要急于深入到底層代碼中去,不要過早研究底層代碼。

我的學(xué)習(xí)方法

剛開始,我認(rèn)為主要的問題在于你知道不知道,而不是理解不理解,某個(gè)子系統(tǒng)的實(shí)現(xiàn)采用了某種策略、方法,而你在學(xué)習(xí)中需要做的就是知道有這么一回事兒,然后才是理解所描述的策略或者方法。

根據(jù)自己的學(xué)習(xí)經(jīng)驗(yàn),剛開始學(xué)習(xí)內(nèi)核的時(shí)候,我認(rèn)為要做的是在自己的腦海中建立起內(nèi)核的大體框架,理解各個(gè)子系統(tǒng)的設(shè)計(jì)理念和構(gòu)建思想,這些理念和思想會從宏觀上呈獻(xiàn)給你清晰的脈絡(luò),就像一個(gè)去除了枝枝葉葉的大樹的主干,一目了然;

當(dāng)然,肯定還會涉及到具體的實(shí)現(xiàn)方法、函數(shù),但是此時(shí)接觸到的函數(shù)或者方法位于內(nèi)核實(shí)現(xiàn)的較高的層次,是主(要)函數(shù),已經(jīng)了解到這些函數(shù),針對的是哪些設(shè)計(jì)思想,實(shí)現(xiàn)了什么樣的功能,達(dá)成了什么樣的目的,混個(gè)臉熟的說法在這兒也是成立的。

至于該主函數(shù)所調(diào)用的其它的輔助性函數(shù)就等同于枝枝葉葉了,不必太早就去深究。此時(shí),也就初步建立起了內(nèi)核子系統(tǒng)框架和代碼實(shí)現(xiàn)之間的關(guān)聯(lián),關(guān)聯(lián)其實(shí)很簡單,比如一看到某個(gè)函數(shù)名字,就想起這個(gè)函數(shù)是針對哪個(gè)子系統(tǒng)的,實(shí)現(xiàn)了什么功能。

?

好了今天的分享就到這里,涉及到內(nèi)核的東西一般都比較枯燥無味,一旦你吃透了,就會豁然開朗,加油吧!文章來源地址http://www.zghlxwxcb.cn/news/detail-591142.html

到了這里,關(guān)于Linux 內(nèi)核概念和學(xué)習(xí)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux內(nèi)核學(xué)習(xí)(四)—— 系統(tǒng)調(diào)用(基于Linux 2.6內(nèi)核)

    Linux內(nèi)核學(xué)習(xí)(四)—— 系統(tǒng)調(diào)用(基于Linux 2.6內(nèi)核)

    在現(xiàn)代操作系統(tǒng)中,內(nèi)核提供了用戶進(jìn)程與內(nèi)核進(jìn)行交互的一組接口,這些接口在應(yīng)用程序和內(nèi)核之間扮演了使者的角色。這些接口保證了系統(tǒng)的穩(wěn)定可靠,避免應(yīng)用程序肆意妄行。 系統(tǒng)調(diào)用在用戶空間進(jìn)程和硬件設(shè)備之間添加了一個(gè)中間層。有三個(gè)作用: 第一,它為用戶

    2024年02月12日
    瀏覽(19)
  • linux驅(qū)動開發(fā):Linux 內(nèi)核的一些函數(shù)

    1 、 MKDEV ( ma, mi ) 構(gòu)造設(shè)備號,將主設(shè)備號和次設(shè)備號轉(zhuǎn)換為設(shè)備號類型(dev_t)。 MKDEV 宏將主設(shè)備號( ma )左移 20 位,然后與次設(shè)備號( mi )相與,得到設(shè)備號。 dev_t 結(jié)構(gòu) 主設(shè)備號 12 位

    2024年02月17日
    瀏覽(20)
  • Linux內(nèi)核學(xué)習(xí)(十三)—— 設(shè)備與模塊(基于Linux 2.6內(nèi)核)

    目錄 一、設(shè)備類型 二、模塊 構(gòu)建模塊 安裝模塊 載入模塊 在 Linux 以及 Unix 系統(tǒng)中,設(shè)備被分為以下三種類型: 塊設(shè)備(blkdev) :以塊為尋址單位,塊的大小隨設(shè)備的不同而變化;塊設(shè)備通常支持重定位(seeking)操作,也就是對數(shù)據(jù)的隨機(jī)訪問。如硬盤、藍(lán)光光碟和 Flas

    2024年02月11日
    瀏覽(90)
  • Linux內(nèi)核源碼分析 1:Linux內(nèi)核體系架構(gòu)和學(xué)習(xí)路線

    Linux內(nèi)核源碼分析 1:Linux內(nèi)核體系架構(gòu)和學(xué)習(xí)路線

    好久沒有動筆寫文章了,這段時(shí)間經(jīng)歷了蠻多事情的。這段時(shí)間自己寫了一兩個(gè)基于不同指令集的 Linux 內(nèi)核, x86 和 RISC-V 。期間也去做了一些嵌入式相關(guān)的工作,研究了一下 ARM 指令集架構(gòu)。 雖然今年九月份我就要申請了,具體申請 AI 方向還是機(jī)器人、嵌入式、操作系統(tǒng)、

    2024年02月07日
    瀏覽(30)
  • linux內(nèi)核網(wǎng)絡(luò)驅(qū)動框架(linux驅(qū)動開發(fā)篇)

    linux內(nèi)核網(wǎng)絡(luò)驅(qū)動框架(linux驅(qū)動開發(fā)篇)

    網(wǎng)絡(luò)驅(qū)動的核心: 1、就是初始化 net_device 結(jié)構(gòu)體中的各個(gè)成員變量, 2、然后將初始化完成以后的 net_device 注冊到 Linux 內(nèi)核中 1、網(wǎng)絡(luò)設(shè)備(用net_device結(jié)構(gòu)體) 2、網(wǎng)絡(luò)設(shè)備的操作集( net_device_ops結(jié)構(gòu)體 ) 3、sk_buff結(jié)構(gòu)體 網(wǎng)絡(luò)是分層的,對于應(yīng)用層而言不用關(guān)系具體的底層是

    2023年04月08日
    瀏覽(26)
  • Linux驅(qū)動開發(fā)——內(nèi)核模塊

    Linux驅(qū)動開發(fā)——內(nèi)核模塊

    目錄 內(nèi)核模塊的由來 第一個(gè)內(nèi)核模塊程序? 內(nèi)核模塊工具? 將多個(gè)源文件編譯生成一個(gè)內(nèi)核模塊? 內(nèi)核模塊參數(shù) 內(nèi)核模塊依賴 關(guān)于內(nèi)核模塊的進(jìn)一步討論? 習(xí)題 最近一直在玩那些其它的技術(shù),眼看快暑假了,我決定夯實(shí)一下我的驅(qū)動方面的技能,迎接我的實(shí)習(xí),找了一本

    2024年02月04日
    瀏覽(100)
  • Linux內(nèi)核驅(qū)動開發(fā)(一)

    Linux內(nèi)核驅(qū)動開發(fā)(一)

    linux操作系統(tǒng)歷史 開發(fā)模式 git 分布式管理 git clone 獲取 git push 提交 git pull 更新 郵件組 mailing list patch 內(nèi)核代碼組成 Makfile arch 體系系統(tǒng)架構(gòu)相關(guān) block 塊設(shè)備 crypto 加密算法 drivers 驅(qū)動(85%) atm 通信 bluetooth 藍(lán)牙 firmware:外設(shè) fs 文件系統(tǒng) include 頭文件 init 啟動代碼 ipc 進(jìn)程通

    2023年04月11日
    瀏覽(23)
  • Linux內(nèi)核架構(gòu)和工作原理詳解(二)

    Linux內(nèi)核架構(gòu)和工作原理詳解(二)

    圖1 Linux系統(tǒng)層次結(jié)構(gòu) 最上面是用戶(或應(yīng)用程序)空間。這是用戶應(yīng)用程序執(zhí)行的地方。用戶空間之下是內(nèi)核空間,Linux 內(nèi)核正是位于這里。GNU C Library (glibc)也在這里。它提供了連接內(nèi)核的系統(tǒng)調(diào)用接口,還提供了在用戶空間應(yīng)用程序和內(nèi)核之間進(jìn)行轉(zhuǎn)換的機(jī)制。這點(diǎn)非

    2024年01月17日
    瀏覽(24)
  • Linux內(nèi)核架構(gòu)和工作原理詳解(一)

    Linux內(nèi)核架構(gòu)和工作原理詳解(一)

    作用是將應(yīng)用層序的請求傳遞給硬件,并充當(dāng)?shù)讓域?qū)動程序,對系統(tǒng)中的各種設(shè)備和組件進(jìn)行尋址。目前支持模塊的動態(tài)裝卸(裁剪)。Linux內(nèi)核就是基于這個(gè)策略實(shí)現(xiàn)的。Linux進(jìn)程1.采用層次結(jié)構(gòu),每個(gè)進(jìn)程都依賴于一個(gè)父進(jìn)程。內(nèi)核啟動init程序作為第一個(gè)進(jìn)程。該進(jìn)程負(fù)責(zé)進(jìn)

    2024年01月19日
    瀏覽(27)
  • Linux Kernel內(nèi)核整體架構(gòu)(圖文詳解)

    Linux Kernel內(nèi)核整體架構(gòu)(圖文詳解)

    本文是“Linux內(nèi)核分析”系列文章的第一篇,會以內(nèi)核的核心功能為出發(fā)點(diǎn),描述Linux內(nèi)核的整體架構(gòu),以及架構(gòu)之下主要的軟件子系統(tǒng)。之后,會介紹Linux內(nèi)核源文件的目錄結(jié)構(gòu),并和各個(gè)軟件子系統(tǒng)對應(yīng)。 注:本文和其它的“Linux內(nèi)核分析”文章都基于如下約定: a) 內(nèi)核版

    2024年02月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包