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

嵌入式實時操作系統中系統調用方法的設計與實現

2011-05-21 00:42:00衛一芃李運喜
電子設計工程 2011年13期
關鍵詞:嵌入式機制用戶

衛一芃,李運喜

(中航工業西安計算技術研究所 陜西 西安 710068)

隨著微電子、容錯、軟件技術的發展,航空電子系統已逐步從原有的體系結構向綜合化模塊化航空電子系統(IMA)發展,以提高未來飛機的作戰能力[1]。上世紀末,美國就已經開始研制新一代飛機,并制定了滿足新一代飛機綜合化要求的技術標準ARINC。其中,ARINC 653是美國航電委員會針對數據綜合化的要求提出的應用程序接口標準[2-3]。新一代飛機的航電系統將是高度模塊化、綜合化的,其操作系統需采用專用的航電實時操作系統,在滿足綜合化要求以及保證實時性的前提下,對安全性要求非常高。在高安全性的實時操作系統中支持兩種運行形態:系統態和用戶態。用戶態的程序在運行過程中可能需要使用系統態的功能,由于跨兩態,用戶態的應用不能直接調用系統態下的服務,因此需要使用系統調用機制為用戶態的應用訪問系統態的服務提供解決途徑。

筆者詳細討論了某嵌入式實時操作系統中系統調用的機制以及實現方法。

1 概 述

某嵌入式實時操作系統是滿足ARINC 653標準要求的嵌入式實時操作系統,其軟件結構如圖1所示。

圖1 某嵌入式實時操作系統軟件結構圖Fig.1 Software structure diagram of an embedded real-time operating system

ARINC 653為保證IMA系統中運行的多個航電應用程序執行時不相互影響,提出分區的概念。分區是IMA系統中的一組功能相關的應用軟件,這些軟件在配置和執行時作為一個單一的軟件來對待[4]。相當于通用操作系統中的進程,包含自己的存儲器,上下文以及配置屬性。分區OS運行在用戶態,提供分區管理、分區間及分區內通信、時間管理、進程管理等功能。核心OS運行系統態,提供任務管理、任務間通信、信號管理、系統調用管理等功能。位于用戶態下的程序不能直接訪問系統態下的服務,系統調用機制為應用分區訪問核心OS的服務提供解決途徑,有效保護核心OS的安全[5-6]。

2 系統調用機制

內核提供應用的服務需統一編號,使用表方式統一管理。當用戶態的應用需要調用內核提供的服務時,首先要執行一組特殊的指令使系統進入系統態,通過系統調用號查表得到函數的入口地址,執行內核服務,當調用完成后,內核將執行另一組特征指令將系統返回到用戶態。這里將從系統調用號、系統調用表、系統調用生成及工作過程4個方面描述系統調用機制。

2.1 系統調用號

核心OS為每個系統調用定義一個唯一的編號,編號的定義方式如下:

#define__NR_函數名 X

其中,X代表系統調用號,系統調用號定義的部分代碼如下:

#define__NR_SysCallInit 1

#define__NR_RegisterDynamicLibrary 2

#define__NR_fstat 18

#define__NR_creat 19

#define__NR_hmEventDispatch 20

通過這個獨一無二的編號可以關聯到一個特定的系統調用。當用戶空間的進程執行一個系統調用的時候,這個系統調用號就被用來指定要執行的系統調用,進程不會提及系統調用的名稱。

系統調用號一旦分配且完成編譯,就不能有任何變更。

2.2 系統調用表

系統調用表(syscall_table)用于記錄各個系統調用處理函數的入口地址,以系統調用號為偏移量能夠很容易在該表中找到對應處理函數地址,部分代碼如下:

.long SYM(syscall_entry) /*0*/

.long SYM(SysCallInit) /*1*/

.long SYM(fstat) /*18*/

.long SYM(creat) /*19*/

.long SYM(hmEventDispatch) /*20*/

2.3 系統調用生成

核心OS內的syscall.h文件中定義了所有核心OS提供給上層應用的函數。通過編譯,系統生成系統調用號及系統調用表項,同時為每一個函數生成一個文件名為XXX_trap.c的文件,XXX代表函數名。該文件中記錄用_syscallN()封裝后的函數。

應用程序本身無法直接執行內核代碼,而是通過引發一個異常來促使系統切換到系統態執行系統調用處理程序_syscallN(),其中N表示參數個數,在X86體系結構上支持函數最多帶5個參數,PPC體系結構上支持函數最多帶7個參數。

在陷入核心OS時,_syscallN()將系統調用號傳給核心OS。在PPC體系結構中,系統調用號通過通用寄存器傳入,系統調用處理程序一旦執行,可以從通用寄存器中獲得數據,以下為PPC體系結構的_syscall2()代碼片段:

