国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系

這篇具有很好參考價(jià)值的文章主要介紹了進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

進(jìn)程:

進(jìn)程是資源分配的最小單位,進(jìn)程是一個(gè)具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。它可以申請(qǐng)和擁有系統(tǒng)資源,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。進(jìn)程是一個(gè)動(dòng)態(tài)的概念,是一個(gè)活動(dòng)的實(shí)體。

“獨(dú)立功能”表示進(jìn)程是面向使用者的定義,它關(guān)心的是要做什么?比如,在電腦上我要寫一篇文章,打開Word。那么計(jì)算機(jī)就會(huì)創(chuàng)建一個(gè)Microsoft Word的進(jìn)程,如果我想同步寫兩篇文章,就要再打開一個(gè)Word,計(jì)算機(jī)就又創(chuàng)建一個(gè)Microsoft Word的進(jìn)程。普通的計(jì)算機(jī)機(jī)可以同步做幾件事情,比如“上網(wǎng)”,“看電影”,“打游戲”,就是說(shuō)可以運(yùn)行很多進(jìn)程。但是嵌入式計(jì)算機(jī)通常設(shè)計(jì)成只做一件事情,比如在汽車領(lǐng)域,整車控制器VCU,發(fā)動(dòng)機(jī)噴油點(diǎn)火控制器ECU,變速箱換擋控制器TCU,車身控制器BCM等。這樣類比,傳統(tǒng)的一個(gè)電子控制單元ECU相當(dāng)于只運(yùn)行一個(gè)進(jìn)程。

線程:

線程是程序執(zhí)行的最小單位,也是處理器調(diào)度的基本單位,是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。

每個(gè)線程都獨(dú)自占用一個(gè)虛擬處理器:獨(dú)自的寄存器組,指令計(jì)數(shù)器和處理器狀態(tài)。每個(gè)線程完成不同的任務(wù),但是共享同一地址空間(也就是同樣的動(dòng)態(tài)內(nèi)存,映射文件,目標(biāo)代碼等等)

當(dāng)我們提及多線程的時(shí)候會(huì)想到thread和threadpool,這都是異步操作,threadpool其實(shí)就是thread的集合,具有很多優(yōu)勢(shì),不過(guò)在任務(wù)多的時(shí)候全局隊(duì)列會(huì)存在競(jìng)爭(zhēng)而消耗資源。thread默認(rèn)為前臺(tái)線程,主程序必須等線程跑完才會(huì)關(guān)閉,而threadpool相反。

小結(jié):threadpool確實(shí)比thread性能優(yōu),但是兩者都沒(méi)有很好的api區(qū)控制,如果線程執(zhí)行無(wú)響應(yīng)就只能等待結(jié)束,從而誕生了task任務(wù)。

對(duì)比進(jìn)程與線程:

  1. 進(jìn)程有自己的獨(dú)立地址空間,每啟動(dòng)一個(gè)進(jìn)程,系統(tǒng)就會(huì)為它分配地址空間,建立數(shù)據(jù)表來(lái)維護(hù)代碼段、堆棧段和數(shù)據(jù)段,這種操作非常昂貴。而線程是共享進(jìn)程中的數(shù)據(jù),使用相同的地址空間,因此,CPU切換一個(gè)線程的花費(fèi)遠(yuǎn)比進(jìn)程小很多,同時(shí)創(chuàng)建一個(gè)線程的開銷也比進(jìn)程小很多。
  2. 線程之間的通信更方便,同一進(jìn)程下的線程共享全局變量、靜態(tài)變量等數(shù)據(jù),而進(jìn)程之間的通信需要以通信的方式進(jìn)行(如隊(duì)列,信號(hào),管道,接套字等)。不過(guò)如何處理好同步與互斥是編寫多線程程序的難點(diǎn)。但是多進(jìn)程程序更健壯,多線程程序只要有一個(gè)線程死掉,整個(gè)進(jìn)程也跟著死掉了,而一個(gè)進(jìn)程死掉并不會(huì)對(duì)另外一個(gè)進(jìn)程造成影響,因?yàn)檫M(jìn)程有自己獨(dú)立的地址空間。
  3. 進(jìn)程切換時(shí),消耗的資源大,效率高。所以涉及到頻繁的切換時(shí),使用線程要好于進(jìn)程。同樣如果要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程不能用進(jìn)程。

Core:

可以理解為就是ECU,一個(gè)核就代表一個(gè)進(jìn)程。多核就是多個(gè)ECU。也就是說(shuō)在多核的情況下,可以執(zhí)行多進(jìn)程。

不論是進(jìn)程還是線程,一個(gè)cpu核一個(gè)時(shí)刻就只能干一件事,所以一個(gè)cpu核處理多個(gè)線程或者進(jìn)程的話,都是并發(fā);

