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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RTOS入門之掃盲篇-理解任務(wù)、線程、進(jìn)程的概念

zhangxiaognag ? 來(lái)源:zhangxiaognag ? 作者:zhangxiaognag ? 2023-06-06 11:52 ? 次閱讀

在我們實(shí)際開發(fā)或者構(gòu)思項(xiàng)目的過程中,會(huì)根據(jù)產(chǎn)品的定義或者客戶需求對(duì)產(chǎn)品的功能上進(jìn)行分解從而轉(zhuǎn)換成我們軟件的開發(fā)的概要設(shè)計(jì)需求表現(xiàn),比如我們需要做一個(gè)多路可調(diào)的電源輸出并且可以通過 PC 端控制電源的當(dāng)前輸出以及實(shí)時(shí)顯示當(dāng)前的輸出電壓和電流,但是接上負(fù)載之后可能由于線阻問題可能會(huì)導(dǎo)致負(fù)載端的電壓低于實(shí)際輸出端的電壓,所以還需要一個(gè)負(fù)載端(遠(yuǎn)端)的電壓補(bǔ)償功能,如下圖1所示:

pYYBAGR929qAVE2uAAECGzy8z88824.png圖1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2

1.1 任務(wù)定義
在上述圖 1 和圖 2 的設(shè)計(jì)模塊的功能圖和功能關(guān)系圖之后,此時(shí)我們可以通過上述圖能發(fā)現(xiàn)哪些功能或者說(shuō)模塊需要設(shè)計(jì)的,其實(shí)這里的“多通道電源控制”就是我們的“任務(wù)”?,F(xiàn)在我們把這個(gè)大的任務(wù)已經(jīng)分解開上述圖 1 所示的 5 個(gè)小功能,這個(gè) 5 個(gè)小的功能咱們也可以稱之為任務(wù)。


1.2 觀察者角度
所以這里我們軟件上對(duì)“ 任務(wù)” 的理解,其實(shí)它是我們對(duì)所要做的一件事情從某種角度上的抽象出來(lái)的一功能或者一個(gè)執(zhí)行活動(dòng)。 這里面為什么是從某種角度呢?這個(gè)很好理解,就是通常我們看到一個(gè)事情可以有很多方面去觀察的,比如事物的功能去劃分觀察,又或者是對(duì)事物的顏色或者活動(dòng)狀態(tài)去劃分。所以在我們軟件開發(fā)過程中“某種角度”也就是說(shuō)觀察者的觀察方向很重要,因?yàn)樗苯拥挠绊懙搅宋覀兊能浖K劃分以及后續(xù)針對(duì)這個(gè)模塊進(jìn)行線程或者進(jìn)程的執(zhí)行有著直接影響。

1.3 操作系統(tǒng)的調(diào)度
這里面我們不得不說(shuō)些關(guān)于操作系統(tǒng)的調(diào)度這個(gè)概念了, 當(dāng)有一堆任務(wù)需要被處理,但由于資源有限,比如說(shuō)只有一臺(tái)打印機(jī),現(xiàn)在有很多人都需要打印各自的文檔那怎么辦呢?現(xiàn)在的資源(打印機(jī))只有一個(gè),但任務(wù)(很多人需要打印)比較多。 這就需要確定某種規(guī)則來(lái)決定處理這些任務(wù),這就是調(diào)度要做的事情了。 現(xiàn)在回到我們的 CPU 上,就拿現(xiàn)在的單核 CPU, CPU 在同一個(gè)時(shí)間點(diǎn)只能做一件事情,那它是如何處理多件不同的事情呢? 這里一般情況分為搶占式和時(shí)間片式的調(diào)度方式,當(dāng)然還有很多其它的調(diào)度算法,咱們只是
了解即可。

