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

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

這篇具有很好參考價(jià)值的文章主要介紹了Linux內(nèi)核架構(gòu)和工作原理詳解(一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡介

作用是將應(yīng)用層序的請(qǐng)求傳遞給硬件,并充當(dāng)?shù)讓域?qū)動(dòng)程序,對(duì)系統(tǒng)中的各種設(shè)備和組件進(jìn)行尋址。目前支持模塊的動(dòng)態(tài)裝卸(裁剪)。Linux內(nèi)核就是基于這個(gè)策略實(shí)現(xiàn)的。Linux進(jìn)程1.采用層次結(jié)構(gòu),每個(gè)進(jìn)程都依賴于一個(gè)父進(jìn)程。內(nèi)核啟動(dòng)init程序作為第一個(gè)進(jìn)程。該進(jìn)程負(fù)責(zé)進(jìn)一步的系統(tǒng)初始化操作。init進(jìn)程是進(jìn)程樹的根,所有的進(jìn)程都直接或者間接起源于該進(jìn)程。virt/ ---- 提供虛擬機(jī)技術(shù)的支持。

Linux內(nèi)核預(yù)備工作

理解Linux內(nèi)核最好預(yù)備的知識(shí)點(diǎn):

懂C語言
懂一點(diǎn)操作系統(tǒng)的知識(shí)
熟悉少量相關(guān)算法
懂計(jì)算機(jī)體系結(jié)構(gòu)

Linux內(nèi)核的特點(diǎn):

結(jié)合了unix操作系統(tǒng)的一些基礎(chǔ)概念
Linux內(nèi)核架構(gòu)和工作原理詳解(一),性能測(cè)試小白,linux,性能優(yōu)化

Linux內(nèi)核的任務(wù):

1.從技術(shù)層面講,內(nèi)核是硬件與軟件之間的一個(gè)中間層。作用是將應(yīng)用層序的請(qǐng)求傳遞給硬件,并充當(dāng)?shù)讓域?qū)動(dòng)程序,對(duì)系統(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)核是一個(gè)資源管理程序。負(fù)責(zé)將可用的共享資源(CPU時(shí)間、磁盤空間、網(wǎng)絡(luò)連接等)分配得到各個(gè)系統(tǒng)進(jìn)程。

4.內(nèi)核就像一個(gè)庫,提供了一組面向系統(tǒng)的命令。系統(tǒng)調(diào)用對(duì)于應(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ū)動(dòng)程序)都打包到一個(gè)文件中。內(nèi)核中的每一個(gè)函數(shù)都可以訪問到內(nèi)核中所有其他部分。目前支持模塊的動(dòng)態(tài)裝卸(裁剪)。Linux內(nèi)核就是基于這個(gè)策略實(shí)現(xiàn)的。

哪些地方用到了內(nèi)核機(jī)制?

1.進(jìn)程(在cpu的虛擬內(nèi)存中分配地址空間,各個(gè)進(jìn)程的地址空間完全獨(dú)立;同時(shí)執(zhí)行的進(jìn)程數(shù)最多不超過cpu數(shù)目)之間進(jìn)行通 信,需要使用特定的內(nèi)核機(jī)制。

2.進(jìn)程間切換(同時(shí)執(zhí)行的進(jìn)程數(shù)最多不超過cpu數(shù)目),也需要用到內(nèi)核機(jī)制。

進(jìn)程切換也需要像FreeRTOS任務(wù)切換一樣保存狀態(tài),并將進(jìn)程置于閑置狀態(tài)/恢復(fù)狀態(tài)。

3.進(jìn)程的調(diào)度。確認(rèn)哪個(gè)進(jìn)程運(yùn)行多長的時(shí)間。

Linux進(jìn)程

1.采用層次結(jié)構(gòu),每個(gè)進(jìn)程都依賴于一個(gè)父進(jìn)程。內(nèi)核啟動(dòng)init程序作為第一個(gè)進(jìn)程。該進(jìn)程負(fù)責(zé)進(jìn)一步的系統(tǒng)初始化操作。init進(jìn)程是進(jìn)程樹的根,所有的進(jìn)程都直接或者間接起源于該進(jìn)程。

2.通過pstree命令查詢。實(shí)際上得系統(tǒng)第一個(gè)進(jìn)程是systemd,而不是init(這也是疑問點(diǎn))

3.系統(tǒng)中每一個(gè)進(jìn)程都有一個(gè)唯一標(biāo)識(shí)符(ID),用戶(或其他進(jìn)程)可以使用ID來訪問進(jìn)程。

Linux內(nèi)核源代碼的目錄結(jié)構(gòu)

Linux內(nèi)核源代碼包括三個(gè)主要部分:

內(nèi)核核心代碼,包括第3章所描述的各個(gè)子系統(tǒng)和子模塊,以及其它的支撐子系統(tǒng),例如電源管理、Linux初始化等

