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

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

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

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

zhangxiaognag ? 來源:zhangxiaognag ? 作者:zhangxiaognag ? 2023-06-06 11:52 ? 次閱讀

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

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

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


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

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

1.4 線程
線程則是某一進(jìn)程中一路單獨運(yùn)行的程序。也就是說,線程存在于進(jìn)程之中。一個進(jìn)程由一個或多個線程構(gòu)成,各線程共享相同的代碼和全局?jǐn)?shù)據(jù),但各有其自己的堆棧。由于堆棧是每個線程一個,所以局部變量對每一線程來說是私有的。由于所有線程共享同樣的代碼和全局?jǐn)?shù)據(jù),它們比進(jìn)程更緊密,比單獨的進(jìn)程間更趨向于相互作用,線程間的相互作用更容易些,因為它們本身就有某些供通信用的共享內(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 的例子“多通道電源控制”項目。這里面的“多通道電源控制”的這個大任務(wù),如果把它當(dāng)作一個進(jìn)程的話,那么它下面 5 個小任務(wù)就可以理解為我們的線程(子任務(wù))。線程可以在處理器上獨立調(diào)度執(zhí)行,這樣,在多處理器環(huán)境下就允許幾個線程各自在單獨處理器上進(jìn)行。操作系統(tǒng)提供線程就是為了方便而有效地實現(xiàn)這種并發(fā)性,當(dāng)然在單處理器上的線程,其實從宏觀角度來看也是并行執(zhí)行的。

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

pYYBAGR93OGAN_BBAADS75DRFTk820.png

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


郵箱:TianjiStar.work@outlook.com

審核編輯:湯梓紅


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

    關(guān)注

    68

    文章

    10780

    瀏覽量

    210511
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

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

    關(guān)注

    0

    文章

    502

    瀏覽量

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

    關(guān)注

    0

    文章

    200

    瀏覽量

    13933
收藏 人收藏

    評論

    相關(guān)推薦

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

    看到有小伙伴在討論【RTOS任務(wù)屬于線程還是進(jìn)程】的話題,這里就來分析一下OS中的線程、進(jìn)程和協(xié)
    的頭像 發(fā)表于 11-09 12:36 ?1746次閱讀
    <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 ?824次閱讀
    <b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的<b class='flag-5'>概念</b>及其區(qū)別

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

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

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

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

    【MiCOKit試用體驗】慶科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

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

    個提問,然后上面的定義是百度的。按照定義任務(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)和事件列表(比如隊列,信號量等中的阻塞事件列表)。這些操作是在各個API 函數(shù)中的,綜合起來感覺還是有些霧水?,F(xiàn)在遇到一個問題麻煩大佬
    發(fā)表于 06-13 09:00

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

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

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

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

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

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

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

    今天為大家講解講解OS中的線程進(jìn)程和協(xié)程的這幾個概念,同時一起看看RTOS中的任務(wù)到底屬于哪一種。
    的頭像 發(fā)表于 04-19 10:06 ?3115次閱讀
    淺析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. 課程重點系統(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é)程的這幾個概念,同時一起看看RTOS中的任務(wù)到底屬于哪一種。
    的頭像 發(fā)表于 06-04 17:19 ?1579次閱讀
    <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的價值在于它的響應(yīng)速度或可預(yù)測性,而不是它在給定時間段內(nèi)可以執(zhí)行的工作量。
    發(fā)表于 03-05 09:32 ?472次閱讀
    基于<b class='flag-5'>RTOS</b>的應(yīng)用<b class='flag-5'>進(jìn)程</b>中的典型<b class='flag-5'>線程</b>