999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式實時操作系統(tǒng)的實時進程機制研究

2022-06-02 11:23:44楊弋仝敏衛(wèi)一芃
中國新通信 2022年6期
關(guān)鍵詞:進程嵌入式故障

楊弋 仝敏 衛(wèi)一芃

【摘要】? ? 為了滿足嵌入式操作系統(tǒng)對空間保護、隔離故障、防止故障蔓延、空間和資源之間的分離保護機制等能力,本文在嵌入式操作系統(tǒng)中提出了實時進程的概念。通過研究實時進程的功能架構(gòu)、實時進程的資源管理、空間管理劃分及映射、實時進程的通信、運行方式等功能,剖析了實時進程在嵌入式操作系統(tǒng)與UNIX/Linux等傳統(tǒng)桌面系統(tǒng)的功能差異,以及不同于傳統(tǒng)進程模型的功能特點。隨著嵌入式實時操作系統(tǒng)在各個領(lǐng)域應(yīng)用越來越廣泛,越來越多的新技術(shù)的應(yīng)用都需要高可靠實時性強高安全的系統(tǒng)作為技術(shù)支撐,實時進程機制將在嵌入式實時操作系統(tǒng)中發(fā)揮關(guān)鍵作用。

【關(guān)鍵詞】? ? 嵌入式實時操作系統(tǒng)? ? 實時進程

引言:

嵌入式操作系統(tǒng)產(chǎn)品出現(xiàn)于20世紀80年代初,從最初的只有一個微內(nèi)核到發(fā)展到現(xiàn)在成了一個具有龐大生態(tài)的復(fù)雜系統(tǒng)。早期的嵌入式操作系統(tǒng)的應(yīng)用場景單一,功能簡單,嵌入式硬件的結(jié)構(gòu)和功能也相對單一,應(yīng)用的開發(fā)人員甚至不需要使用操作系統(tǒng)就可以完成一個產(chǎn)品的研發(fā);早期的嵌入式操作系統(tǒng)與應(yīng)用之間并沒有空間和資源之間的分離保護機制,這種特性具有更好的靈活性與性能,但隨著嵌入式操作系統(tǒng)的發(fā)展,以及應(yīng)用場景逐漸復(fù)雜,原有的操作系統(tǒng)架構(gòu)已經(jīng)不能夠很好的支撐當下的應(yīng)用場景。在面向航空、航天、核電、軌道交通等強實時性高安全領(lǐng)域,系統(tǒng)集成復(fù)雜度的提升,帶來的就是應(yīng)用與系統(tǒng)的確定性和穩(wěn)定性的下降。隨著空間保護、隔離故障防止故障蔓延的概念的提出,近年來一些新型的嵌入式實時操作操作系統(tǒng)提出了實時進程(Real Time Process)的機制,該機制實現(xiàn)了應(yīng)用與應(yīng)用、應(yīng)用與操作系統(tǒng)空間隔離的能力。實時進程能力不僅可以保證應(yīng)用程序的故障不會蔓延到其他應(yīng)用程序及核心,同時可以滿足應(yīng)用程序?qū)τ趯崟r性的要求。本文主要介紹在嵌入式實時操作系統(tǒng)中的實時進程的主要能力及特點。

一、實時進程的功能組成

(一)實時進程的結(jié)構(gòu)

操作系統(tǒng)管理和分配資源的基本單位為進程,[1]進程運行在用戶態(tài),每個進程都包含獨立的地址空間,其中存放了應(yīng)用程序所需的代碼段、數(shù)據(jù)段、堆棧以及進程的相關(guān)資源(線程、信號量、消息隊列等),進程內(nèi)可以創(chuàng)建若干線程。對于傳統(tǒng)的桌面系統(tǒng),例如Linux/Unix,進程除了管理用戶程序的空間和對象資源外,其本身也參與調(diào)度,而根據(jù)進程的調(diào)度屬性,又可將進程分為實時進程與普通進程,其中普通進程的調(diào)度策略為CFS策略,[2]即公平調(diào)度原則策略;實時進程的調(diào)度策略為基于優(yōu)先級搶占的先來先服務(wù)調(diào)度策略。本文探討的嵌入式實時操作系統(tǒng)中的實時進程框架與上文描述的進程框架略有不同,首先,實時進程主要提供的是空間隔離保護的功能,其本身并不參與調(diào)度;其次,實時進程內(nèi)運行的為任務(wù),為了保證實時性,任務(wù)的調(diào)度策略為基于優(yōu)先級搶占的先來先服務(wù)調(diào)度策略。實時進程的結(jié)構(gòu)如圖1所示:

