色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

3天內不再提示

進程切換與線程切換有啥區(qū)別

jf_78858299 ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2023-02-24 14:16 ? 次閱讀

注意這個題目問的是進程切換與線程切換的區(qū)別,不是進程與線程的區(qū)別。當然這里的 線程指的是同一個進程中的線程

這個問題能很好的考察面試者對進程和線程的理解深度,有比較高的區(qū)分度。

要想正確回答這個問題,面試者需要理解虛擬內存。

虛擬內存解放生產力

對于程序員來說,我們在編程時實際上是不怎么操心內存問題的,對于使用JavaPython、JavaScript等動態(tài)類型語言的程序員來說更是如此,自動內存回收機制的引入使得使用這類語言的程序員幾乎完全不用關心內存問題;即使對于編譯型語言C/C++來說,程序員需要關心的也僅僅是內存的申請和釋放。

總的來說,作為程序員(無論使用什么類型的語言)我們根本就不關心數據以及程序被放在了 物理內存的哪個位置上 (設計實現操作系統(tǒng)的程序員除外),我們可以簡單的認為我們的程序 獨占內存 ,比如在32位系統(tǒng)下我們的進程占用的內存空間為4G;并且我們可以申請超過物理內存大小的空間,比如在只有256MB的系統(tǒng)上程序員可以申請1G大小的內存空間,這種假設極大的解放了程序員的生產力。

而這種假設實現的背后功臣就是虛擬內存。

什么是虛擬內存

虛擬內存是操作系統(tǒng)為每個進程提供的一種抽象,每個進程都有屬于自己的、私有的、地址連續(xù)的虛擬內存,當然我們知道 最終進程的數據及代碼必然要放到物理內存上 ,那么必須有某種機制能記住虛擬地址空間中的某個數據被放到了哪個物理內存地址上,這就是所謂的地址空間映射,也就是虛擬內存地址與物理內存地址的映射關系,那么操作系統(tǒng)是如何記住這種映射關系的呢,答案就是頁表,頁表中記錄了虛擬內存地址到物理內存地址的映射關系。有了頁表就可以將虛擬地址轉換為物理內存地址了,這種機制就是虛擬內存。

每個進程都有自己的虛擬地址空間,進程內的所有線程共享進程的虛擬地址空間。

現在我們就可以來回答這個面試題了。

進程切換與線程切換的區(qū)別

進程切換與線程切換的一個最主要區(qū)別就在于進程切換涉及到虛擬地址空間的切換而線程切換則不會。因為每個進程都有自己的虛擬地址空間,而線程是共享所在進程的虛擬地址空間的,因此同一個進程中的線程進行線程切換時不涉及虛擬地址空間的轉換。

舉一個不太恰當的例子,線程切換就好比你從主臥走到次臥,反正主臥和次臥都在同一個房子中(虛擬地址空間),因此你無需換鞋子、換衣服等等。但是進程切換就不一樣了,進程切換就好比從你家到別人家,這是兩個不同的房子(不同的虛擬地址空間),出發(fā)時要換好衣服、鞋子等等,到別人家后還要再換鞋子等等。

因此我們可以形象的認為線程是處在同一個屋檐下的,這里的屋檐就是虛擬地址空間,因此線程間切換無需虛擬地址空間的切換;而進程則不同,兩個不同進程位于不同的屋檐下,即進程位于不同的虛擬地址空間,因此進程切換涉及到虛擬地址空間的切換,這也是為什么進程切換要比線程切換慢的原因。

有的同學可能還是不太明白,為什么虛擬地址空間切換會比較耗時呢?

為什么虛擬地址切換很慢

