那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么進程地址空間中要包括操作系統(內核)呢?

dyquk4xk2p3d ? 來源:碼農的荒島求生 ? 2023-04-18 09:09 ? 次閱讀

今天聊聊進程地址空間這點小事。

說到進程的地址空間,大家可能都知道這樣一張圖:

2b7bd68c-dd79-11ed-bfe3-dac502259ad0.png

這張圖就是Linux程序運行起來后所謂的進程地址空間,這里包括我們熟悉的代碼區、數據區、以及堆區和棧區,今天我們不講解這些區域,而是重點關注這個地址空間中最上面的一塊區域——內核,這里的問題是:

為什么進程地址空間中要包括操作系統(內核)呢?要想知道這個問題的答案,你需要知道操作系統到底是如何管理內存的。

現代操作系統大都利用虛擬內存系統來管理內存,我們看的上圖,這一段連續的內存區域其實只是一個假象,物理內存中并不一定真的存在這樣一個內存布局,利用虛擬內存系統將一些非連續的內存塊(頁)映射到一段連續的地址空間——也就是我們看到的上圖,這就是所謂的虛擬內存。

我們看到的地址都是虛擬地址,物理內存與虛擬內存的映射關系維護在頁表中,當CPU執行機器指令時需要根據頁表將虛擬地址轉為物理內存地址,但這個過程對程序員來說是透明的,我們看不到這樣的一個轉換過程。

那么為什么內核要將自己映射到進程的地址空間呢? 我們知道CPU在執行指令時是有權限狀態的,x86處理器有4個權限狀態,操作系統一般使用其中兩個,這就是所謂的用戶態與內核態,我們寫的程序運行在用戶態,操作系統運行在內核態。

2b875dd6-dd79-11ed-bfe3-dac502259ad0.png

在一些場景下,像我們讀寫文件、收發網絡數據等都需要操作系統的幫助,也就是調用操作系統提供的服務,這個過程就是所謂的系統調用,關于系統調用我們在之前的文章中已經多次講解過了,在系統調用這個場景下就涉及從用戶態切換到內核態。 此外還有其它場景涉及用戶態與內核態的切換,像中斷處理以及異常處理等。

既然你知道我們的程序運行時需要頻繁的進行用戶態與內核態切換那么剩下的就簡單了。

2b93e6f0-dd79-11ed-bfe3-dac502259ad0.png

如果內核與用戶態程序位于不同的地址空間,那么當用戶態與內核態進行切換時就勢必涉及頁表的切換——從用戶態進入內核態需要將用戶進程的頁表切換為內核頁表,而如果從內核態退出回到用戶態就涉及將內核頁表切換為用戶進程頁表,切換頁表對于計算機系統來說算是一個不小的開銷。

而如果內核與用戶態程序位于同一個地址空間中,那么上述頁表切換的開銷就可以避免了,這就是為什么內核要將自己映射到進程地址空間的重要原因。 好啦,這篇就到這里,希望對大家理解進程地址空間有所幫助。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19409

    瀏覽量

    231190
  • 操作系統
    +關注

    關注

    37

    文章

    6896

    瀏覽量

    123749
  • Linux系統
    +關注

    關注

    4

    文章

    595

    瀏覽量

    27510

