日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 嵌入式大雜燴
[導讀]本文以32位系統(tǒng)為例,詳細介紹了內(nèi)核空間(kernel space)和用戶空間(user space)。

作者:sparkdev

來源:http://www.cnblogs.com/sparkdev/


本文以 32 位系統(tǒng)為例介紹內(nèi)核空間(kernel space)用戶空間(user space)。

內(nèi)核空間和用戶空間

對 32 位操作系統(tǒng)而言,它的尋址空間(虛擬地址空間,或叫線性地址空間)為 4G(2的32次方)。也就是說一個進程的最大地址空間為 4G。

操作系統(tǒng)的核心是內(nèi)核(kernel),它獨立于普通的應用程序,可以訪問受保護的內(nèi)存空間,也有訪問底層硬件設(shè)備的所有權(quán)限。為了保證內(nèi)核的安全,現(xiàn)在的操作系統(tǒng)一般都強制用戶進程不能直接操作內(nèi)核。

具體的實現(xiàn)方式基本都是由操作系統(tǒng)將虛擬地址空間劃分為兩部分,一部分為內(nèi)核空間,另一部分為用戶空間。針對 Linux 操作系統(tǒng)而言,最高的 1G 字節(jié)(從虛擬地址 0xC0000000 到 0xFFFFFFFF)由內(nèi)核使用,稱為內(nèi)核空間。而較低的 3G 字節(jié)(從虛擬地址 0x00000000 到 0xBFFFFFFF)由各個進程使用,稱為用戶空間。

對上面這段內(nèi)容我們可以這樣理解:「每個進程的 4G 地址空間中,最高 1G 都是一樣的,即內(nèi)核空間。只有剩余的 3G 才歸進程自己使用?!?/strong>

「換句話說就是, 最高 1G 的內(nèi)核空間是被所有進程共享的!」下圖描述了每個進程 4G 地址空間的分配情況(此圖來自互聯(lián)網(wǎng)):

為什么需要區(qū)分內(nèi)核空間與用戶空間

在 CPU 的所有指令中,有些指令是非常危險的,如果錯用,將導致系統(tǒng)崩潰,比如清內(nèi)存、設(shè)置時鐘等。如果允許所有的程序都可以使用這些指令,那么系統(tǒng)崩潰的概率將大大增加。

所以,CPU 將指令分為特權(quán)指令和非特權(quán)指令,對于那些危險的指令,只允許操作系統(tǒng)及其相關(guān)模塊使用,普通應用程序只能使用那些不會造成災難的指令。

比如 Intel 的 CPU 將特權(quán)等級分為 4 個級別:Ring0~Ring3。其實 Linux 系統(tǒng)只使用了 Ring0 和 Ring3 兩個運行級別(Windows 系統(tǒng)也是一樣的)。

當進程運行在 Ring3 級別時被稱為運行在用戶態(tài),而運行在 Ring0 級別時被稱為運行在內(nèi)核態(tài)。

內(nèi)核態(tài)與用戶態(tài)

好了我們現(xiàn)在需要再解釋一下什么是內(nèi)核態(tài)、用戶態(tài):「當進程運行在內(nèi)核空間時就處于內(nèi)核態(tài),而進程運行在用戶空間時則處于用戶態(tài)?!?/strong>

在內(nèi)核態(tài)下,進程運行在內(nèi)核地址空間中,此時 CPU 可以執(zhí)行任何指令。運行的代碼也不受任何的限制,可以自由地訪問任何有效地址,也可以直接進行端口的訪問。

在用戶態(tài)下,進程運行在用戶地址空間中,被執(zhí)行的代碼要受到 CPU 的諸多檢查,它們只能訪問映射其地址空間的頁表項中規(guī)定的在用戶態(tài)下可訪問頁面的虛擬地址,且只能對任務(wù)狀態(tài)段(TSS)中 I/O 許可位圖(I/O Permission Bitmap)中規(guī)定的可訪問端口進行直接訪問。

對于以前的 DOS 操作系統(tǒng)來說,是沒有內(nèi)核空間、用戶空間以及內(nèi)核態(tài)、用戶態(tài)這些概念的??梢哉J為所有的代碼都是運行在內(nèi)核態(tài)的,因而用戶編寫的應用程序代碼可以很容易的讓操作系統(tǒng)崩潰掉。

對于 Linux 來說,通過區(qū)分內(nèi)核空間和用戶空間的設(shè)計,隔離了操作系統(tǒng)代碼(操作系統(tǒng)的代碼要比應用程序的代碼健壯很多)與應用程序代碼。

