溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux內(nèi)核指的是什么

發(fā)布時(shí)間:2022-01-21 10:32:53 來源:億速云 閱讀:179 作者:kk 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)Linux內(nèi)核指的是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

內(nèi)核屬于操作系統(tǒng)的核心部分,它具有操作系統(tǒng)基本的功能,主要負(fù)責(zé)管理系統(tǒng)的內(nèi)存、進(jìn)程、設(shè)備驅(qū)動(dòng)程序、文件系統(tǒng)和網(wǎng)絡(luò)接口,因此,操作系統(tǒng)的性能和穩(wěn)定性由內(nèi)核決定。

1、內(nèi)存管理

  1. 進(jìn)程對(duì)內(nèi)存的使用
    計(jì)算機(jī)中所有要執(zhí)行的程序都必須占有一定數(shù)量的內(nèi)存,它主要是用來存放從磁盤中存放的程序代碼,也可以是存放來自用戶輸入的數(shù)據(jù)等。

Linux 操作系統(tǒng)采用的是虛擬內(nèi)存管理技術(shù),這樣可以使每個(gè)進(jìn)程都有各自互不干擾的進(jìn)程地址存儲(chǔ)空間。該空間是塊大小為 4GB 的線性虛擬空間,用戶所看到和所接觸到的都是虛擬的地址,并不能看到實(shí)際的物理內(nèi)存地址。因此利用虛擬地址不僅能保護(hù)操作系統(tǒng),而且方便用戶程序使用比實(shí)際物理內(nèi)存較大的地址空間。

一個(gè)普通的進(jìn)程包括代碼段、數(shù)據(jù)段、BSS 段、堆和棧 5 個(gè)不同的數(shù)據(jù)段:

代碼段:主要用來存放可執(zhí)行文件的操作指令。代碼段只允許讀取操作,不允許修改操作,它是為了防止在運(yùn)行時(shí)被非法修改;

數(shù)據(jù)段:數(shù)據(jù)段用來存放可執(zhí)行文件中已經(jīng)初始化的全局變量,也就是存放程序靜態(tài)分配的變量和全局變量;

BSS 段:BSS 段包含了程序中未初始化的全局變量,在內(nèi)存中 BSS 段全部置“0”;

堆:堆是用于存放進(jìn)程運(yùn)行中被動(dòng)態(tài)分配的內(nèi)存段,它的大小并不固定,可動(dòng)態(tài)地?cái)U(kuò)張或縮減。當(dāng)進(jìn)程調(diào)用“malloc”函數(shù)分配內(nèi)存時(shí),新分配的內(nèi)存就被動(dòng)態(tài)地添加到堆上(堆被擴(kuò)張);當(dāng)利用“free”函數(shù)釋放內(nèi)存時(shí),被釋放的內(nèi)存從堆中被刪除(堆被縮減);

棧:棧是用戶為了存放程序而臨時(shí)創(chuàng)建的一個(gè)局部變量。棧具有先進(jìn)先出的特點(diǎn),所以??梢杂脕肀4婊蚧謴?fù)調(diào)用現(xiàn)場(chǎng)。因此,可以把堆棧當(dāng)作一個(gè)寄存、交換臨時(shí)數(shù)據(jù)的內(nèi)存區(qū)。

注意,數(shù)據(jù)段、BSS和堆通常是被連續(xù)存儲(chǔ)的即在內(nèi)存位置上是連續(xù)的。

  1. 物理內(nèi)存

物理內(nèi)存是系統(tǒng)硬件提供的真實(shí)的內(nèi)存大小,除了物理內(nèi)存之外,在 Linux 系統(tǒng)中還有一個(gè)虛擬內(nèi)存,虛擬內(nèi)存是為了滿足物理內(nèi)存的不足而存在的,它是利用磁盤空間虛擬出的一塊邏輯內(nèi)存,用作虛擬內(nèi)存的磁盤空間被稱為交換空間。

對(duì)于計(jì)算機(jī)系統(tǒng)而言,計(jì)算機(jī)的內(nèi)存以及其他資源都是固定且有限的。為了讓有限的物理內(nèi)存滿足應(yīng)用程序?qū)?nèi)存的大需求量,Linux 系統(tǒng)采用了稱為“虛擬內(nèi)存”的內(nèi)存管理方式。雖然應(yīng)用程序操作的對(duì)象是映射到物理內(nèi)存之上的虛擬內(nèi)存,但處理器直接操作的是物理內(nèi)存。例如,當(dāng)一個(gè)應(yīng)用程序訪問一個(gè)虛擬地址時(shí),首先必須將虛擬地址轉(zhuǎn)化成物理地址,然后處理器才能解析地址訪問請(qǐng)求。

