在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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






審核編輯:劉清

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

    關注

    68

    文章

    19829

    瀏覽量

    233870
  • 操作系統(tǒng)

    關注

    37

    文章

    7109

    瀏覽量

    125097
  • Linux系統(tǒng)

    關注

    4

    文章

    604

    瀏覽量

    28381

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    linux操作系統(tǒng)下的進程通信設計

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

    什么是QNX操作系統(tǒng)

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

    開發(fā)必讀,操作系統(tǒng)進程和線程

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

    開發(fā)必讀,操作系統(tǒng)進程和線程

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

    操作系統(tǒng)為什么分內核態(tài)和用戶態(tài)?這兩者如何切換?

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

    為何將Linux操作系統(tǒng)劃分為用戶和內核

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

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

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

    什么是操作系統(tǒng)內核

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

    為什么選擇微內核操作系統(tǒng)

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

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

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

    高性能混合微內核操作系統(tǒng)RT-Thread Smart達到業(yè)界領先的技術水準

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

    淺談鴻蒙操作系統(tǒng)的微內核

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

    Linux系統(tǒng)為什么需要區(qū)分內核空間與用戶空間

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

    以32位系統(tǒng)為例介紹內核空間和用戶空間

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

    Linux系統(tǒng)為什么需要引入虛擬地址

    在 Linux 系統(tǒng)中,采用了虛擬內存管理技術,事實上大多數現在操作系統(tǒng)都是如此!在 Linux 系統(tǒng)中,每一個進程都在自己獨立的地址
    的頭像 發(fā)表于 10-07 17:28 ?1240次閱讀
    Linux<b class='flag-5'>系統(tǒng)</b>為什么需要引入虛擬<b class='flag-5'>地址</b>
    主站蜘蛛池模板: 天堂网资源www | xx性欧美 | 日韩久久精品视频 | 国产拍拍1000部ww | 中文字幕卡二和卡三的视频 | 国产视频每日更新 | 性欧美视频在线观看 | 欧美一级视频高清片 | 四虎黄色网址 | 男女在线观看视频 | se97se成人亚洲网站在线观看 | 免费视频爰爱太爽了 | xxx亚洲日本 | 久久精品久噜噜噜久久 | 一级特黄aa大片免费 | h网站亚洲 | 亚洲网站www | 四虎影视最新网址 | 久久精品亚洲青青草原 | 手机看高清特黄a大片 | 最新黄色在线 | 欧美巨大xxxx做受中文字幕 | 一级一级毛片免费播放 | 澳门久久 | 伊人丁香婷婷综合一区二区 | 三级天堂| 韩国在线免费视频 | 国产三级精品在线 | www.xxx.日本| 888米奇在线视频四色 | 在线观看国产一级强片 | 黄色四虎影院 | 久久精品免费在线观看 | 美女被免费网站91色 | 日韩a毛片免费全部播放完整 | 婷婷色在线播放 | 中文在线1区二区六区 | 日韩电影毛片 | 日韩色中色 | 乱小说录目伦800 | 日本免费不卡视频 |