即便是單個應用程序出現(xiàn)錯誤也不會影響到操作系統(tǒng)的穩(wěn)定性,這樣其它的程序還可以正常的運行(Linux 可是個多任務(wù)系統(tǒng)??!)。

「所以,區(qū)分內(nèi)核空間和用戶空間本質(zhì)上是要提高操作系統(tǒng)的穩(wěn)定性及可用性?!?/strong>

如何從用戶空間進入內(nèi)核空間

其實所有的系統(tǒng)資源管理都是在內(nèi)核空間中完成的。比如讀寫磁盤文件,分配回收內(nèi)存,從網(wǎng)絡(luò)接口讀寫數(shù)據(jù)等等。

我們的應用程序是無法直接進行這樣的操作的。但是我們可以通過內(nèi)核提供的接口來完成這樣的任務(wù)。

比如應用程序要讀取磁盤上的一個文件,它可以向內(nèi)核發(fā)起一個 "系統(tǒng)調(diào)用" 告訴內(nèi)核:"我要讀取磁盤上的某某文件"。

其實就是通過一個特殊的指令讓進程從用戶態(tài)進入到內(nèi)核態(tài)(到了內(nèi)核空間),在內(nèi)核空間中,CPU 可以執(zhí)行任何的指令,當然也包括從磁盤上讀取數(shù)據(jù)。具體過程是先把數(shù)據(jù)讀取到內(nèi)核空間中,然后再把數(shù)據(jù)拷貝到用戶空間并從內(nèi)核態(tài)切換到用戶態(tài)。

此時應用程序已經(jīng)從系統(tǒng)調(diào)用中返回并且拿到了想要的數(shù)據(jù),可以開開心心的往下執(zhí)行了。簡單說就是應用程序把高科技的事情(從磁盤讀取文件)外包給了系統(tǒng)內(nèi)核,系統(tǒng)內(nèi)核做這些事情既專業(yè)又高效。

對于一個進程來講,從用戶空間進入內(nèi)核空間并最終返回到用戶空間,這個過程是十分復雜的。舉個例子,比如我們經(jīng)常接觸的概念 "堆棧",其實進程在內(nèi)核態(tài)和用戶態(tài)各有一個堆棧。

運行在用戶空間時進程使用的是用戶空間中的堆棧,而運行在內(nèi)核空間時,進程使用的是內(nèi)核空間中的堆棧。所以說,Linux 中每個進程有兩個棧,分別用于用戶態(tài)和內(nèi)核態(tài)。

下圖簡明的描述了用戶態(tài)與內(nèi)核態(tài)之間的轉(zhuǎn)換:

既然用戶態(tài)的進程必須切換成內(nèi)核態(tài)才能使用系統(tǒng)的資源,那么我們接下來就看看進程一共有多少種方式可以從用戶態(tài)進入到內(nèi)核態(tài)。

概括的說,有三種方式:系統(tǒng)調(diào)用、軟中斷和硬件中斷。這三種方式每一種都涉及到大量的操作系統(tǒng)知識,所以這里不做展開。

整體結(jié)構(gòu)

接下來我們從內(nèi)核空間和用戶空間的角度看一看整個 Linux 系統(tǒng)的結(jié)構(gòu)。它大體可以分為三個部分,從下往上依次為:硬件 -> 內(nèi)核空間 -> 用戶空間。如下圖所示(此圖來自互聯(lián)網(wǎng)):

在硬件之上,內(nèi)核空間中的代碼控制了硬件資源的使用權(quán),用戶空間中的代碼只有通過內(nèi)核暴露的系統(tǒng)調(diào)用接口(System Call Interface)才能使用到系統(tǒng)中的硬件資源。其實,不光是 Linux,Windows 操作系統(tǒng)的設(shè)計也是大同小異。

實際上我們可以將每個處理器在任何指定時間點上的活動概括為下列三者之一:

  • 運行于用戶空間,執(zhí)行用戶進程。
  • 運行于內(nèi)核空間,處于進程上下文,代表某個特定的進程執(zhí)行。
  • 運行于內(nèi)核空間,處于中斷上下文,與任何進程無關(guān),處理某個特定的中斷。

以上三點幾乎包括所有的情況,比如當 CPU 空閑時,內(nèi)核就運行一個空進程,處于進程上下文,但運行在內(nèi)核空間。

說明:Linux 系統(tǒng)的中斷服務(wù)程序不在進程的上下文中執(zhí)行,它們在一個與所有進程都無關(guān)的、專門的中斷上下文中執(zhí)行。

之所以存在一個專門的執(zhí)行環(huán)境,就是為了保證中斷服務(wù)程序能夠在第一時間響應和處理中斷請求,然后快速地退出。

總結(jié)