作為物理內(nèi)存的擴(kuò)展,Linux 系統(tǒng)會(huì)在物理內(nèi)存不足時(shí),使用交換分區(qū)的虛擬內(nèi)存,總的來說,就是內(nèi)核會(huì)將暫時(shí)不用的內(nèi)存塊信息存儲(chǔ)到交換空間,從而使物理內(nèi)存得到了釋放,這塊內(nèi)存就可以用于其他目的了,當(dāng)需要用到原始內(nèi)容時(shí),這些信息會(huì)被重新從交換空間讀入到物理內(nèi)存。

Linux 系統(tǒng)將內(nèi)存劃分為容易處理的“內(nèi)存頁(yè)”。Linux 包括了管理可用內(nèi)存的方式,以及物理和虛擬映射所使用的硬件機(jī)制。但內(nèi)存管理要管理的可不止 4KB 緩沖區(qū)。Linux 提供了對(duì) 4KB 緩沖區(qū)的抽象,例如 slab 分配器。這種內(nèi)存管理模式使用 4KB 緩沖區(qū)為基數(shù),然后從中分配結(jié)構(gòu),并跟蹤內(nèi)存頁(yè)的使用情況,例如哪些內(nèi)存頁(yè)是滿的,哪些頁(yè)面沒有完全使用,哪些頁(yè)面為空。這樣就允許該模式根據(jù)系統(tǒng)需要來動(dòng)態(tài)調(diào)整內(nèi)存使用。

注意,Linux 系統(tǒng)內(nèi)核的內(nèi)存管理采取的是分頁(yè)存取機(jī)制,為了保證物理內(nèi)存能得到充分的利用,內(nèi)核會(huì)在適當(dāng)?shù)臅r(shí)候?qū)⑽锢韮?nèi)存中不經(jīng)常使用的數(shù)據(jù)塊信息自動(dòng)交換到虛擬內(nèi)存中,而將經(jīng)常使用的信息保留到物理內(nèi)存。

為了支持多個(gè)用戶使用內(nèi)存,有時(shí)會(huì)出現(xiàn)可用內(nèi)存被完全消耗的情況。由于這個(gè)原因,頁(yè)面可以移出內(nèi)存并放入磁盤中,這個(gè)過程稱為交換,就是頁(yè)面會(huì)從內(nèi)存中被交換到硬盤上。

Linux 系統(tǒng)進(jìn)行頁(yè)面交換是有條件的,不是所有頁(yè)面在不用時(shí)都交換到虛擬內(nèi)存,Linux 內(nèi)核根據(jù)最近最經(jīng)常使用的算法,只需要將一些不經(jīng)常使用的頁(yè)面文件交換到虛擬內(nèi)存中。例如,一個(gè)占用很大內(nèi)存的進(jìn)程運(yùn)行時(shí),需要耗費(fèi)很多內(nèi)存資源,此時(shí)就會(huì)有一些不常用的頁(yè)面文件被交換到虛擬內(nèi)存中,當(dāng)這個(gè)占用很多內(nèi)存資源的進(jìn)程結(jié)束并釋放了很多內(nèi)存時(shí),剛才被交換出去的頁(yè)面文件不會(huì)自動(dòng)地交換進(jìn)物理內(nèi)存,這時(shí)系統(tǒng)物理內(nèi)存就會(huì)有很多的空閑,同時(shí)交換空間也被使用。

交換空間的頁(yè)面在使用時(shí)會(huì)首先被交換到物理內(nèi)存,如果此時(shí)沒有足夠的物理內(nèi)存來容納這些頁(yè)面,它們會(huì)被馬上交換出去,如此一來,虛擬內(nèi)存中可能沒有足夠的空間來存儲(chǔ)這些交換頁(yè)面,最終導(dǎo)致 Linux 系統(tǒng)出現(xiàn)假死機(jī)、服務(wù)異常問題,雖然它可以在一段時(shí)間內(nèi)自行恢復(fù),但是恢復(fù)后的系統(tǒng)已經(jīng)基本不可以使用了。

因此,合理規(guī)劃和設(shè)計(jì) Linux 內(nèi)存使用,是非常重要的。
2、進(jìn)程管理

  1. 進(jìn)程是什么