其它非核心代碼,例如庫文件(因?yàn)長inux內(nèi)核是一個(gè)自包含的內(nèi)核,即內(nèi)核不依賴其它的任何軟件,自己就可以編譯通過)、固件集合、KVM(虛擬機(jī)技術(shù))等

編譯腳本、配置文件、幫助文檔、版權(quán)說明等輔助性文件

使用ls命令看到的內(nèi)核源代碼的頂層目錄結(jié)構(gòu),具體描述如下。

include/ ---- 內(nèi)核頭文件,需要提供給外部模塊(例如用戶空間代碼)使用。

kernel/ ---- Linux內(nèi)核的核心代碼,包含了3.2小節(jié)所描述的進(jìn)程調(diào)度子系統(tǒng),以及和進(jìn)程調(diào)度相關(guān)的模塊。

mm/ ---- 內(nèi)存管理子系統(tǒng)(3.3小節(jié))。

fs/ ---- VFS子系統(tǒng)(3.4小節(jié))。

net/ ---- 不包括網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)的網(wǎng)絡(luò)子系統(tǒng)(3.5小節(jié))。

ipc/ ---- IPC(進(jìn)程間通信)子系統(tǒng)。

arch// ---- 體系結(jié)構(gòu)相關(guān)的代碼,例如arm, x86等等。
arch//mach- ---- 具體的machine/board相關(guān)的代碼。
arch//include/asm ---- 體系結(jié)構(gòu)相關(guān)的頭文件。
arch//boot/dts ---- 設(shè)備樹(Device Tree)文件。

init/ ---- Linux系統(tǒng)啟動(dòng)初始化相關(guān)的代碼。
block/ ---- 提供塊設(shè)備的層次。
sound/ ---- 音頻相關(guān)的驅(qū)動(dòng)及子系統(tǒng),可以看作“音頻子系統(tǒng)”。
drivers/ ---- 設(shè)備驅(qū)動(dòng)(在Linux kernel 3.10中,設(shè)備驅(qū)動(dòng)占了49.4的代碼量)。

lib/ ---- 實(shí)現(xiàn)需要在內(nèi)核中使用的庫函數(shù),例如CRC、FIFO、list、MD5等。
crypto/ ----- 加密、解密相關(guān)的庫函數(shù)。
security/ ---- 提供安全特性(SELinux)。
virt/ ---- 提供虛擬機(jī)技術(shù)(KVM等)的支持。
usr/ ---- 用于生成initramfs的代碼。
firmware/ ---- 保存用于驅(qū)動(dòng)第三方設(shè)備的固件。

samples/ ---- 一些示例代碼。
tools/ ---- 一些常用工具,如性能剖析、自測(cè)試等。

Kconfig, Kbuild, Makefile, scripts/ ---- 用于內(nèi)核編譯的配置文件、腳本等。

COPYING ---- 版權(quán)聲明。
MAINTAINERS ----維護(hù)者名單。
CREDITS ---- Linux主要的貢獻(xiàn)者名單。
REPORTING-BUGS ---- Bug上報(bào)的指南。

Documentation, README ---- 幫助、說明文檔。文章來源地址http://www.zghlxwxcb.cn/news/detail-805513.html