對(duì)于多核心的架構(gòu),由于共用一套MMU和cache,所以地址空間是一個(gè),同一時(shí)刻只能運(yùn)行一個(gè)進(jìn)程,此時(shí)進(jìn)程不能并行只能并發(fā)。同一個(gè)進(jìn)程下的多線程可以并行執(zhí)行,因?yàn)槎嗑€程共享同一套進(jìn)程空間資源。

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

OS Application:

說(shuō)明1:Task、Interrupt、Alarm、schedule Table、Resource、Event 我們稱他們叫對(duì)象(Object)

說(shuō)明2:【OS 包含1~N個(gè)Core】->【1個(gè)Core 包含1~N個(gè)Application,相當(dāng)于一個(gè)core可以運(yùn)行多個(gè)進(jìn)程,一般AUTOSAR Aurix定義兩個(gè)進(jìn)程,一個(gè)trusted,一個(gè)nontrusted】->【1個(gè)Application 包含0~N個(gè)Object,也就是一個(gè)OS-Application包括多個(gè)任務(wù)Task】

不論是進(jìn)程還是線程,一個(gè)cpu核一個(gè)時(shí)刻就只能干一件事,所以一個(gè)cpu核處理多個(gè)線程或者進(jìn)程的話,都是并發(fā);

AUTOSAR OS必須能夠支持構(gòu)成一個(gè)有多功能單元的Operating System objects (Tasks, ISRs, Alarms, Schedule tables, Counters)的集合。此對(duì)象集合稱為 OS-Application

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

OS Application分為兩類,一類是Trusted, 一類是Non-Trusted

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

對(duì)于Trusted OS Application,可以運(yùn)行在監(jiān)控或保護(hù)功能關(guān)閉的情況下,對(duì)于內(nèi)存或者OS Api的訪問(wèn)沒(méi)有限制;如果處理器支持,可以運(yùn)行在特權(quán)模式,OS默認(rèn)Trusted類型的OS Application不會(huì)引發(fā)內(nèi)存相關(guān)故障,如果發(fā)生了內(nèi)存故障,系統(tǒng)穩(wěn)定性將不再保證,可能需要關(guān)閉OS。

對(duì)于Non-Trusted OS Application,不允許關(guān)閉監(jiān)控或保護(hù)功能,對(duì)于內(nèi)存或OS Api的訪問(wèn)也受權(quán)限控制,也不允許運(yùn)行在特權(quán)模式。對(duì)于non-trusted OS Application,操作系統(tǒng)會(huì)保護(hù)MPU,timer,中斷控制器等控制寄存器,不允許修改。如果需要修改這些寄存器,那么OS服務(wù)必須執(zhí)行在特權(quán)模式。如果ISR Handler在non-trusted OS Application中,那么OS需要在ISR() wrapper中先切換到非特權(quán)模式,再執(zhí)行ISR handler。

task:

在嵌入式操作系統(tǒng)里,任務(wù)就是線程的意思。
AUTOSAR OS中存在兩種任務(wù):基本任務(wù)(Basic Task)和擴(kuò)展任務(wù)(Extended Task)?;救蝿?wù)則存在以下三種狀態(tài):

運(yùn)行狀態(tài)(Running):

處于運(yùn)行狀態(tài)的任務(wù)可能被高優(yōu)先級(jí)任務(wù)或者中斷搶占從而進(jìn)入就緒狀態(tài),且同一Core中任何時(shí)刻只會(huì)存在一個(gè)任務(wù)處于運(yùn)行狀態(tài),任務(wù)運(yùn)行結(jié)束后則將自己掛起進(jìn)入阻塞狀態(tài);

就緒狀態(tài)(Ready):?

處于就緒狀態(tài)的任務(wù)由調(diào)度器決定是否啟動(dòng)進(jìn)入運(yùn)行狀態(tài),且該狀態(tài)時(shí)任務(wù)切換至運(yùn)行狀態(tài)的前提;

阻塞狀態(tài)(Suspend):?

處于阻塞狀態(tài)的任務(wù)是被動(dòng)的,可以由API函數(shù)或Alarm激活進(jìn)入就緒狀態(tài);

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

擴(kuò)展任務(wù)與之相比,則多了一個(gè)等待狀態(tài)(Waiting),解釋如下:

等待狀態(tài)(Waiting):

當(dāng)任務(wù)的運(yùn)行需要等待某一或某些事件被置位時(shí),任務(wù)進(jìn)入就緒狀態(tài)。

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

Task調(diào)度策略:

AUTOSAR OS是基于優(yōu)先級(jí)進(jìn)行任務(wù)吊物,所以每個(gè)任務(wù)必定有一個(gè)優(yōu)先級(jí),而每個(gè)任務(wù)都是根據(jù)其自身特點(diǎn)來(lái)定義一個(gè)優(yōu)先級(jí)且需要配置其可搶占屬性。