進(jìn)程是在自身的虛擬地址空間運(yùn)行的一個(gè)獨(dú)立的程序,從操作系統(tǒng)的角度來看,所有在系統(tǒng)上運(yùn)行的東西,都可以稱為一個(gè)進(jìn)程。在 Linux 系統(tǒng)中,能夠同時(shí)運(yùn)行多個(gè)進(jìn)程,Linux 通過在短的時(shí)間間隔內(nèi)輪流運(yùn)行這些進(jìn)程而實(shí)現(xiàn)“多任務(wù)”。這一短的時(shí)間間隔稱為“時(shí)間片”,讓進(jìn)程輪流運(yùn)行的方法稱為“進(jìn)程調(diào)度”,完成調(diào)度的程序稱為調(diào)度程序。

程序和進(jìn)程的區(qū)別是:進(jìn)程雖然由程序產(chǎn)生,但是它并不是程序。程序是一個(gè)進(jìn)程指令的集合,它可以啟用一個(gè)或多個(gè)進(jìn)程,同時(shí),程序只占用磁盤空間,而不占用系統(tǒng)運(yùn)行資源,而進(jìn)程僅僅占用系統(tǒng)內(nèi)存空間,是動(dòng)態(tài)的、可以改變的。如果進(jìn)程關(guān)閉,其所占用的內(nèi)存資源將隨之釋放。

進(jìn)程調(diào)度控制進(jìn)程對(duì) CPU 的訪問。當(dāng)需要選擇下一個(gè)進(jìn)程運(yùn)行時(shí),由調(diào)度程序選擇最值得運(yùn)行的進(jìn)程。運(yùn)行的進(jìn)程是指在等待 CPU 資源的進(jìn)程,如果某個(gè)進(jìn)程在等待其他資源,則該進(jìn)程是不可運(yùn)行進(jìn)程。Linux 使用了比較簡(jiǎn)單的基于優(yōu)先級(jí)的進(jìn)程調(diào)度算法選擇新的進(jìn)程。

通過多任務(wù)機(jī)制,每個(gè)進(jìn)程可以單獨(dú)占用計(jì)算機(jī),從而簡(jiǎn)化了程序的編寫。每個(gè)進(jìn)程有自己?jiǎn)为?dú)的地址空間,并且只能由這一進(jìn)程訪問,這樣,操作系統(tǒng)避免了進(jìn)程之間的互相干擾以及“惡意攻擊”程序?qū)ο到y(tǒng)可能造成的危害。為了完成某項(xiàng)特定的任務(wù),有時(shí)需要綜合兩個(gè)程序的功能,例如一個(gè)程序輸出文本,而另一個(gè)程序?qū)ξ谋具M(jìn)行排序。為此,操作系統(tǒng)還提供進(jìn)程間的通信機(jī)制來幫助完成這樣的任務(wù)。Linux 系統(tǒng)中常見的進(jìn)程間通信機(jī)制有信號(hào)、管道、共享內(nèi)存、信號(hào)量和套接字等。

內(nèi)核通過 SCI 提供了一個(gè)應(yīng)用程序編程接口(API)來創(chuàng)建一個(gè)新進(jìn)程(fork、exec 或 Portable Operating System Interface [POSⅨ]函數(shù)),停止進(jìn)程(kill、exit),并在它們之間進(jìn)行通信和同步(signal 或者 POSⅨ 機(jī)制)。

  1. 進(jìn)程的分類

按照進(jìn)程的功能和運(yùn)行的程序分類,進(jìn)程可劃分為兩大類:

系統(tǒng)進(jìn)程:可以執(zhí)行內(nèi)存資源分配和進(jìn)程切換等管理工作;而且,該進(jìn)程的運(yùn)行不受用戶的干預(yù),即使是 root 用戶也不能干預(yù)系統(tǒng)進(jìn)程的運(yùn)行;

用戶進(jìn)程:通過執(zhí)行用戶程序、應(yīng)用程序或內(nèi)核之外的系統(tǒng)程序而產(chǎn)生的進(jìn)程,此類進(jìn)程可以在用戶的控制下運(yùn)行或關(guān)閉。

針對(duì)用戶進(jìn)程,又可以分為交互進(jìn)程、批處理進(jìn)程和守護(hù)進(jìn)程這 3 種:

交互進(jìn)程:由一個(gè) Shell 終端啟動(dòng)的進(jìn)程,在執(zhí)行過程中,需要與用戶進(jìn)行交互操作,可以運(yùn)行于前臺(tái),也可以運(yùn)行在后臺(tái);