#define_syscall2(type,name,type1,arg1,type2,arg2)

type name(type1 arg1, type2 arg2)

{

unsigned long__sc_ret;

{

register unsigned long__sc_0__asm__ ("r0");

register unsigned long__sc_3__asm__ ("r3");

register unsigned long__sc_4__asm__ ("r4");

__sc_3= (unsigned long) (arg1);

__sc_4= (unsigned long) (arg2);

__sc_0=__NR_##name;

__asm____volatile__

("sc "

: "=&r" (__sc_3)

: "0" (__sc_3), "r" (__sc_0),

"r" (__sc_4)

: __syscall_clobbers);

__sc_ret=__sc_3;

}

__syscall_return (type);

}

由上述代碼片段可以看出,系統調用帶有2個參數,分別通過寄存器r3和r4傳遞,系統調用號通過寄存器r0傳遞。

以打開文件函數creat()為例,通過編譯后將生成creat_trap.c文件,該文件中記錄通過系統調用處理程序封裝后的creat()函數。應用程序調用creat()時,實際就是通過執行用_syscall2()封裝后的函數從用戶態進入系統態,完成系統調用功能。creat_trap.c文件中代碼片段如下:

_syscall2(T_WORD,creat,T_CONST T_BYTE*,name,T_WORD,mode)

2.4 系統調用工作步驟

系統調用的工作步驟如下:

1)保存所有當前上下文(即用戶態上下文);

2)應用程序通過軟中斷方式通知核心OS需要執行一個系統調用。X86體系結構上的軟中斷由int 0x80指令產生,PPC體系結構上的軟中斷由sc指令產生。

3)引起0x0c00中斷(系統調用中斷),進行異常處理,進入核心OS;

4)判斷系統調用號是否合法,如果為非法系統調用號,則退出;否則根據系統調用號在系統調用表syscall_table中查找函數的入口地址,并跳轉到該地址。

5)執行完畢后返回。

圖2以creat()為例反映了系統調用的工作步驟。

圖2 系統調用工作步驟Fig.2 Work steps of system call

3 阻塞性系統調用

分區OS中的進程通過系統調用產生阻塞性請求的時候,進程因等待系統調用的返回而阻塞。當分區OS中一個進程阻塞的時候,將導致整個分區阻塞,影響應用分區的正常執行。為解決阻塞性系統調用帶來的問題,引入worker任務機制進行處理。

3.1 worker任務

當應用請求了阻塞性的服務時,核心OS中將會啟動相應的系統任務來進行應用請求的操作,通過這樣的方法實現異步IO機制。這種為實現異步IO操作而創建的系統任務稱為worker任務。筆者將從worker任務創建、分派及清理3方面描述worker任務。

3.1.1 worker任務創建

每個分區可支持的worker任務數在配置數據中定義。在分區創建的過程中,將根據配置的worker任務數創建任務,這些任務隸屬于對應的應用分區。所有創建的worker任務都處于worker任務空閑隊列中。

3.1.2 worker任務分派

分區OS根據調用的服務是否為阻塞服務決定是否分派worker任務,分派worker任務前,首先從可用的worker任務隊列中取得一個worker任務并激活該任務,將系統調用的方法交由worker任務處理,當worker任務能夠獲得資源則直接處理,完成后發送系統調用完成的事件,否則worker任務將阻塞在等待的資源上,直到資源被釋放,方可啟動運行,并通知應用分區。

3.1.3 worker任務清理

worker任務在處理阻塞性系統調用過程中,如果處于等待狀態,那么在應用分區設置為IDLE模式、應用分區重啟動過程中,需要對未完成的系統調用進行刷新操作,在對系統調用進行清理的同時,還需要對阻塞的worker任務進行清理,將阻塞在資源等待鏈上的worker任務摘除,并停止worker任務的執行。

3.2 worker任務處理機制

采用worker任務機制可以有效地解決應用分區因阻塞性系統調用而無法繼續運行的問題。當系統調用發生阻塞時,啟動worker任務去等待資源,而當前系統調用返回特定的狀態給應用分區,應用分區經過狀態判斷,掛起分區內相應的應用進程,從而產生進程切換,執行其他應用進程,當worker任務等待的資源得到滿足時,則解掛worker任務執行,并通過發送信號通知應用分區阻塞狀態的解除。worker任務機制示意圖如圖3所示。

圖3 worker任務處理機制示意圖Fig.3 Schematic diagram of worker task processing mechanism

4 結束語