(二)實時進程的運行單元

實時進程內(nèi)包含有多個運行在用戶態(tài)的任務(wù),實時進程與任務(wù)之間是一對多的關(guān)系。用戶可以創(chuàng)建多個實時進程,每一個實時進程又可以創(chuàng)建多個任務(wù)。實時進程提供任務(wù)之間的空間隔離和操作系統(tǒng)之間的空間隔離;實時進程內(nèi)的所有任務(wù)共享實時進程內(nèi)的資源,包括對象、堆空間、設(shè)備等。實時進程內(nèi)的任務(wù)調(diào)度策略包括基于優(yōu)先級搶占的先來先服務(wù)策略及同優(yōu)先級時間片輪轉(zhuǎn)策略。實時進程內(nèi)的任務(wù)在操作系統(tǒng)核心內(nèi)均可見,系統(tǒng)內(nèi)的所有實時進程的任務(wù)拉平調(diào)度,競爭的對象還是任務(wù),與實時進程沒有關(guān)系。

二、實時進程的空間管理

實時進程運行在邏輯空間內(nèi),通過操作系統(tǒng)提供的存儲管理功能,由系統(tǒng)給應(yīng)用分配獨立的物理空間。不同的實時進程邏輯空間可以重疊,在應(yīng)用程序訪問內(nèi)存時,通過處理器的MMU單元將實時進程的邏輯地址轉(zhuǎn)換為實際的物理地址。

(一)實時進程的物理空間劃分

操作系統(tǒng)的物理空間劃分如圖2所示,從低到高依次為:操作系統(tǒng)空間、IO空間,操作系統(tǒng)的物理空間訪問范圍為0x00000000-0xFFFFFFFF(此處僅描述32位系統(tǒng)的情況);對于實時進程而言,實時進程的空間,包括用于實時進程間通信的共享存儲區(qū)空間均在操作系統(tǒng)運行時從操作系統(tǒng)堆中動態(tài)申請獲得。

(二)實時進程的邏輯空間劃分

每個實時進程應(yīng)用都有自己的邏輯空間,且每個實時進程的邏輯空間訪問范圍均為0x00000000-0xFFFFFFFF(此處僅描述32位系統(tǒng)的情況)。實時進程可運行在用戶態(tài),也可以通過系統(tǒng)調(diào)用進入到核心態(tài);運行在用戶態(tài)時,可以直接訪問實時進程的空間,當應(yīng)用通過系統(tǒng)調(diào)用進入核心態(tài)時,由于實時進程保存了一份核心的頁表拷貝,所以可以直接訪問核心的空間。當實時進程發(fā)生切換時,需要進行MMU的切換。邏輯空間劃分如圖3所示:

(三)實時進程的空間映射

實時進程空間隔離能力基于處理器所支持的存儲管理能力來實現(xiàn),通過MMU機制,一方面可以實現(xiàn)虛擬地址空間到物理地址空間的映射,另一方面,可以為這種映射關(guān)系附加相應(yīng)的讀寫屬性,操作系統(tǒng)根據(jù)每個實時進程的不同的空間需求,將空間映射表作為實時進程管理的私有數(shù)據(jù)記錄,每個實時進程都有相互獨立且不重疊的物理空間。

實時進程的邏輯空間可以根據(jù)用戶的需求進行設(shè)定,不同實時進程的邏輯地址可以相同或者不同。

三、實時進程的啟動與資源管理

(一)實時進程的啟動過程

實時進程的啟動過程主要分為以下步驟:1.加載實時進程映像,讀取映像信息;2.根據(jù)映像信息創(chuàng)建資源并跳轉(zhuǎn)到映像的起始地址開始執(zhí)行。實時進程的映像為一個標準的elf格式的可執(zhí)行文件,在操作系統(tǒng)運行時動態(tài)的被加載到內(nèi)存空間中并開始運行。通過操作系統(tǒng)的elf文件加載模塊,對可執(zhí)行文件映像進行解析,步驟如下:讀取映像的elf文件頭;計算文件頭部信息中代碼段、數(shù)據(jù)段、bss段的總大小,以及用戶需要的實時進程堆空間大小,并針對以上空間大小申請物理空間;根據(jù)映像中段信息中的邏輯地址,建立邏輯空間到物理空間的映射;將映像中的代碼段和數(shù)據(jù)段加載到內(nèi)存中,并對bss段清零;刷新并無效數(shù)據(jù)cache和指令cache;讀取映像頭部中的映像的入口地址作為實時進程初始任務(wù)的跳轉(zhuǎn)地址。在加載完畢實時進程映像后,還需要初始化一些基本的實時進程數(shù)據(jù),主要包括:包括進程控制塊,MMU空間等。在初始化完畢后,創(chuàng)建一個實時進程的初始任務(wù),初始任務(wù)的啟動入口為實時進程初始任務(wù)的跳轉(zhuǎn)地址,初始任務(wù)開始執(zhí)行則代表實時進程程序開始執(zhí)行。