批處理進(jìn)程:該進(jìn)程是一個(gè)進(jìn)程集合,負(fù)責(zé)按順序啟動(dòng)其他的進(jìn)程;

守護(hù)進(jìn)程:守護(hù)進(jìn)程是一直運(yùn)行的一種進(jìn)程,經(jīng)常在 Linux 系統(tǒng)啟動(dòng)時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。它們獨(dú)立于控制終端,并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。

  1. 進(jìn)程的狀態(tài)

進(jìn)程啟動(dòng)之后,并不是馬上開始運(yùn)行,通常有以下 5 種狀態(tài):

可運(yùn)行狀態(tài):正在運(yùn)行或者正準(zhǔn)備運(yùn)行;

可中斷的等待狀態(tài):處于阻塞狀態(tài),如果達(dá)到某種條件,就會(huì)變?yōu)檫\(yùn)行的狀態(tài)。同時(shí)該狀態(tài)的進(jìn)程也會(huì)由于接收到信號(hào)而被提前喚醒,從而進(jìn)入到運(yùn)行的狀態(tài);

不中斷的等待狀態(tài):與“可中斷的等待狀態(tài)”含義類似,不同的地方是處于這個(gè)狀態(tài)的進(jìn)程對(duì)信號(hào)不做任何的回應(yīng);

僵死狀態(tài):又稱僵死進(jìn)程,每個(gè)進(jìn)程在結(jié)束后都會(huì)處于僵死狀態(tài),等待父進(jìn)程調(diào)用進(jìn)而釋放資源,處于該狀態(tài)的進(jìn)程已經(jīng)結(jié)束,但是它的父進(jìn)程還沒有釋放其系統(tǒng)資源;

暫停狀態(tài):表明此時(shí)的進(jìn)程暫時(shí)停止,來接收某種特殊處理。

3、文件系統(tǒng)

Linux 操作系統(tǒng)對(duì)各種文件系統(tǒng)的支持是通過名為 VFS(Virtual File System)的組件實(shí)現(xiàn)的,也就是虛擬文件系統(tǒng)。

虛擬文件系統(tǒng)隱藏了各種硬件的具體細(xì)節(jié),把文件系統(tǒng)操作和不同文件系統(tǒng)的具體實(shí)現(xiàn)細(xì)節(jié)分離了開來,為所有的設(shè)備提供了統(tǒng)一的接口,虛擬文件系統(tǒng)提供了數(shù)十種不同的文件系統(tǒng)。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序。邏輯文件系統(tǒng)是指 Linux 所支持的文件系統(tǒng),如 ext 3、fat 等,設(shè)備驅(qū)動(dòng)程序指為每一種硬件控制器所編寫的設(shè)備驅(qū)動(dòng)程序模塊。

虛擬文件系統(tǒng)是 Linux 內(nèi)核中非常有用的一個(gè)方面,因?yàn)樗鼮槲募到y(tǒng)提供了一個(gè)通用的接口抽象,即 VFS 在用戶和文件系統(tǒng)之間提供了一個(gè)交換層。
注意,Linux 操作系統(tǒng)啟動(dòng)時(shí),第一個(gè)必須掛載的是根文件系統(tǒng);若系統(tǒng)不能從指定設(shè)備上掛載根文件系統(tǒng),則系統(tǒng)會(huì)出錯(cuò)而退出啟動(dòng)。之后可以自動(dòng)或手動(dòng)掛載其他的文件系統(tǒng)。因此,一個(gè)系統(tǒng)中可以同時(shí)存在不同的文件系統(tǒng)。

本小節(jié)先簡(jiǎn)單介紹一下文件系統(tǒng),后續(xù)章節(jié)會(huì)進(jìn)行更詳細(xì)地講解。

4、設(shè)備驅(qū)動(dòng)程序

設(shè)備驅(qū)動(dòng)程序是 Linux 內(nèi)核的主要部分,它就是應(yīng)用程序與實(shí)際硬件之間的一個(gè)軟件層,相同的硬件,加載不同的驅(qū)動(dòng)程序就可能提供不同的功能。

