久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么看待Linux操作系統的用戶空間和內核空間

140次閱讀
沒有評論

共計 1747 個字符,預計需要花費 5 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章主要為大家展示了“怎么看待 Linux 操作系統的用戶空間和內核空間”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“怎么看待 Linux 操作系統的用戶空間和內核空間”這篇文章吧。

作為中央核心處理單元的 CPU,除了生產工藝的不斷革新進步外,在處理數據和響應速度方面也需要有權衡。稍有微機原理基礎的人都知道 Intel  X86 體系的 CPU 提供了四種特權模式 ring0~ring3,其中 ring0 特權 ***,ring3 的特權 ***,之所以要做這樣的區分一個主要目的是保護資源,通俗來講要保護的資源無非就是“內存、I/ O 端口以及執行特殊機器指令的能力”。任何一個時刻,x86  CPU 都是在一定的特權模式下運行。同樣,對于 ARM 體系的 CPU   一共有七種運行模式,分別是:用戶模式 (usr)、快速中斷模式(fiq)、中斷模式(irq)、管理模式(svc)、系統模式(sys)、數據訪問終止模式(abt) 和未定義指令終止模式(und)。除了用戶模式外,其他 6 中工作模式都屬于特權模式,而特權模式中除了系統模式外,其他 5 種模式又稱為異常模式。

那么底層硬件 CPU 的這種特性,跟我們將要討論的用戶模式和內核模式又有什么關系呢? 讓我們正本溯源來端正一下對操作系統的認識。每位教操作系統課程的老師都會告訴大家:所謂的操作系統呢,就是對硬件資源進行統一管理的系統,并向用戶提供業務接口的軟件系統。通俗來講,【操作系統就是要能管理你的 CPU 和內存,驅動你的硬盤,管理你的網卡和顯示器,然后當你點擊鼠標和敲擊鍵盤時能做出正確的響應。】夠通俗了吧。

那么問題就來了,以 CPU 為例,如果你是一個操作系統的設計者,你會如何處理不同 CPU 體系架構的差異性(如 Intel、ARM,抑或 AMD、MIPS 等)? 當然這個問題不是一般人能 hold 得了的,CU 論壇里開發都江堰操作系統那位大牛前輩確實值得讓吾輩佩服和敬仰。繼續我們的話題,也就是說不同的操作系統在處理 CPU 體系架構的差異化方面是不相同的,有些操作系統,就提供了用戶模式和內核模式這種機制  (例如 linux),而有些操作系統呢,又沒有用戶態和內核態之分(例如 vxWorks)。后者不在我們的討論范圍,感興趣的童鞋可以自己去 google 一下。

以 Linux 系統和 Intel  x86 的 CPU 為例,Linux 使用了 ring0 模式來運行內核態的代碼,ring3 來運行用戶態的代碼,ring1 和 ring2 沒有使用。32 為操作系統可尋址范圍是 0~4GB,為此 Linux 系統將其分為了用戶空間和內核空間兩部分:

其中用戶空間占低位的 3GB 空間,范圍從虛擬地址的 0x00000000 到 0xBFFFFFFFF,內核空間占用了高位的 1GB 空間,虛擬地址范圍從 0xC0000000 到 0xFFFFFFFF。

內核空間里存放的是整個內核代碼和所有內核模塊,以及內核所維護的數據。當用戶運行一個程序時,該程序所創建的進程一開始是運行在用戶空間的,當它要執行網絡發送數據等動作時,必須通過調用 write、send 等系統函數來完成,這些系統調用會去調用內核中的代碼來完成用戶的請求操作,這時 CPU 必須從 ring3 切換到 ring0,然后進入內核地址空間去執行這些代碼完成操作,完成后又切換回 ring3,回到用戶態。

所以,我們可以看到,提供了用戶模式和內核模式的操作系統,用戶態的程序就不能隨意操作內核地址空間里的數據,具有一定的安全保護作用; 于此同時,在實時性方面稍微有所犧牲。也要就是說,只要內核代碼沒有問題,用戶空間程序的錯誤和 BUG 一般來說不會導致系統崩潰,提高了系統的健壯性。

這么看來,內核確實比較“拽”,而 Linux 也提供了一些用戶空間和內核空間通訊的機制,使我們可以開發出更高效的程序。但一定要記住,內核中一點小小的錯誤都是會導致整個系統崩潰,所以開發內核程序時一定要非常小心謹慎。

以上是“怎么看待 Linux 操作系統的用戶空間和內核空間”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-07發表,共計1747字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 庆云县| 岢岚县| 镇坪县| 穆棱市| 临清市| 银川市| 新巴尔虎右旗| 阳泉市| 厦门市| 沙河市| 古丈县| 务川| 扬中市| 哈巴河县| 东源县| 聊城市| 明光市| 确山县| 淮滨县| 蒲城县| 德化县| 通化县| 茶陵县| 翼城县| 邛崃市| 怀化市| 克拉玛依市| 镇平县| 岳池县| 错那县| 广汉市| 溆浦县| 邢台市| 建水县| 嵊州市| 柯坪县| 西华县| 靖边县| 全南县| 九龙坡区| 铁岭县|