可搶占屬性可分為不可搶占與全搶占,這里所說(shuō)的搶占指的是內(nèi)核搶占。AUTOSAR OS可根據(jù)各個(gè)任務(wù)的可搶占屬性配置,來(lái)提供不同的調(diào)度策略,調(diào)度策略可分為以下三種:

  1. 完全搶占式:OS所有任務(wù)均是可搶占類型;
  2. 非搶占式:OS中所有任務(wù)均是不可搶占的;
  3. 混合搶占式:OS部分任務(wù)是可搶占類型,部分任務(wù)是不可搶占類型;

event:

OS中的Event 主要用于為Extended Task 提供多個(gè)同步點(diǎn),每個(gè)Event 可以關(guān)聯(lián)多個(gè)Task

自由調(diào)度:

自由調(diào)度一般task的類型配置為EXTENDED,這種調(diào)度方式主要跟runnable綁定alarm,通過(guò)alarm觸發(fā)event,event觸發(fā)pending的task來(lái)執(zhí)行task

如下實(shí)列代碼可以展示自由調(diào)度中EXTENED類型的task的執(zhí)行過(guò)程

Task(DIAG)
{
	while(1)
   {
	   waitevent(eventA);
	   if(eventA)
	   {
	       runnable();
	   }
	 }
}

WaitEvent:

只要表達(dá)式中任意一個(gè)EVENT 被收到,Task state則切換至Ready, 等待調(diào)度表按照優(yōu)先級(jí)進(jìn)行調(diào)度

SetEvent:

為指定的Task 設(shè)置Event

GetEvent:

獲取指定Task當(dāng)前接收到的所有EVENT

ClearEvent:

當(dāng)Event被Task處理完成之后,需要進(jìn)行Clear

Runnable & SWC & port:

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

Runnable就是一個(gè)函數(shù),SWC是應(yīng)用層單元模塊.,例如上圖SWC2是接收數(shù)據(jù)的功能模塊,里面包含了三個(gè)函數(shù),也就是3個(gè)runnable

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

一個(gè)TASK包含多個(gè)SWC

進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系,AUTOSAR,嵌入式硬件

Port是依附在SWC上的概念,比如配置工具配置SWC后,需要配置這個(gè)SWC的Port。其實(shí)也好理解,如果一個(gè)C文件孤零零的放在那里,與別的C文件沒(méi)有任何數(shù)據(jù)交互,那么作為一套代碼中的一個(gè)C文件,根本沒(méi)法發(fā)揮作用,所以必然在SWC上需要配置上或者輸入(R-Port)的或者輸出(P-Port)的Port。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-694492.html