(二)實時進程的資源管理

實時進程在執(zhí)行過程中,需要管理一些與實時進程相關(guān)的資源,主要包括:代碼段、數(shù)據(jù)段和bss段空間、用戶堆棧空間,以上空間均從核心操作系統(tǒng)堆空間中分配;其他的用戶應(yīng)用所需的資源空間,包括用戶申請的物理空間、對象空間、任務(wù)棧等,均從用戶堆棧空間中分配。

四、實時進程間通信

實時進程間空間互相隔離,實時進程不能夠通過訪問其他實時進程內(nèi)的空間。實時進程間通信主要采用公共對象或者共享存儲區(qū)的方式。

(一)實時進程的公共/私有對象

實時進程內(nèi)的消息隊列或者信號量等可用于通信的對象具有私有/公共的屬性,具有私有屬性的對象僅能夠在當前實時進程內(nèi)使用,其他實時進程無法訪問;如果實時進程內(nèi)的任務(wù)需要與其他實時進程內(nèi)的任務(wù)進行通信,則需要使用具有公共屬性的消息隊列或信號量等對象。對于一個公共對象,創(chuàng)建時其名稱格式為“/***”,對于私有對象,名稱前不允許加“/”,系統(tǒng)通過“/”來區(qū)分公共和私有。

公共消息隊列緩沖空間為內(nèi)核空間,由于每個實時進程間空間隔離,消息的發(fā)送與接收需要使用操作系統(tǒng)內(nèi)核的一塊緩沖空間進行數(shù)據(jù)過渡。當用戶任務(wù)通過公共消息隊列發(fā)送消息給另一個實時進程的任務(wù)時,首先通過系統(tǒng)調(diào)用訪問進入核心態(tài),之后將用戶的消息緩沖空間的內(nèi)容拷貝至操作系統(tǒng)內(nèi)核的消息緩沖空間中;當用戶任務(wù)通過公共消息隊列接收另一個實時進程的任務(wù)發(fā)送的消息時,首先通過系統(tǒng)調(diào)用訪問進入核心態(tài),之后將操作系統(tǒng)內(nèi)核的消息緩沖空間的內(nèi)容拷貝至用戶的消息緩沖空間中。

(二)共享存儲區(qū)

共享存儲區(qū)是一個或多個實時進程都可以訪問的一塊內(nèi)存區(qū)域。共享存儲區(qū)分為兩種:共享數(shù)據(jù)區(qū)和共享IO區(qū)。一塊共享數(shù)據(jù)區(qū)必須與一塊物理內(nèi)存區(qū)域進行關(guān)聯(lián)。共享數(shù)據(jù)區(qū)對應(yīng)于內(nèi)核中的一塊可用的內(nèi)存區(qū),用戶可以自行指定一段已經(jīng)映射但沒有使用的物理空間或者由操作系統(tǒng)動態(tài)分配一段物理空間,作為映射的物理空間;用戶可以自行指定一段已經(jīng)映射但沒有使用的邏輯空間或者由操作系統(tǒng)動態(tài)分配一段邏輯空間,作為映射的邏輯空間;最后建立邏輯空間到物理空間之間的映射。物理空間和邏輯空間必須按照MMU頁面對齊。一塊共享IO區(qū)必須與一塊IO空間進行關(guān)聯(lián)。共享IO區(qū)對應(yīng)于系統(tǒng)中的某個IO設(shè)備,物理地址需要用戶根據(jù)設(shè)備情況指定。用戶可以自行指定一段已經(jīng)映射但沒有使用的邏輯空間或者由操作系統(tǒng)動態(tài)分配一段邏輯空間,作為映射的邏輯空間;最后建立邏輯空間到IO空間之間的映射。IO空間和邏輯空間必須按照MMU頁面對齊。

共享存儲區(qū)空間操作系統(tǒng)內(nèi)核以及實時進程均可訪問,根據(jù)共享存儲區(qū)屬性對共享存儲區(qū)進行組織管理。共享存儲區(qū)的屬性主要包含:只讀、只寫、讀寫、不允許訪問。完成共享存儲區(qū)的建立后,共享存儲區(qū)空間的訪問屬性已經(jīng)確定,不能通過程序進行更改。

共享存儲區(qū)由發(fā)起的實時進程通過接口進行創(chuàng)建,其他的實時進程要操作這段共享存儲區(qū)時,通過接口對這塊共享存儲區(qū)打開后操作。

五、實時進程的中斷異常

當中斷/異常產(chǎn)生時,處理器進入核心操作系統(tǒng)的中斷異常入口,對現(xiàn)場上下文進行保護,之后轉(zhuǎn)入核心操作系統(tǒng)安裝的中斷異常處理程序,處理完成后,如果不需要通知實時進程,則執(zhí)行上下文現(xiàn)場恢復(fù),最后中斷異常返回;如果需要通知實時進程,則通過信號的方式通知實時進程的任務(wù)。

當系統(tǒng)從核心返回用戶任務(wù)時,如果此時系統(tǒng)產(chǎn)生了信號,系統(tǒng)會發(fā)送信號給用戶任務(wù),之后返回到用戶任務(wù),并執(zhí)行信號處理。如果需要通過信號的方式在核心產(chǎn)生中斷/異常時通知實時進程,則需要通過信號相關(guān)的服務(wù)掛接相應(yīng)的信號處理服務(wù)。

六、實時進程的設(shè)備管理

實時進程使用設(shè)備管理的方式有以下兩種:1.在核心操作系統(tǒng)中通過設(shè)備管理注冊設(shè)備驅(qū)動,之后通過系統(tǒng)調(diào)用方式直接對核心設(shè)備管理進行調(diào)用使用,在實時進程應(yīng)用中即可直接通過標準的IO接口來訪問核心的設(shè)備。2.通過共享IO區(qū)將設(shè)備地址映射到實時進程中,通過直接訪問IO空間的方式來訪問設(shè)備。

七、實時進程的故障處理

實時進程中的應(yīng)用在發(fā)生故障后,通過操作系統(tǒng)通過的故障檢測報告機制來接管。應(yīng)用程序使用故障檢測報告接口注入的故障和操作系統(tǒng)內(nèi)核通過通用故障注入接口注入的故障均交由故障檢測報告處理。在故障發(fā)生后,可以通過故障檢測報告機制對故障信息進行獲取、記錄和展現(xiàn)。故障相關(guān)信息包括故障位置、類型、操作系統(tǒng)狀態(tài)、寄存器、堆棧信息等。在發(fā)生故障后可通過接口輸出相關(guān)的故障信息。

實時進程故障注入包括以下來源:1.用戶應(yīng)用程序注入故障。用戶應(yīng)用程序自行判斷運行邏輯錯誤,使用操作系統(tǒng)提供的用戶故障注入用戶接口注入故障,調(diào)用操作系統(tǒng)的故障處理功能,試圖恢復(fù)應(yīng)用程序的錯誤狀態(tài)以及防止應(yīng)用程序錯誤對操作系統(tǒng)和其他實時進程造成影響。2.實時進程運行狀態(tài)檢查。實時進程運行過程中在各關(guān)鍵環(huán)節(jié)檢查數(shù)據(jù)、狀態(tài)的正確性,如用戶輸入、請求資源等時機,當檢測到故障時即調(diào)用故障處理功能。

故障檢測報告的主要功能包括:1、記錄應(yīng)用程序和操作系統(tǒng)的故障信息,故障記錄不會因重啟而丟失。2.根據(jù)參數(shù)選擇記錄的故障信息內(nèi)容,包括:時間、故障點文件位置、故障任務(wù)、內(nèi)存信息、異常信息、寄存器信息、CoreDump、棧追蹤信息等。3.提供記錄故障前和記錄故障后調(diào)用用戶定義的故障處理動作的功能。4.提供管理故障日志記錄的功能,如顯示故障記錄、清空故障記錄等。5.可根據(jù)參數(shù)選擇特定的故障日志顯示方式,如僅顯示致命故障、僅顯示警告信息等。

八、結(jié)束語

本文研究了嵌入式實時操作系統(tǒng)中的實時進程機制,通過實時進程的功能架構(gòu)、空間管理和劃分及映射、實時進程的資源管理、實時進程的加載運行方式、實時進程間通信、實時進程對于中斷異常,設(shè)備管理的處理以及實時進程錯誤處理方面,簡要闡述了在嵌入式實時操作系統(tǒng)中的實時進程特性。隨著嵌入式實時操作系統(tǒng)的發(fā)展,以及應(yīng)用場景的逐漸復(fù)雜,安全性、數(shù)據(jù)保護以及空間隔離變得越來越重要。隨著嵌入式實時操作系統(tǒng)在各個領(lǐng)域應(yīng)用越來越廣泛,越來越多的新技術(shù)的應(yīng)用,如容器技術(shù)、深度學(xué)習(xí)等新興技術(shù)都需要高可靠實時性強高安全的系統(tǒng)作為技術(shù)支撐,實時進程機制將在嵌入式實時操作系統(tǒng)中發(fā)揮關(guān)鍵作用。

作者單位:楊弋? ? 仝敏? ? 衛(wèi)一芃? ? 中國航空工業(yè)集團公司西安航空計算技術(shù)研究所

參? 考? 文? 獻

[1] 仇陽. Linux內(nèi)核進程調(diào)度算法發(fā)展.電子世界,2017,(07).

[2] 蘇淑霞. Linux進程調(diào)度算法的研究及改進.數(shù)字技術(shù)與應(yīng)用,2014,(09).

猜你喜歡
進程嵌入式故障
故障一點通
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
奔馳R320車ABS、ESP故障燈異常點亮
故障一點通
江淮車故障3例
Altera加入嵌入式視覺聯(lián)盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
社會進程中的新聞學(xué)探尋
主站蜘蛛池模板: 亚洲三级色| 亚洲手机在线| 欧美成人综合在线| 九色在线观看视频| 熟女日韩精品2区| 亚洲无卡视频| 欧美 国产 人人视频| 2020国产在线视精品在| 欧美精品亚洲精品日韩专| 2019国产在线| 日韩欧美在线观看| 亚洲三级电影在线播放| 69视频国产| 国产区成人精品视频| 亚洲视频四区| 午夜福利免费视频| 就去吻亚洲精品国产欧美| 国产欧美日韩视频怡春院| 色欲国产一区二区日韩欧美| 成年人免费国产视频| 日本a∨在线观看| 在线中文字幕日韩| 成人免费视频一区二区三区| 国产污视频在线观看| 国产欧美综合在线观看第七页| 中文国产成人精品久久一| 国产97视频在线| 真人高潮娇喘嗯啊在线观看| 美女高潮全身流白浆福利区| 亚洲色图狠狠干| 99热国产这里只有精品9九 | 99热这里只有精品在线播放| 露脸一二三区国语对白| 91在线播放免费不卡无毒| 国产91丝袜在线观看| 欧美日韩高清在线| 少妇人妻无码首页| 亚洲成人在线免费| 精品福利网| yjizz视频最新网站在线| 国产清纯在线一区二区WWW| 欧美一级在线看| 熟女视频91| 免费A级毛片无码无遮挡| 国产乱子精品一区二区在线观看| 国产视频自拍一区| 午夜高清国产拍精品| 伊人久久婷婷五月综合97色| 亚洲日韩日本中文在线| 91精品国产一区自在线拍| 亚洲毛片一级带毛片基地| 一级爱做片免费观看久久 | 国产精品久久自在自2021| 污视频日本| 日本日韩欧美| 嫩草国产在线| 91免费片| 99热这里只有精品免费国产| 亚瑟天堂久久一区二区影院| 国产嫖妓91东北老熟女久久一| 国产精品亚洲欧美日韩久久| 日韩一区精品视频一区二区| 国内精品小视频福利网址| 国产美女丝袜高潮| 久久国产精品电影| 久久中文电影| 国产视频资源在线观看| 免费观看国产小粉嫩喷水| 国产亚洲精| 欧美在线精品一区二区三区| 亚洲熟女偷拍| 亚洲精品手机在线| 亚洲综合18p| 亚洲精品va| 久久96热在精品国产高清| 2020国产精品视频| 久久久久无码精品| 国产日韩欧美视频| 在线观看国产小视频| 欧美日韩精品一区二区视频| 国产高清国内精品福利| 午夜国产理论|