在我們實(shí)際開(kāi)發(fā)或者構(gòu)思項(xiàng)目的過(guò)程中,會(huì)根據(jù)產(chǎn)品的定義或者客戶(hù)需求對(duì)產(chǎn)品的功能上進(jìn)行分解從而轉(zhuǎn)換成我們軟件的開(kāi)發(fā)的概要設(shè)計(jì)需求表現(xiàn),比如我們需要做一個(gè)多路可調(diào)的電源輸出并且可以通過(guò) PC 端控制電源的當(dāng)前輸出以及實(shí)時(shí)顯示當(dāng)前的輸出電壓和電流,但是接上負(fù)載之后可能由于線阻問(wèn)題可能會(huì)導(dǎo)致負(fù)載端的電壓低于實(shí)際輸出端的電壓,所以還需要一個(gè)負(fù)載端(遠(yuǎn)端)的電壓補(bǔ)償功能,如下圖1所示:
1.1 任務(wù)定義
在上述圖 1 和圖 2 的設(shè)計(jì)模塊的功能圖和功能關(guān)系圖之后,此時(shí)我們可以通過(guò)上述圖能發(fā)現(xiàn)哪些功能或者說(shuō)模塊需要設(shè)計(jì)的,其實(shí)這里的“多通道電源控制”就是我們的“任務(wù)”。現(xiàn)在我們把這個(gè)大的任務(wù)已經(jīng)分解開(kāi)上述圖 1 所示的 5 個(gè)小功能,這個(gè) 5 個(gè)小的功能咱們也可以稱(chēng)之為任務(wù)。
1.2 觀察者角度
所以這里我們軟件上對(duì)“ 任務(wù)” 的理解,其實(shí)它是我們對(duì)所要做的一件事情從某種角度上的抽象出來(lái)的一功能或者一個(gè)執(zhí)行活動(dòng)。 這里面為什么是從某種角度呢?這個(gè)很好理解,就是通常我們看到一個(gè)事情可以有很多方面去觀察的,比如事物的功能去劃分觀察,又或者是對(duì)事物的顏色或者活動(dòng)狀態(tài)去劃分。所以在我們軟件開(kāi)發(fā)過(guò)程中“某種角度”也就是說(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)程的話(huà),那么它下面 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)行的基本單位。例如,用戶(hù)運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤(pán)空間、 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ù)可供所有線程使用一樣。
實(shí)戰(zhàn)項(xiàng)目應(yīng)用
郵箱:TianjiStar.work@outlook.com
-
cpu
+關(guān)注
關(guān)注
68文章
10878瀏覽量
212167 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62226 -
線程
+關(guān)注
關(guān)注
0文章
505瀏覽量
19705 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
203瀏覽量
13965
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論