現(xiàn)代的操作系統(tǒng)大都通過內(nèi)核空間和用戶空間的設(shè)計來保護操作系統(tǒng)自身的安全性和穩(wěn)定性。所以在我們閱讀有關(guān)操作系統(tǒng)的資料時經(jīng)常遇到內(nèi)核空間、用戶空間和內(nèi)核態(tài)、用戶態(tài)等概念,希望本文能夠幫助您理解這些基本的概念。

參考:

1、https://www.cnblogs.com/Anker/p/3269106.html

2、https://blog.csdn.net/linux12121/article/details/52628941

免責聲明:本文來源網(wǎng)絡(luò),免費傳達知識,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請聯(lián)系我進行刪除。

猜你喜歡

wireshark抓包工具的使用及分析

熱門問題:C++在嵌入式中表現(xiàn)如何?

記一個OLED編程中文顯示函數(shù)的坑(留意變量數(shù)據(jù)類型的范圍)


加好友,回暗號【嵌入式大雜燴】,進微信群

免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

全球嵌入式技術(shù)領(lǐng)域的年度盛會2026嵌入式世界展(Embedded World 2026,簡稱EW26)于3月10日至12日在德國紐倫堡成功舉辦。作為物聯(lián)網(wǎng)和邊緣AI領(lǐng)域的領(lǐng)先企業(yè),Silicon Labs(亦稱“芯科科...

關(guān)鍵字: 物聯(lián)網(wǎng) 邊緣AI 嵌入式

3月10日至12日,2026年嵌入式世界展(Embedded World 2026,簡稱EW26)在德國紐倫堡展覽中心成功舉辦。作為領(lǐng)先的邊緣AI與智能音頻等媒體處理技術(shù)和芯片解決方案提供商,XMOS以沉浸式演示與技術(shù)交...

關(guān)鍵字: 邊緣AI 智能音頻 嵌入式

在嵌入式系統(tǒng)開發(fā)中,SoC(System on Chip)的多樣性始終是橫亙在開發(fā)者面前的難題。以某工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)項目為例,其需同時支持NXP i.MX8M、Rockchip RK3566和Allwinner H616三...

關(guān)鍵字: Platform Driver模型 嵌入式

在Zynq MPSoC開發(fā)中,實現(xiàn)PS端Linux與PL端自定義IP核的AXI互聯(lián)是構(gòu)建高性能異構(gòu)系統(tǒng)的關(guān)鍵環(huán)節(jié)。這種互聯(lián)方式充分發(fā)揮了ARM處理器的軟件優(yōu)勢與FPGA的硬件加速能力,為復雜應用提供了強大的計算平臺。

關(guān)鍵字: Zynq MPSoC Linux

在物聯(lián)網(wǎng)與智能設(shè)備飛速普及的當下,嵌入式系統(tǒng)的安全性與穩(wěn)定性愈發(fā)關(guān)鍵。實時操作系統(tǒng)(RTOS)憑借其高確定性、低延遲的特性,成為工業(yè)控制、醫(yī)療設(shè)備、航空電子等安全敏感領(lǐng)域的核心支撐。而內(nèi)存保護單元(MPU)作為硬件級安全...

關(guān)鍵字: Linux Windows

在非易失性存儲器領(lǐng)域,EEPROM(電可擦除可編程只讀存儲器)曾長期占據(jù)主流地位,廣泛應用于各類電子設(shè)備的參數(shù)存儲、日志記錄等場景。但隨著工業(yè)控制、汽車電子、醫(yī)療設(shè)備等領(lǐng)域?qū)Υ鎯π阅芴岢龈咭?,F(xiàn)RAM(鐵電隨機存取存...

關(guān)鍵字: 存儲器 可編程 嵌入式

康佳特將aReady.COM擴展至Arm架構(gòu)模塊,基于恩智浦i.MX 95處理器打造應用就緒的軟硬件構(gòu)建模塊,集成操作系統(tǒng)、系統(tǒng)整合與IoT連接能力,賦能高價值應用快速落地

關(guān)鍵字: 處理器 IoT 嵌入式

3月12日,2026年中國家電及消費電子博覽會(以下簡稱:AWE 2026)在上海盛大開幕。展會現(xiàn)場,場景化、系統(tǒng)化、一體化的家電解決方案成為行業(yè)焦點,消費者對家電的關(guān)注也已從基礎(chǔ)的尺寸匹配,延伸至對“空間秩序感”和“視...

關(guān)鍵字: 消費電子 蒸烤箱 嵌入式

超高效NPU IP在資源受限設(shè)備中推進邊緣AI,因而獲得認可

關(guān)鍵字: 人工智能 嵌入式 NPU
關(guān)閉