1.4 線程
線程則是某一進(jìn)程中一路單獨(dú)運(yùn)行的程序。也就是說(shuō),線程存在于進(jìn)程之中。一個(gè)進(jìn)程由一個(gè)或多個(gè)線程構(gòu)成,各線程共享相同的代碼和全局?jǐn)?shù)據(jù),但各有其自己的堆棧。由于堆棧是每個(gè)線程一個(gè),所以局部變量對(duì)每一線程來(lái)說(shuō)是私有的。由于所有線程共享同樣的代碼和全局?jǐn)?shù)據(jù),它們比進(jìn)程更緊密,比單獨(dú)的進(jìn)程間更趨向于相互作用,線程間的相互作用更容易些,因?yàn)樗鼈儽旧砭陀心承┕?a target="_blank">通信用的共享內(nèi)存:進(jìn)程的全局?jǐn)?shù)據(jù)。線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位,亦即執(zhí)行處理機(jī)調(diào)度的基本單位。 如果把進(jìn)程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一。 還是列舉上述圖 1 的例子“多通道電源控制”項(xiàng)目。這里面的“多通道電源控制”的這個(gè)大任務(wù),如果把它當(dāng)作一個(gè)進(jìn)程的話,那么它下面 5 個(gè)小任務(wù)就可以理解為我們的線程(子任務(wù))。線程可以在處理器上獨(dú)立調(diào)度執(zhí)行,這樣,在多處理器環(huán)境下就允許幾個(gè)線程各自在單獨(dú)處理器上進(jìn)行。操作系統(tǒng)提供線程就是為了方便而有效地實(shí)現(xiàn)這種并發(fā)性,當(dāng)然在單處理器上的線程,其實(shí)從宏觀角度來(lái)看也是并行執(zhí)行的。

1.5 進(jìn)程
進(jìn)程是表示資源分配的基本單位,又是調(diào)度運(yùn)行的基本單位。例如,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、 I/O 設(shè)備等。然后,把該進(jìn)程放人進(jìn)程的就緒隊(duì)列。進(jìn)程調(diào)度程序選中它,為它分配 CPU 以及其它有關(guān)資源,該進(jìn)程才真正運(yùn)行。所以,進(jìn)程是系統(tǒng)中的并發(fā)執(zhí)行的單位。一個(gè)進(jìn)程和一個(gè)線程最顯著的區(qū)別是:線程有自己的全局?jǐn)?shù)據(jù)。線程存在于進(jìn)程中,因此一個(gè)進(jìn)程的全局變量由所有的線程共享。由于線程共享同樣的系統(tǒng)區(qū)域,操作系統(tǒng)分配給一個(gè)進(jìn)程的資源對(duì)該進(jìn)程的所有線程都是可用的,正如全局?jǐn)?shù)據(jù)可供所有線程使用一樣。

pYYBAGR93OGAN_BBAADS75DRFTk820.png

poYBAGR93TKAByUXAA0UFMzfick296.png實(shí)戰(zhàn)項(xiàng)目應(yīng)用


郵箱:TianjiStar.work@outlook.com