原文標題:為什么進程地址空間中包括操作系統?

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    linux操作系統下的進程通信設計

    信號量值大于0,進程被喚醒,轉入步驟(1)。(4) 當進程不再使用一個信號量控制的資源時,信號量值加1。如果此時有進程正在睡眠等待此信號量,則喚醒此進程。維護信號量狀態的是Linux
    發表于 04-16 09:17

    什么是QNX操作系統

    網絡通信和中斷處理,其進程在獨立的地址空間中運行。所有其他操作系統服務都實現為協作的用戶進程,因此QNX
    發表于 06-07 14:16

    開發必讀,操作系統進程和線程

    模式中用戶的線程對操作系統不可見。優點:用戶線程開幾個都沒問題,且上下文切換發生用戶空間,切換的效率較高;缺點:一個用戶線程如果阻塞了,則整個進程都將會阻塞,另外在多核 CPU中,是
    發表于 06-18 09:35

    開發必讀,操作系統進程和線程

    模式中用戶的線程對操作系統不可見。優點:用戶線程開幾個都沒問題,且上下文切換發生用戶空間,切換的效率較高;缺點:一個用戶線程如果阻塞了,則整個進程都將會阻塞,另外在多核 CPU中,是
    發表于 07-01 06:30

    操作系統為什么分內核態和用戶態?這兩者如何切換?

    操作系統為什么分內核態和用戶態,這兩者如何切換?進程地址空間會劃分為哪些區域?堆和棧有什么區別?
    發表于 07-23 09:01

    為何將Linux操作系統劃分為用戶和內核

    :使用Linux操作系統提供的功能2、Linux操作系統的組成:用戶和內核空間——為何將Linux操作系統劃分為用戶和
    發表于 12-15 08:35

    有關Linux系統的PBC (進程控制塊)基礎知識介紹

    ,比如打開的文件,掛起的信號,處理器狀態,內核數據結構,內存映射地址空間等。在操作系統中,內核的調度對象時線程,而不是
    發表于 06-23 16:27

    什么是操作系統內核

    什么是操作系統內核 操作系統內核是指大多數操作系統的核心部分。它由操作系統中用于管理存儲器、文
    發表于 06-17 07:23 ?9982次閱讀

    為什么選擇微內核操作系統

    例如原來在宏內核操作系統中,用戶應用程序是通過系統調用,陷入到內核中,然后再讀取、訪問文件。而在微內核操作系統中,則是用戶應用程序通過發送I
    的頭像 發表于 06-03 14:35 ?4184次閱讀

    深入淺出Linux的進程地址空間

    我們知道,在32位機器上linux操作系統中的進程地址空間大小是4G,其中0-3G是用戶空間,3G-4G是
    的頭像 發表于 06-20 09:57 ?1979次閱讀

    高性能混合微內核操作系統RT-Thread Smart達到業界領先的技術水準

    通常來講操作系統分為宏內核和微內核兩種不同的架構,如下圖所示,操作系統中分為了用戶域和核心域兩個地址空間
    的頭像 發表于 09-11 15:33 ?3017次閱讀
    高性能混合微<b class='flag-5'>內核操作系統</b>RT-Thread Smart達到業界領先的技術水準

    淺談鴻蒙操作系統的微內核

    獲取用戶所有權限的做法,在安全性上大大提升。 什么是微內核? 微內核結構由一個非常簡單的硬件抽象層和一組比較關鍵的原語或系統調用組成;這些原語,僅僅
    的頭像 發表于 10-13 12:36 ?6234次閱讀

    Linux系統為什么需要區分內核空間與用戶空間

    ,或叫線性地址空間)為 4G(2的32次方)。也就是說一個進程的最大地址空間為 4G。 操作系統
    的頭像 發表于 10-14 14:38 ?3652次閱讀
    Linux<b class='flag-5'>系統</b>為什么需要區分<b class='flag-5'>內核</b><b class='flag-5'>空間</b>與用戶<b class='flag-5'>空間</b>?

    以32位系統為例介紹內核空間和用戶空間

    4G(2的32次方)。也就是說一個進程的最大地址空間為 4G。 操作系統的核心是內核(kernel),它獨立于普通的應用程序,可以訪問受保
    的頭像 發表于 11-12 17:41 ?3035次閱讀
    以32位<b class='flag-5'>系統</b>為例介紹<b class='flag-5'>內核</b><b class='flag-5'>空間</b>和用戶<b class='flag-5'>空間</b>

    Linux系統為什么需要引入虛擬地址

    在 Linux 系統中,采用了虛擬內存管理技術,事實上大多數現在操作系統都是如此!在 Linux 系統中,每一個進程都在自己獨立的地址
    的頭像 發表于 10-07 17:28 ?1022次閱讀
    Linux<b class='flag-5'>系統</b>為什么需要引入虛擬<b class='flag-5'>地址</b>
    大发888现金存款| 新大发888娱乐城| 百家乐现金网信誉排名| 百家乐试玩1000元| 大发888娱乐城技巧| 百乐坊娱乐场| 百家乐官网澳门百家乐官网澳门赌场| 百樂坊百家乐官网的玩法技巧和规则 | 百家乐庄闲客户端| 百家乐路子技巧| 大发888ber娱乐场下载| 韶关市| 大发888备用网| 高青县| 网上百家乐官网骗局| 百家乐技术秘籍| 威尼斯人娱乐城地址lm0| 防城港市| 虚拟百家乐官网游戏下载| 玩百家乐官网如何硬| 必博百家乐游戏| 二八杠游戏机| 百家乐官网在线直播| 新澳博百家乐官网的玩法技巧和规则| 百家乐手机投注平台| 大发888官方注册| 百家乐官网桌子10人| 代理百家乐最多占成| 威尼斯人娱乐棋牌是真的吗| bet365官方网站| 大三元百家乐官网的玩法技巧和规则 | 速博国际网上娱乐| 最好的百家乐官网好评平台都有哪些 | 澳门百家乐官网| 澳门百家乐官网打法百家乐官网破解方法| 致胜百家乐官网软件| 马尼拉百家乐的玩法技巧和规则 | 网络投注| 百家乐官网最新打法| 百家乐类游戏网站| 六合彩报码室|