到了這里,關(guān)于Linux內(nèi)核架構(gòu)和工作原理詳解(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【云原生】Docker 詳解(二):Docker 架構(gòu)及工作原理

    【云原生】Docker 詳解(二):Docker 架構(gòu)及工作原理

    Docker 在運(yùn)行時(shí)分為 Docker 引擎 (服務(wù)端守護(hù)進(jìn)程) 和 客戶端工具 ,我們?nèi)粘J褂酶鞣N docker 命令 ,其實(shí)就是在使用 客戶端工具 與 Docker 引擎 進(jìn)行交互。 Docker 是一個(gè)客戶端-服務(wù)器(C/S)架構(gòu)程序。Docker 客戶端只需要向 Docker 服務(wù)器或者守護(hù)進(jìn)程發(fā)出請(qǐng)求,服務(wù)器或者守護(hù)

    2024年02月13日
    瀏覽(17)
  • Linux源碼解讀系列是一套深入剖析Linux內(nèi)核源碼的教程,旨在幫助讀者理解Linux操作系統(tǒng)的底層原理和工作機(jī)制

    Linux源碼解讀系列是一套深入剖析Linux內(nèi)核源碼的教程,旨在幫助讀者理解Linux操作系統(tǒng)的底層原理和工作機(jī)制

    Linux源碼解讀系列是一套深入剖析Linux內(nèi)核源碼的教程,旨在幫助讀者理解Linux操作系統(tǒng)的底層原理和工作機(jī)制。該系列教程從Linux內(nèi)核的各個(gè)模塊入手,逐一分析其源碼實(shí)現(xiàn),并結(jié)合實(shí)際應(yīng)用場(chǎng)景進(jìn)行講解。通過學(xué)習(xí)本系列,讀者可以深入了解Linux操作系統(tǒng)的底層機(jī)制,掌握

    2024年01月21日
    瀏覽(26)
  • CSI 工作原理與JuiceFS CSI Driver 的架構(gòu)設(shè)計(jì)詳解

    CSI 工作原理與JuiceFS CSI Driver 的架構(gòu)設(shè)計(jì)詳解

    容器存儲(chǔ)接口(Container Storage Interface)簡稱 CSI,CSI 建立了行業(yè)標(biāo)準(zhǔn)接口的規(guī)范,借助 CSI 容器編排系統(tǒng)(CO)可以將任意存儲(chǔ)系統(tǒng)暴露給自己的容器工作負(fù)載。JuiceFS CSI Driver 通過實(shí)現(xiàn) CSI 接口使得 Kubernetes 上的應(yīng)用可以通過 PVC(PersistentVolumeClaim)使用 JuiceFS。本文將詳細(xì)介紹

    2024年02月09日
    瀏覽(21)
  • Linux下Web服務(wù)器工作模型及Nginx工作原理詳解

    在Linux環(huán)境下,Web服務(wù)器處理并發(fā)連接請(qǐng)求的工作模型主要有阻塞、非阻塞、同步、異步等方式。以下是對(duì)各種工作模型的淺析: 同步阻塞 I/O: 類比于在餐廳等飯,需要在取餐處等待,期間不能進(jìn)行其他事情。 同步非阻塞 I/O: 類比于在餐廳等飯,可以進(jìn)行其他事情,但需

    2024年02月03日
    瀏覽(42)
  • [CUDA 學(xué)習(xí)筆記] 如何優(yōu)化 CUDA 矩陣乘內(nèi)核以獲得類似 cuBLAS 的性能: 工作日志

    [CUDA 學(xué)習(xí)筆記] 如何優(yōu)化 CUDA 矩陣乘內(nèi)核以獲得類似 cuBLAS 的性能: 工作日志

    注: 本文主要是對(duì)博文 “How to Optimize a CUDA Matmul Kernel for cuBLAS-like Performance: a Worklog - SIBOEHM” 的翻譯, 并進(jìn)行了一定的備注和補(bǔ)充 在這篇文章中, 我將迭代優(yōu)化用 CUDA 編寫的矩陣乘法的實(shí)現(xiàn). 我的目標(biāo)不是構(gòu)建一個(gè) cuBLAS 替代品, 而是深入了解用于現(xiàn)代深度學(xué)習(xí)的 GPU 的最重要的

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

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

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

    2024年02月07日
    瀏覽(30)
  • ubuntu22.04 linux內(nèi)核5.19版本安裝usb無線網(wǎng)卡驅(qū)動(dòng)(linux小白)

    ubuntu22.04 linux內(nèi)核5.19版本安裝usb無線網(wǎng)卡驅(qū)動(dòng)(linux小白)

    居住環(huán)境原因,臺(tái)式機(jī)(Ubuntu22.04系統(tǒng))沒辦法連網(wǎng)線,需要無線網(wǎng)卡。 1.經(jīng)上網(wǎng)查詢,買了綠聯(lián)AC1300 雙頻無線網(wǎng)卡,支持內(nèi)核5.15版本以下。 2.在綠聯(lián)官網(wǎng)下載驅(qū)動(dòng),如下圖,安裝過程發(fā)現(xiàn)缺少 linux/net/ipx文件。 ?3.經(jīng) ubuntu linux內(nèi)核版本>5.15安裝usb無線網(wǎng)卡驅(qū)動(dòng)_linux 內(nèi)核5

    2024年02月15日
    瀏覽(23)
  • linux內(nèi)核整體架構(gòu)

    linux內(nèi)核整體架構(gòu)

    操作系統(tǒng)屬于軟件范疇,負(fù)責(zé)管理系統(tǒng)的硬件資源。OS具備的功能:1.為應(yīng)用程序提供執(zhí)行環(huán)境。2.為多用戶和應(yīng)用程序管理計(jì)算機(jī)的硬件資源。3.虛擬化功能。4.支持并發(fā)。 宏內(nèi)核:所有的內(nèi)核代碼都編譯成二進(jìn)制文件并運(yùn)行在一個(gè)大內(nèi)核地址空間中,整體架構(gòu)如下: 微內(nèi)核:

    2024年02月09日
    瀏覽(20)
  • Linux 內(nèi)核與架構(gòu)速查

    Linux 內(nèi)核與架構(gòu)速查

    https://blog.uso6.com https://blog.csdn.net/dxk539687357 本文主要記錄查詢 Linux 計(jì)算機(jī)的內(nèi)核與架構(gòu), 用于下載對(duì)應(yīng)架構(gòu)的第三方軟件。 如上圖所示, 有時(shí)候我們下載一些第三方軟件, 軟件會(huì)有很多中架構(gòu), 需要自己自行判斷自己的計(jì)算機(jī)架構(gòu), 然后下載對(duì)應(yīng)的文件, 下載錯(cuò)誤就會(huì)

    2024年02月12日
    瀏覽(15)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包