筆者深入研究了嵌入式實時操作系統中系統調用原理、參考國內外先進嵌入式實時操作系統中系統調用的實現方法,設計并實現了一種有效的系統調用方法,解決阻塞性系統調用給分區正常運行帶來的影響,保證分區的正常運行。通過在某嵌入式實時操作系統中的實現,文中涉及的設計和實現方法是安全的、可行的、有效的。在今后的工作中,將著重于更進一步提高系統調用的訪問效率及安全性方面的研究。

[1]王樹紅.嵌入式系統的現狀及發展趨勢[J].太原大學學報,2007,8(2):121-122,139.WANG Shu-hong,The present situation and developing trend of embedded system[J]Journal of Taiyuan university,2007,8(2):121-122,139.

[2]王麗杰.嵌入式實時操作系統設計探討[J].軟件世界,2007(20):51-53.WANG Li-jie.Discussion of embedded real time operating system design[J].Software World,2007(20):51-53.

[3]徐曉光,葉宏.分區間通信在航空電子系統中的設計與實現[J].航空計算技術,2005,35(1):45-47,58.XU Xiao-guang,YE Hong.The design and implementation of inter-partition communication in avionics systems[J].Aeronautical Computing Technique,2005,35(1):45-47,58.

[4]ARINC.Specification 653-1,avionics application software standard interface[S].2003.

[5]Rushby J.Partitioning in avionics architectures requirements mechanisms and assurance[R].NASA,2000.

[6]葛仁北.系統調用與操作系統安全[J].計算機工程與應用,2002(19):97-99.GE Ren-bei.System call and computer operation system security [J].Computer Engineering and Applications,2002(19):97-99.

猜你喜歡
嵌入式機制用戶
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
破除舊機制要分步推進
中國衛生(2015年9期)2015-11-10 03:11:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
注重機制的相互配合
中國衛生(2014年3期)2014-11-12 13:18:12
打基礎 抓機制 顯成效
中國火炬(2014年4期)2014-07-24 14:22:19
主站蜘蛛池模板: 国产高颜值露脸在线观看| 亚洲成人高清在线观看| 国产黄在线免费观看| 国产区福利小视频在线观看尤物| 91青青草视频| 亚洲天堂久久久| 久久综合伊人77777| 免费观看亚洲人成网站| 美女无遮挡免费网站| 国产成人一级| 国产精品成人免费综合| 老熟妇喷水一区二区三区| 中国黄色一级视频| 国产成人精品高清不卡在线| 国产精品成| 国产女人水多毛片18| 免费一极毛片| 在线va视频| 亚洲综合精品香蕉久久网| 欧美午夜视频| 久久婷婷五月综合97色| 国产成人午夜福利免费无码r| 伊人久久婷婷五月综合97色| 国产va在线观看免费| 超清人妻系列无码专区| 亚洲浓毛av| 亚洲欧美在线看片AI| 色呦呦手机在线精品| 四虎AV麻豆| 亚洲无码一区在线观看| 午夜性刺激在线观看免费| 国产精品播放| 精品视频免费在线| 国产h视频免费观看| 国产在线观看一区二区三区| 456亚洲人成高清在线| 亚洲天堂在线免费| 日韩小视频网站hq| 亚洲中文字幕在线一区播放| 亚洲视频免费播放| 这里只有精品国产| 亚洲国产天堂久久综合226114| 亚洲精品自产拍在线观看APP| 国产成人久久综合777777麻豆| 欧美国产日韩另类| 欧美 国产 人人视频| 91麻豆精品国产高清在线| 欧美国产三级| 久久国产成人精品国产成人亚洲| 日韩精品免费在线视频| 精品综合久久久久久97超人该| 国产成人免费观看在线视频| 18禁不卡免费网站| 亚洲性视频网站| 一级毛片在线免费视频| 午夜毛片免费观看视频 | 亚洲一级毛片在线观| 成人欧美日韩| 99热这里都是国产精品| 国产精品青青| 国产精品美乳| 香港一级毛片免费看| 日韩黄色大片免费看| 又爽又黄又无遮挡网站| 国产精品一线天| 亚洲成A人V欧美综合| 亚洲第一视频网站| 亚洲日本在线免费观看| 18黑白丝水手服自慰喷水网站| 国产电话自拍伊人| av在线手机播放| 国产96在线 | 麻豆国产在线不卡一区二区| 亚洲精品无码专区在线观看 | 在线观看精品国产入口| 日韩AV手机在线观看蜜芽| 亚洲欧美日韩天堂| 国产99在线| 亚洲人成人伊人成综合网无码| 精品福利视频导航| 久久免费视频6| 国产高清精品在线91|