到了這里,關(guān)于進(jìn)程、線程、Core、OS Application、task、event、runnable、SWC、port的區(qū)別與聯(lián)系的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot - Application Events 的發(fā)布順序_ApplicationStartingEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationStartingEvent

    Spring Boot 的廣播機(jī)制是基于觀察者模式實(shí)現(xiàn)的,它允許在 Spring 應(yīng)用程序中發(fā)布和監(jiān)聽事件。這種機(jī)制的主要目的是為了實(shí)現(xiàn)解耦,使得應(yīng)用程序中的不同組件可以獨(dú)立地改變和復(fù)用邏輯,而無(wú)需直接進(jìn)行通信。 在 Spring Boot 中,事件發(fā)布和監(jiān)聽的機(jī)制是通過(guò) ApplicationEvent 、

    2024年01月23日
    瀏覽(19)
  • Spring Boot - Application Events 的發(fā)布順序_ApplicationFailedEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationFailedEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent Spring Boot 的廣播機(jī)制是基于觀察者模式實(shí)現(xiàn)的,它允許在 Spring 應(yīng)用程序中發(fā)布和監(jiān)聽事件。這種機(jī)制的主要目的是為了實(shí)現(xiàn)解耦,使得應(yīng)用程序中的不同組件可以獨(dú)立地改變和復(fù)用邏輯,而無(wú)需直接進(jìn)行通信。

    2024年01月16日
    瀏覽(19)
  • Spring Boot - Application Events 的發(fā)布順序_AvailabilityChangeEvent

    Spring Boot - Application Events 的發(fā)布順序_AvailabilityChangeEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent Spring Boot 的廣播機(jī)制是基于觀察者模式實(shí)現(xiàn)的,它允許在 Spring 應(yīng)用程序中發(fā)布和監(jiān)聽事件。這種機(jī)制的主要目的是為了實(shí)現(xiàn)解耦,使得應(yīng)用程序中的不同組件可以獨(dú)立地改變和復(fù)用邏輯,而無(wú)需直接進(jìn)行通信。

    2024年01月22日
    瀏覽(22)
  • Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent Spring Boot 的廣播機(jī)制是基于觀察者模式實(shí)現(xiàn)的,它允許在 Spring 應(yīng)用程序中發(fā)布和監(jiān)聽事件。這種機(jī)制的主要目的是為了實(shí)現(xiàn)解耦,使得應(yīng)用程序中的不同組件可以獨(dú)立地改變和復(fù)用邏輯,而無(wú)需直接進(jìn)行通信。

    2024年02月02日
    瀏覽(43)
  • Spring Boot - Application Events 的發(fā)布順序_ApplicationContextInitializedEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationContextInitializedEvent

    Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent Spring Boot 的廣播機(jī)制是基于觀察者模式實(shí)現(xiàn)的,它允許在 Spring 應(yīng)用程序中發(fā)布和監(jiān)聽事件。這種機(jī)制的主要目的是為了實(shí)現(xiàn)解耦,使得應(yīng)用程序中

    2024年01月17日
    瀏覽(14)
  • Spring Boot - Application Events 同步 VS 異步 發(fā)布訂閱事件實(shí)戰(zhàn)

    Spring Boot - Application Events 同步 VS 異步 發(fā)布訂閱事件實(shí)戰(zhàn)

    Spring Boot - Application Events 的發(fā)布順序_ApplicationStartingEvent Spring Boot - Application Events 的發(fā)布順序_ApplicationEnvironmentPreparedEvent Spring Boot - Application Events 的發(fā)布順序_ApplicationContextInitializedEvent Spring Boot - Application Events 的發(fā)布順序_ApplicationPreparedEvent Spring Boot - Application Events 的發(fā)布順

    2024年01月17日
    瀏覽(21)
  • 【Java練習(xí)題匯總】《第一行代碼JAVA》多線程篇,匯總Java練習(xí)題——線程及多線程概念、Thread 類及 Runnable 接口、線程狀態(tài)、synchronized同步操作...

    【Java練習(xí)題匯總】《第一行代碼JAVA》多線程篇,匯總Java練習(xí)題——線程及多線程概念、Thread 類及 Runnable 接口、線程狀態(tài)、synchronized同步操作...

    一、填空題 Java 多線程可以依靠________ 、________ 和________ 三種方式實(shí)現(xiàn)。 多個(gè)線程操作同一資源的時(shí)候需要注意________,依靠________ 實(shí)現(xiàn),實(shí)現(xiàn)手段是:________ 和________,過(guò)多的使用,則會(huì)出現(xiàn)________ 問(wèn)題。 Java 程序運(yùn)行時(shí),至少啟動(dòng)________ 個(gè)線程,分別是________ 和_

    2024年02月16日
    瀏覽(24)
  • Python 多線程 Event

    Event 是一個(gè)事務(wù)處理的機(jī)制,用于通知多個(gè)異步任務(wù)某個(gè)事件已經(jīng)發(fā)生了。比如在交通紅綠燈中多輛在行駛中的汽車可以表示成程序中的多個(gè)異步任務(wù),紅綠燈的亮起可以表示成一個(gè)通知,紅燈通知這個(gè)汽車的行駛?cè)蝿?wù)必須停止了,綠燈通知這個(gè)汽車的行駛?cè)蝿?wù)可以繼續(xù)駕駛

    2024年02月08日
    瀏覽(17)
  • 進(jìn)程的概念 | PCB | Linux下的task_struct | 父子進(jìn)程和子進(jìn)程

    進(jìn)程的概念 | PCB | Linux下的task_struct | 父子進(jìn)程和子進(jìn)程

    ?在講進(jìn)程之前首先就是需要去回顧一下我們之前學(xué)的操作系統(tǒng)是干嘛的,首先操作系統(tǒng)是一個(gè)軟件,它是對(duì)上提供一個(gè)良好高效,穩(wěn)定的環(huán)境的,這是相對(duì)于用戶來(lái)說(shuō)的,對(duì)下是為了進(jìn)行更好的軟硬件管理的,所以操作系統(tǒng)是一個(gè)進(jìn)行軟硬件管理的軟件。 實(shí)際上我們的硬盤

    2024年03月20日
    瀏覽(27)
  • 如何讓Task在非線程池線程中執(zhí)行?

    如何讓Task在非線程池線程中執(zhí)行?

    Task承載的操作需要被調(diào)度才能被執(zhí)行,由于.NET默認(rèn)采用基于線程池的調(diào)度器,所以Task默認(rèn)在線程池線程中執(zhí)行。但是有的操作并不適合使用線程池,比如我們?cè)谝粋€(gè)ASP.NET Core應(yīng)用中承載了一些需要長(zhǎng)時(shí)間執(zhí)行的后臺(tái)操作,由于線程池被用來(lái)處理HTTP請(qǐng)求,如果這些后臺(tái)操作也

    2024年02月06日
    瀏覽(13)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包