現在我們已經知道了進程都有自己的虛擬地址空間,把虛擬地址轉換為物理地址需要查找頁表,頁表查找是一個很慢的過程,因此通常使用Cache來緩存常用的地址映射,這樣可以加速頁表查找,這個cache就是TLB,Translation Lookaside Buffer,我們不需要關心這個名字只需要知道TLB本質上就是一個cache,是用來加速頁表查找的。由于每個進程都有自己的虛擬地址空間,那么顯然每個進程都有自己的頁表,那么當進程切換后頁表也要進行切換,頁表切換后TLB就失效了,cache失效導致命中率降低,那么虛擬地址轉換為物理地址就會變慢,表現出來的就是程序運行會變慢,而線程切換則不會導致TLB失效,因為線程線程無需切換地址空間,因此我們通常說線程切換要比較進程切換塊,原因就在這里。

總結

虛擬內存是現代操作系統(tǒng)極其重要的一部分,當然在這里限于篇幅我們只能簡單介紹,關于虛擬內存的詳細講解見后續(xù)操作系統(tǒng)教程,敬請期待

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

    關注

    30

    文章

    4886

    瀏覽量

    70178
  • 線程
    +關注

    關注

    0

    文章

    507

    瀏覽量

    20065
  • 進程
    +關注

    關注

    0

    文章

    206

    瀏覽量

    14200
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    Linux中進程線程的深度對比

    關于進程線程,在 Linux 中是一對兒很核心的概念。但是進程線程到底有聯(lián)系,又有
    發(fā)表于 10-14 16:47 ?1433次閱讀
    Linux中<b class='flag-5'>進程</b>和<b class='flag-5'>線程</b>的深度對比

    進程線程區(qū)別

    線程是指進程內的一個執(zhí)行單元,也是進程內的可調度實體.與進程區(qū)別:(1)地址空間:進程內的一個
    發(fā)表于 12-12 09:28

    線程進程、程序的區(qū)別

    程序中同時運行多個線程完成不同的工作,稱為多線程線程進程區(qū)別在于,子進程和父
    發(fā)表于 03-23 13:09

    進程線程區(qū)別和聯(lián)系介紹

    之輕裝運行;而對擁有資源的基本單位, 又不頻繁地對之進行切換。正是在這種思想的指導下,產生了線程概 念。 在引入線程的操作系統(tǒng)中,線程進程
    發(fā)表于 07-04 00:18

    請問UCOSIII中的任務調度和任務切換有什么區(qū)別

    疑惑:UCOSIII中的任務調度和任務切換有什么區(qū)別?原子哥在PPT里面的解釋是:任務調度就是中止當前正在運行的任務轉而去執(zhí)行其他的任務。當UCOSIII需要切換到另外一個任務時,它將保存當前任務
    發(fā)表于 05-25 07:27

    進程線程區(qū)別在哪?

    1、進程線程區(qū)別:1. 線程是程序執(zhí)行的最小單位,而進程是操作系統(tǒng)分配資源的最小單位;2. 一個進程
    發(fā)表于 07-07 06:53

    線程管理之線程切換

    線程管理之線程切換前言基本信息前言說明PendSV_Handler函數前言基本信息名稱描述說明RT-Thread Studio 軟件版本版本: 1.1.3RT-Thread 系統(tǒng)版本
    發(fā)表于 08-24 08:19

    什么是CDMA軟切換?它與硬切換有什么分別?

    什么是CDMA軟切換?它與硬切換有什么分別? 移動通訊是建立在移動之中的。有了頻率的復用,必然帶來移動中的頻率切換問題,一個網絡質量的
    發(fā)表于 06-01 20:27 ?1094次閱讀

    什么是CDMA軟切換?它與硬切換有什么分別

    什么是CDMA軟切換?它與硬切換有什么分別 移動通訊是建立在移動之中的。有了頻率的復用,必然帶來移動中的頻率切換問題,一個網絡質
    發(fā)表于 06-15 09:42 ?1344次閱讀

    線程進程有哪些區(qū)別

    線程進程區(qū)別在于,子進程和父進程有不同的代碼和數據空間,而多個線程則共享數據空間,每個
    發(fā)表于 07-20 07:48 ?2065次閱讀
    <b class='flag-5'>線程</b>與<b class='flag-5'>進程</b>有哪些<b class='flag-5'>區(qū)別</b>?

    線程進程區(qū)別和聯(lián)系,線程進程通信方式

    摘要:進程線程都是計算里的兩項執(zhí)行活動,各有特色和優(yōu)勢。下面就來介紹線程進程之間的區(qū)別聯(lián)系以及通信方式。
    發(fā)表于 12-08 14:12 ?1.3w次閱讀

    鴻蒙內核源碼之線程環(huán)境下的任務切換

    在中斷環(huán)境下,從當前線程切換到目標線程,這種方式也稱為硬切換.不由軟件控制的被動式切換.哪些情況下會出現硬
    的頭像 發(fā)表于 04-25 16:48 ?1635次閱讀
    鴻蒙內核源碼之<b class='flag-5'>線程</b>環(huán)境下的任務<b class='flag-5'>切換</b>

    進程線程分別是什么,它們的區(qū)別是什么

    程和線程區(qū)別是什么?有什么關系?相信大家對于進程都很熟悉了吧,而線程相對于進程而言,是一個更加接近于執(zhí)行體的概念,為了讓大家更好的了解
    發(fā)表于 03-24 17:26 ?9481次閱讀
    <b class='flag-5'>進程</b>和<b class='flag-5'>線程</b>分別是什么,它們的<b class='flag-5'>區(qū)別</b>是什么

    進程線程區(qū)別

    每個進程都有獨立的代碼和數據空間(程序上下文),程序之間的切換會有較大的開銷;線程可以看做輕量級的進程,同一類線程共享代碼和數據空間,每個
    的頭像 發(fā)表于 05-09 11:06 ?6261次閱讀
    <b class='flag-5'>進程</b>和<b class='flag-5'>線程</b>的<b class='flag-5'>區(qū)別</b>

    mcu線程進程區(qū)別是什么

    MCU線程進程是嵌入式系統(tǒng)中常見的并行執(zhí)行的概念,它們之間有許多區(qū)別,包括線程進程的定義、資源管理、通信機制、執(zhí)行方式等等。下面將詳細介
    的頭像 發(fā)表于 01-04 10:45 ?1073次閱讀
    主站蜘蛛池模板: 国产成人精品久久久久婷婷 | 免费视频亚洲 | 蜜柚在线观看免费高清官网视频 | 日韩欧美中文字幕一区 | 三级网站视频在线观看 | 1973性农场未删减版 | 18亚洲男同gay1069 | 亚洲国产精品特色大片观看 | 欧美日韩高清一区二区三区 | 亚洲视频网站欧美视频网站 | 国产精品成人影院 | 在线观看中文 | 国产亚洲精品久久久久久入口 | 亚洲乱色视频在线观看 | 花季v3.0.2黄在线观看 | 蜜臀AV精品一区二区三区 | 菠萝菠萝蜜高清观看在线 | 国产SUV精品一区二区883 | 亚洲国产精品久久精品成人网站 | 亚洲欧美一区二区三区蜜芽 | 大香伊蕉在人线国产最新 | 十分钟在线观看免费视频高清WWW | 亚洲宅男天堂a在线 | 青青草国产自偷拍 | 在线中文字幕 | 成人无码在线超碰视频 | 精品伊人久久久 | 国产久青青青青在线观看 | 国产成人精视频在线观看免费 | 美女被j进去动态 | 蜜柚影院在线观看免费高清中文 | 99re6久久在热线视频 | 在线播放av欧美无码碰 | 中文字幕蜜臀AV熟女人妻 | 色欲狠狠躁天天躁无码中文字幕 | 无码国产色欲XXXX视频 | 亚洲性无码AV久久成人 | 欧美一区二区影院 | 亚洲精品理论电影在线观看 | 四虎精品久久久久影院 | 欧美影院在线观看完整版 mp4 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品