和操作系統(tǒng)的其他部分類似,設(shè)備驅(qū)動(dòng)程序運(yùn)行在高特權(quán)級(jí)的處理器環(huán)境中,從而可以直接對(duì)硬件進(jìn)行操作,但正因?yàn)槿绱?,任何一個(gè)設(shè)備驅(qū)動(dòng)程序的錯(cuò)誤都可能導(dǎo)致操作系統(tǒng)的崩潰。設(shè)備驅(qū)動(dòng)程序?qū)嶋H控制操作系統(tǒng)和硬件設(shè)備之間的交互。

設(shè)備驅(qū)動(dòng)程序提供一組操作系統(tǒng)可理解的抽象接口來完成和操作系統(tǒng)之間的交互,而與硬件相關(guān)的具體操作細(xì)節(jié)由設(shè)備驅(qū)動(dòng)程序完成。一般而言,設(shè)備驅(qū)動(dòng)程序和設(shè)備的控制芯片有關(guān),例如,如果計(jì)算機(jī)硬盤是 SCSI 硬盤,則需要使用 SCSI 驅(qū)動(dòng)程序,而不是 IDE 驅(qū)動(dòng)程序。

設(shè)備的分類如下:

  1. 字符設(shè)備

字符設(shè)備是能夠像文件一樣被訪問的設(shè)備,由字符設(shè)備驅(qū)動(dòng)程序來實(shí)現(xiàn)這種特性。字符設(shè)備驅(qū)動(dòng)程序通常至少要實(shí)現(xiàn) open、close、read、write 系統(tǒng)調(diào)用。

字符設(shè)備可以通過文件系統(tǒng)節(jié)點(diǎn)來訪問,這些設(shè)備文件和普通文件之間的唯一差別就在于對(duì)普通文件的訪問可以前后移動(dòng)訪問位置,而大多數(shù)字符設(shè)備是一個(gè)只能順序訪問的數(shù)據(jù)通道。一個(gè)字符設(shè)備是一種字節(jié)流設(shè)備,對(duì)設(shè)備的存取只能按順序、字節(jié)的存取進(jìn)行訪問,不能隨機(jī)訪問,字符設(shè)備沒有請(qǐng)求緩沖區(qū),所有的訪問請(qǐng)求都是按順序執(zhí)行的。

  1. 塊設(shè)備

塊設(shè)備也是通過設(shè)備節(jié)點(diǎn)來訪問。塊設(shè)備上能夠容納文件系統(tǒng)。

在大多數(shù) UNIX 系統(tǒng)中,進(jìn)行 I/O 操作時(shí)塊設(shè)備每次只能傳輸一個(gè)或多個(gè)完整的塊,而每塊包含 513 字節(jié)。Linux 系統(tǒng)內(nèi)核可以讓應(yīng)用程序向字符設(shè)備一樣讀寫塊設(shè)備,允許一次傳遞任意多字節(jié)的數(shù)據(jù)。因而,塊設(shè)備和字符設(shè)備的區(qū)別僅僅在于內(nèi)核內(nèi)部管理數(shù)據(jù)的方式不同,也就是內(nèi)核及驅(qū)動(dòng)程序之間的軟件接口,而這些不同對(duì)用戶來講是透明的。

存儲(chǔ)設(shè)備一般屬于塊設(shè)備,塊設(shè)備有請(qǐng)求緩沖區(qū),并且支持隨機(jī)訪問而不必按照順序去存取數(shù)據(jù)。Linux 系統(tǒng)內(nèi)核下的磁盤設(shè)備都是塊設(shè)備,盡管在 Linux 系統(tǒng)內(nèi)核下有塊設(shè)備節(jié)點(diǎn),但應(yīng)用程序一般是通過文件系統(tǒng)及其高速緩存來訪問塊設(shè)備的,而不是直接通過設(shè)備節(jié)點(diǎn)來讀寫塊設(shè)備上的數(shù)據(jù)。

  1. 網(wǎng)絡(luò)設(shè)備

網(wǎng)絡(luò)設(shè)備不同于字符設(shè)備和塊設(shè)備,它是面向報(bào)文的而不是面向流的,它不支持隨機(jī)訪問,也沒有請(qǐng)求緩沖區(qū)。由于不是面向流的設(shè)備,因此將網(wǎng)絡(luò)接口映射到文件系統(tǒng)中的節(jié)點(diǎn)比較困難。

內(nèi)核和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序間的通信,完全不同于內(nèi)核和字符以及塊驅(qū)動(dòng)程序之間的通信,內(nèi)核調(diào)用一套和數(shù)據(jù)包傳輸相關(guān)的函數(shù)而不是 read、write。網(wǎng)絡(luò)接口沒有像字符設(shè)備和塊設(shè)備一樣的設(shè)備號(hào),只有一個(gè)唯一的名字,如 eth0、eth2 等,而這個(gè)名字也不需要與設(shè)備文件節(jié)點(diǎn)對(duì)應(yīng)。