審核編輯:湯梓紅


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

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209406
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61730
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    19580
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    197

    瀏覽量

    13928
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RTOS中的線程、進(jìn)程和協(xié)程詳解

    看到有小伙伴在討論【RTOS任務(wù)屬于線程還是進(jìn)程】的話題,這里就來(lái)分析一下OS中的線程、進(jìn)程和協(xié)
    的頭像 發(fā)表于 11-09 12:36 ?1583次閱讀
    <b class='flag-5'>RTOS</b>中的<b class='flag-5'>線程</b>、<b class='flag-5'>進(jìn)程</b>和協(xié)程詳解

    進(jìn)程線程概念及其區(qū)別

    今天浩道跟大家分享一關(guān)于進(jìn)程線程之間關(guān)聯(lián)的硬核干貨,看看大神如何通過通俗易懂的圖文,讓大家更加深刻理解進(jìn)程
    的頭像 發(fā)表于 11-21 10:50 ?772次閱讀
    <b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的<b class='flag-5'>概念</b>及其區(qū)別

    深入理解和實(shí)現(xiàn)RTOS_連載

    ,那里有更詳細(xì)的注釋,而且是全中文的。深入理解和實(shí)現(xiàn)RTOS_連載5_多任務(wù)機(jī)制應(yīng)用演示本節(jié)我們通過在評(píng)估板上的實(shí)例來(lái)演示有關(guān)線程調(diào)度和管理的API。因?yàn)槊總€(gè)例子中都包括了
    發(fā)表于 05-29 11:20

    深入理解和實(shí)現(xiàn)RTOS_連載

    和trcohili的帖子。trochili rtos完全是作者興趣所在,且行且堅(jiān)持,比沒有duo。深入理解和實(shí)現(xiàn)RTOS_連載1_RTOS的前生今世今天發(fā)布的是第一
    發(fā)表于 05-30 01:02

    【MiCOKit試用體驗(yàn)】慶科MiCO系統(tǒng)(1)MiCO RTOS線程

    2mico_rtos_delete_thread刪除進(jìn)程,使進(jìn)入終止?fàn)顟B(tài),并在IDLE線程中清除資源3mico_rtos_suspend_
    發(fā)表于 10-24 16:26

    進(jìn)程線程的通俗解釋

    本帖最后由 檸檬守護(hù) 于 2016-8-10 17:42 編輯 進(jìn)程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一
    發(fā)表于 08-10 17:31

    請(qǐng)問uCOS-II中的任務(wù)進(jìn)程還是線程?

    個(gè)提問,然后上面的定義是百度的。按照定義任務(wù)應(yīng)該是進(jìn)程。有沒大佬從rtos的角度剖析一下進(jìn)程線程的區(qū)別。
    發(fā)表于 06-03 05:07

    理解任務(wù)切換和任務(wù)狀態(tài)改變的關(guān)鍵是什么?

    理解任務(wù)調(diào)度與切換的關(guān)鍵是從代碼層面理解各種列表的操作邏輯思路:狀態(tài)列表(Running,Ready,Blocked,Suspended)和事件列表(比如隊(duì)列,信號(hào)量等中的阻塞事件列表)。這些操作是在各個(gè)API 函數(shù)中的,綜合起來(lái)感覺還是有些霧水。現(xiàn)在遇到一個(gè)問題麻煩大佬
    發(fā)表于 06-13 09:00

    【資料】RT-Threa操作系統(tǒng)中任務(wù)概念及實(shí)現(xiàn)任務(wù)所用到的數(shù)據(jù)結(jié)構(gòu)

    。因?yàn)樵赗T-Thread操作系統(tǒng)中不會(huì)區(qū)分進(jìn)程線程概念,因此可以理解為CPU可執(zhí)行的最基本實(shí)例。如果你一定要用進(jìn)程
    發(fā)表于 03-23 15:11

    進(jìn)程與多線程的基本概念

    ,如此往復(fù),宏觀上看來(lái),就好像是多個(gè)線程在一起執(zhí)行.由于這多個(gè)線程分屬于不同的進(jìn)程,因此在我們看來(lái),就好像是多個(gè)進(jìn)程在同時(shí)執(zhí)行,這樣就實(shí)現(xiàn)了多任務(wù)
    發(fā)表于 04-02 14:49 ?711次閱讀

    LEDs狀態(tài)燈任務(wù)(線程)設(shè)計(jì) (基于RTOS

    LEDs狀態(tài)燈任務(wù)(線程)設(shè)計(jì)(基于RTOS
    的頭像 發(fā)表于 03-12 11:30 ?2200次閱讀

    淺析OS中的線程、進(jìn)程和協(xié)程與RTOS任務(wù)屬于那種

    今天為大家講解講解OS中的線程、進(jìn)程和協(xié)程的這幾個(gè)概念,同時(shí)一起看看RTOS中的任務(wù)到底屬于哪一種。
    的頭像 發(fā)表于 04-19 10:06 ?3035次閱讀
    淺析OS中的<b class='flag-5'>線程</b>、<b class='flag-5'>進(jìn)程</b>和協(xié)程與<b class='flag-5'>RTOS</b><b class='flag-5'>任務(wù)</b>屬于那種

    RTOS的最通俗理解】行業(yè)大佬用一文章帶你快速理解RTOS

    電子產(chǎn)品2.2 要深入理解RTOS就必須深入理解CPU架構(gòu)3. 課程重點(diǎn)系統(tǒng)課程學(xué)習(xí) 5分鐘拿下你的三連,RTOS
    發(fā)表于 12-20 19:08 ?17次下載
    【<b class='flag-5'>RTOS</b>的最通俗<b class='flag-5'>理解</b>】行業(yè)大佬用一<b class='flag-5'>篇</b>文章帶你快速<b class='flag-5'>理解</b><b class='flag-5'>RTOS</b>

    RTOS中的任務(wù)線程?進(jìn)程?還是協(xié)程?

    今天為大家講解講解OS中的線程、進(jìn)程和協(xié)程的這幾個(gè)概念,同時(shí)一起看看RTOS中的任務(wù)到底屬于哪一種。
    的頭像 發(fā)表于 06-04 17:19 ?1473次閱讀
    <b class='flag-5'>RTOS</b>中的<b class='flag-5'>任務(wù)</b>是<b class='flag-5'>線程</b>?<b class='flag-5'>進(jìn)程</b>?還是協(xié)程?

    基于RTOS的應(yīng)用進(jìn)程中的典型線程

    RTOS中的關(guān)鍵因素是最小的中斷延遲和最小的線程切換延遲。RTOS的價(jià)值在于它的響應(yīng)速度或可預(yù)測(cè)性,而不是它在給定時(shí)間段內(nèi)可以執(zhí)行的工作量。
    發(fā)表于 03-05 09:32 ?416次閱讀
    基于<b class='flag-5'>RTOS</b>的應(yīng)用<b class='flag-5'>進(jìn)程</b>中的典型<b class='flag-5'>線程</b>