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

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

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

3天內不再提示

淺析OS中的線程、進程和協程與RTOS任務屬于那種

strongerHuang ? 來源:CSDN技術社區 ? 作者:最后一個bug ? 2021-04-19 10:06 ? 次閱讀

今天為大家講解講解OS中的線程、進程和協程的這幾個概念,同時一起看看RTOS中的任務到底屬于哪一種。

1、三者整體關系圖

很多小伙伴在學習OS的過程中會遇到各種程序形態,比如說進程、線程、協程、管程、纖程,oh my god!要是對他們不熟悉還真分辨不清楚,今天作者主要是把大家平時最常遇到的進程、線程和協程這三個概念講一講,其他形態作者后續再慢慢補充相關文章,下面我們簡單看一下windows里面的進程(Linux也是類似的),如下圖所示:

98d01e38-9ff4-11eb-8b86-12bb97331649.png

我們可以發現每行表示一個進程,同時一個進程包含多個線程,那么進程、線程和協程的關系到底是怎樣的呢?作者這里畫了個簡圖,供大家參考。

98dc8b14-9ff4-11eb-8b86-12bb97331649.png

2、詳細分析一下

1)并發與并行

在講解進程之前我們先看看并發與并行的概念,并發字面上的意思就是一起發生,在乎的是一種感覺,對于單核CPU而言其對指令的處理都是順序執行,只是說類似于一種時間上分時交替處理,給用戶的一同發生的表象,這就是并發。

并行是指令同一時刻一起運行,這種方式一般在多處理器系統中發生。

98e63f38-9ff4-11eb-8b86-12bb97331649.png

2) 進 程

進程是一種程序的動態執行過程,進程對CPU并不是獨占連續執行的,OS管理著進程需要經常打斷當前的進程,并對多個進程進行監控調度等,那么在內核中就有一個結構體叫做進程控制塊PCB(學RTOS應該聽過任務控制塊TCB,后面會提到)-(Process Control Block),該結構體包含了該進程幾乎所有的信息和資源,那么OS也就是通過這個控制塊來獲得進程信息并管理進程。

98eef6aa-9ff4-11eb-8b86-12bb97331649.png

進程的設計是為了讓各個應用程序能夠更好的進行隔離,比如在瀏覽網頁突然瀏覽器奔潰了這不會影響到我的音樂播放器,前面作者發布的OS對內存的管理可以了解到每個進程都會有自己獨立的內存空間,并且通過內存管理模塊MMU和頁表機制各個進程之間形成了隔離。

如果進行多進程的并發勢必需要保存當前進程現場信息,比如寄存器,堆棧,更新頁表,甚至還需要從外存(比如磁盤中)置換出進程進行運行,這樣對于CPU的開銷非常大,于是為了減少開銷便有了進程內的并發線程。

3) 線 程

進程的目的是隔離并發,可以說線程是實現的共享并發,所有的線程都是共用屬于進程的資源,線程是進程指令流的剝離,同樣線程有對應的結構體信息管理TCB類似于RTOS中的TCB。

993e5c5e-9ff4-11eb-8b86-12bb97331649.png

由于線程資源共享,所以各個線程之間是會存在相互的影響,如果一個線程出現奔潰混亂,極大可能會影響到該進程中的其他線程;同時對于共享資源的讀寫也就會存在競爭問題,那么這樣就產生了一系列的共享資源的處理辦法,臨界區,互斥信號等等。

同時現在目前大部分OS其線程的管理、調度和并發都是通過內核了完成的,這樣就會存在較多系統調用以及從用戶態到內核態的切換,都會消耗一些時間,為了更進一步減少開銷,直接在用戶態實現更好的并發就出現了協程概念。

4) 協 程

之前的總覽關系圖我們也知道一個線程里面可以運行多個協程,其實函數調用就是一種狀態為初態的協程,A函數中調用B函數,可以認為是A任務切換到B任務來執行,然后執行完回到A任務,不過這樣調用的任務始終是從初始狀態開始,如果一個函數主動放棄CPU通過保存當前現場,比如寄存器值等,然后恢復到另外一個函數的寄存器狀態,便實現了任意狀態函數的并發執行,就實現了協程。好吧,解釋得有點繞,畫個圖理解理解:

99601aec-9ff4-11eb-8b86-12bb97331649.png

協程的特點:

協程是用戶態執行的并發,相對線程開銷要小;

協程主動放棄占用,對相關資源不需要進行鎖處理;

非常適合IO密集型任務,比如非常經典的生產者與消費者的雙線程模式,如果用協程,生產出來以后立馬讓步給消費者進行處理,效率非常高。

3、RTOS任務屬于多線程

對于目前主流的RTOS,比如ucosfreeRTOSRT-thread等等,都是屬于并發的線程,其實從RT-thread名字上看,其表示的就是實時的線程。

首先對于MCU上的資源每個任務都是共享的,可以認為是單進程多線程模型。

MCU一般沒有內存管理模塊MMU等等,這樣無法很好的實現進程的安全,如果用軟件實現,開銷太大,對于MCU沒有太多的必要,這也是為什么我們當個任務程序跑飛會導致整個程序無法運行的原因。

4、最后小節

可能部分小伙伴對于這幾個概念還有諸多疑惑,其并不是對這幾個概念不理解而是對OS的運行原理有些迷惑,所以大家對這部分感興趣也可以查找相關書籍進行系統的學習,加油!
編輯:lyn

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

    關注

    22

    文章

    811

    瀏覽量

    119595
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19675
  • 進程
    +關注

    關注

    0

    文章

    203

    瀏覽量

    13960

原文標題:RTOS中的任務是線程、進程、還是協程?

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

收藏 人收藏

    評論

    相關推薦

    socket 多線程編程實現方法

    是指在同一個進程運行多個線程,每個線程可以獨立執行任務線程共享
    的頭像 發表于 11-12 14:16 ?339次閱讀

    Python線程和多進程的區別

    Python作為一種高級編程語言,提供了多種并發編程的方式,其中多線程與多進程是最常見的兩種方式之一。在本文中,我們將探討Python線程與多
    的頭像 發表于 10-23 11:48 ?392次閱讀
    Python<b class='flag-5'>中</b>多<b class='flag-5'>線程</b>和多<b class='flag-5'>進程</b>的區別

    rtthread是搶占式的rtos,那么線程的timeout參數具體的作用是什么呢?

    查閱相關說明,rtthread是搶占式的rtos,那么線程的timeout參數具體的作用是什么呢, 假如線程A,B的優先級分別是1和2,timeout是10ms。當線程B 在運行
    發表于 09-27 08:39

    什么是實時操作系統(3)-在 RTOS 可以期待什么?

    RTOS使用各種機制來管理任務、事件和內存,以確保嵌入式系統滿足時間約束。在本節,您將了解構建嵌入式應用程序時需要考慮的RTOS功能,例如確定性、空間和時間分離、調度、內存管理和
    的頭像 發表于 07-23 12:00 ?1021次閱讀
    什么是實時操作系統(3)-在 <b class='flag-5'>RTOS</b> <b class='flag-5'>中</b>可以期待什么?

    為什么RTOS SDK的Rom指針比非OS SDK少?

    我不使用 NON-OS SDK,因為我更喜歡 RTOS 版本。 令我驚訝的是,這些函數在 RTOS SDK 不存在。 有人可以告訴我RTO
    發表于 07-10 07:53

    一句話讓你理解線程進程

    今天給大家分享一下線程進程,主要包含以下幾部分內容:一句話說明線程進程操作系統為什么需要進程為什么要引入
    的頭像 發表于 06-04 08:04 ?1174次閱讀
    一句話讓你理解<b class='flag-5'>線程</b>和<b class='flag-5'>進程</b>

    鴻蒙OS開發實例:【ArkTS類庫多線程CPU密集型任務TaskPool】

    CPU密集型任務是指需要占用系統資源處理大量計算能力的任務,需要長時間運行,這段時間會阻塞線程其它事件的處理,不適宜放在主線程進行。例如圖像處理、視頻編碼、數據分析等。 基于多
    的頭像 發表于 04-01 22:25 ?832次閱讀
    鴻蒙<b class='flag-5'>OS</b>開發實例:【ArkTS類庫多<b class='flag-5'>線程</b>CPU密集型<b class='flag-5'>任務</b>TaskPool】

    鴻蒙OS開發實例:【ArkTS類庫多線程I/O密集型任務開發】

    使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型任務,同樣會阻塞線程其它任務的執行,這時需要使用多
    的頭像 發表于 04-01 16:32 ?510次閱讀
    鴻蒙<b class='flag-5'>OS</b>開發實例:【ArkTS類庫多<b class='flag-5'>線程</b>I/O密集型<b class='flag-5'>任務</b>開發】

    python5種線程鎖盤點

    線程安全是多線程或多進程編程的一個概念,在擁有共享數據的多條線程并行執行的程序
    發表于 03-07 11:08 ?1585次閱讀
    python<b class='flag-5'>中</b>5種<b class='flag-5'>線程</b>鎖盤點

    基于RTOS的應用進程的典型線程

    RTOS的關鍵因素是最小的中斷延遲和最小的線程切換延遲。RTOS的價值在于它的響應速度或可預測性,而不是它在給定時間段內可以執行的工作量。
    發表于 03-05 09:32 ?590次閱讀
    基于<b class='flag-5'>RTOS</b>的應用<b class='flag-5'>進程</b><b class='flag-5'>中</b>的典型<b class='flag-5'>線程</b>

    嵌入式系統線程進程任務概念與區別

    每個線程與主程序共用地址空間,受限于2GB地址空間; 2)線程之間的同步和加鎖控制比較麻煩;一個線程的崩潰可能影響到整個程序的穩定性
    發表于 03-04 15:03 ?1332次閱讀
    嵌入式系統<b class='flag-5'>中</b>的<b class='flag-5'>線程</b>、<b class='flag-5'>進程</b>與<b class='flag-5'>任務</b>概念與區別

    線程是什么的基本單位 進程線程的本質區別

    線程是操作系統處理器調度的基本單位,它代表著獨立的執行流。在一個進程,可以包含多個線程,這些線程
    的頭像 發表于 02-02 16:30 ?927次閱讀

    鴻蒙OS 線程管理開發指導

    場景介紹 如果應用的業務邏輯比較復雜,可能需要創建多個線程來執行多個任務。這種情況下,代碼復雜難以維護,任務線程的交互也會更加繁雜。要解決此問題,開發者可以使用“TaskDispat
    的頭像 發表于 01-29 16:22 ?834次閱讀

    線程進程、多線程、多進程和多任務之間有何關系?

    進程是程序執行時的一個實例,即它是程序已經執行到課中程度的數據結構的匯集。從內核的觀點看,進程的目的就是擔當分配系統資源(CPU時間、內存等)的基本單位。
    的頭像 發表于 01-11 13:39 ?358次閱讀
    <b class='flag-5'>線程</b>、<b class='flag-5'>進程</b>、多<b class='flag-5'>線程</b>、多<b class='flag-5'>進程</b>和多<b class='flag-5'>任務</b>之間有何關系?

    mcu線程進程的區別是什么

    是程序執行的基本單位,它是進程的一個實體,是進程內的一條執行路徑。線程是CPU調度的最小單位,它可以看作是輕量級的進程,不擁有獨立的地址空
    的頭像 發表于 01-04 10:45 ?743次閱讀
    主站蜘蛛池模板: 色婷婷国产精品视频一区二区三区 | 亚洲色图另类小说| 好大太快了快插穿子宫了| 2021全国精品卡一卡二| 亚洲H成年动漫在线观看不卡| 麻豆成人久久精品二区三区网站| 国产噜噜噜精品免费| 99精品欧美一区二区三区美图| 亚洲欧美日本国产在线观18| 殴美黄色网| 男人脱女人衣服吃奶视频| 国产亚洲欧美在线中文BT天堂网 | 在线综合 亚洲 欧美| 亚洲 欧美 另类 中文 在线| 人妻仑乱少妇88MAV| 开心色99xxxx开心色| 狠狠鲁快播| 国产婷婷一区二区在线观看| 大胸美女被吊起来解开胸罩| 97免费视频观看| 99精品国产福利在线观看| 最近的中文字幕免费完整| 亚洲日本欧美国产在线视| 性色AV一区二区三区咪爱四虎| 日本高清不卡码无码v亚洲| 免费中文字幕视频| 免费一级片网站| 蜜芽视频在线观看视频免费播放 | 67194在线入口免费| 97精品一区二区视频在线观看| 在线天天看片免费视频观看| 又亲又揉摸下面视频免费看| 亚洲野狼综合网站| 最新色导航| 出租屋交换人妻 全文| 国产精品久久久久久久伊一| 国产在线精品一区二区在线看| 精品国产免费人成视频| 蜜柚免费视频高清观看在线| 欧美日韩久久久精品A片| 少妇高潮A视频|