字符設(shè)備與塊設(shè)備的區(qū)別,大致有以下 3 個(gè)方面:
字符設(shè)備是面向流的,最小訪問單位是字節(jié);而塊設(shè)備是面向塊的,最小訪問單位是 513 字節(jié);
字符設(shè)備只能順序按字節(jié)訪問,而塊設(shè)備可隨機(jī)訪問;
塊設(shè)備上可容納文件系統(tǒng),訪問形式上,字符設(shè)備通過設(shè)備節(jié)點(diǎn)訪問,而塊設(shè)備雖然也可通過設(shè)備節(jié)點(diǎn)訪問,但一般是通過文件系統(tǒng)來訪問數(shù)據(jù)的。

5、網(wǎng)絡(luò)接口

網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序。網(wǎng)絡(luò)協(xié)議負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。眾所周知,TCP/IP 協(xié)議是 Internet 的標(biāo)準(zhǔn)協(xié)議,同時(shí)也是事實(shí)上的工業(yè)標(biāo)準(zhǔn)。

  1. 網(wǎng)絡(luò)接口的命名

網(wǎng)絡(luò)接口的命名沒有較明確的規(guī)范,但網(wǎng)絡(luò)接口名字的定義一般都是要有意義的。例如:
lo:local 的縮寫,一般指本地接口;
eth0:ethernet 的縮寫,一般用于以太網(wǎng)接口;
wifi0:wifi 是無線局域網(wǎng),一般指無線網(wǎng)絡(luò)接口。

  1. 網(wǎng)絡(luò)接口的工作

網(wǎng)絡(luò)接口是用來發(fā)送和接收數(shù)據(jù)包的基本設(shè)備。系統(tǒng)中的所有網(wǎng)絡(luò)接口組成一個(gè)鏈狀結(jié)構(gòu),應(yīng)用層的程序使用網(wǎng)絡(luò)接口時(shí)按名稱調(diào)用。每個(gè)網(wǎng)絡(luò)接口在 Linux 系統(tǒng)中對(duì)應(yīng)于一個(gè) struct net_device 結(jié)構(gòu)體,包含 name、mac、mask 等信息。一個(gè)硬件網(wǎng)卡對(duì)應(yīng)一個(gè)網(wǎng)絡(luò)接口,其工作完全由相應(yīng)的驅(qū)動(dòng)程序控制。

  1. 虛擬網(wǎng)絡(luò)接口

虛擬網(wǎng)絡(luò)接口的應(yīng)用范圍已經(jīng)非常廣泛?!發(fā)o”(本地接口)是最常見的接口之一,基本上每個(gè) Linux 系統(tǒng)都有這個(gè)接口。虛擬網(wǎng)絡(luò)接口并不真實(shí)地從外界接收和發(fā)送數(shù)據(jù)包,而是在系統(tǒng)內(nèi)部接收和發(fā)送數(shù)據(jù)包,因此虛擬網(wǎng)絡(luò)接口不需要驅(qū)動(dòng)程序。

注意,虛擬網(wǎng)絡(luò)接口和真實(shí)存在的網(wǎng)絡(luò)接口在使用上是一致的。

  1. 網(wǎng)絡(luò)接口的創(chuàng)建

硬件網(wǎng)卡的網(wǎng)絡(luò)接口由驅(qū)動(dòng)程序創(chuàng)建。而虛擬的網(wǎng)絡(luò)接口由系統(tǒng)創(chuàng)建或通過應(yīng)用層程序創(chuàng)建。驅(qū)動(dòng)中創(chuàng)建網(wǎng)絡(luò)接口的函數(shù)有以下兩種:
register_netdev(struct net_device *)

或者
register_netdevice(struct net_device *)

這兩個(gè)函數(shù)的區(qū)別是,前者會(huì)自動(dòng)生成以“eth”作為打頭名稱的接口,而后者則需要提前指定接口的名稱。

注意,register_netdev(struct net_device *) 也是通過調(diào)用 register_netdevice(struct net_device *) 來實(shí)現(xiàn)的。

什么是Linux系統(tǒng)

Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。

看完上述內(nèi)容,你們對(duì)Linux內(nèi)核指的是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI