- 相關(guān)推薦
QNX環(huán)境下多線程編程
作者Email: zoutom@163.com
摘要:介紹了QNX實(shí)時(shí)操作系統(tǒng)和多線程編程技術(shù),包括線程間同步的方法、多線程程序的分析步驟、線程基本程序結(jié)構(gòu)以及實(shí)用編譯方法。
關(guān)鍵詞:QNX;多線程;同步;程序結(jié)構(gòu)
0引言:
QNX是由加拿大QNX軟件有限系統(tǒng)公司開(kāi)發(fā)的一種多任務(wù)、分布式、可嵌入的實(shí)時(shí)操作系統(tǒng)。它有著輕巧的微內(nèi)核,可以對(duì)進(jìn)程進(jìn)行全面的地址保護(hù),可剪裁,模塊化程度高,實(shí)時(shí)性強(qiáng),安全可靠。符合POSIX標(biāo)準(zhǔn)的API使它成為一個(gè)開(kāi)放式互聯(lián)系統(tǒng),便于與UNIX/LINUX系統(tǒng)的移植。QNX有著不同于UNIX或LINUX的模塊化設(shè)計(jì)思想,并不是UNIX或LINUX的一種演化,而是完全不同的一種全新的實(shí)時(shí)操作系統(tǒng)。由于其獨(dú)特的體系結(jié)構(gòu),QNX廣泛應(yīng)用于嵌入式系統(tǒng)、機(jī)器人工程、工業(yè)控制、航空航天等各個(gè)領(lǐng)域。
在QNX中,線程是一個(gè)單一的控制執(zhí)行流。從程序的最低層角度考慮,線程包括當(dāng)前指令位置指針(也稱為計(jì)數(shù)器或PC)、棧頂指針(SP)和一些寄存器,而進(jìn)程占據(jù)一定的內(nèi)存空間,是一個(gè)或多個(gè)線程的集合。在同一進(jìn)程中的線程共享許多資源,在QNX系統(tǒng)中共享的資源有:內(nèi)存中儲(chǔ)存在棧區(qū)以外的變量——即非局部變量;信號(hào)處理器;信號(hào)忽略屏蔽字;通道——建立于服務(wù)器端;連接——建立于客戶端,而在不同進(jìn)程中的線程除了CPU之外,幾乎不共享任何資源。當(dāng)然QNX提供了shm_open()函數(shù)來(lái)使不同進(jìn)程中的線程共享一段內(nèi)存。
在早期的QNX版本如QNX4中,對(duì)于線程的支持是比較弱的,在當(dāng)時(shí)的條件下,處理大型、復(fù)雜的并發(fā)多任務(wù)問(wèn)題時(shí),常常將問(wèn)題分解為多個(gè)進(jìn)程以降低問(wèn)題的復(fù)雜性。而且QNX提供了與UNIX類(lèi)似的進(jìn)程間通訊IPC手段如消息、代理、信號(hào)燈等,功能也相對(duì)比較成熟、完善。1999年以后 QNX軟件公司推出了QNX/Neutrino實(shí)時(shí)操作系統(tǒng)的Neutrino2.0、Neutrino6.0增加了對(duì)于POSIX線程的支持,標(biāo)準(zhǔn)的API不但使它易于擴(kuò)展,而且也使得編寫(xiě)多線程程序變得容易。由于線程具上下文較輕、切換較快、在創(chuàng)建多個(gè)線程時(shí)系統(tǒng)的開(kāi)銷(xiāo)比較小、通訊手段靈活多樣、共享資源豐富等優(yōu)點(diǎn),在處理大型并發(fā)多任務(wù)問(wèn)題時(shí)多線程有了明顯的優(yōu)勢(shì)。QNX是搶先式多任務(wù)系統(tǒng),這種系統(tǒng)決定了多個(gè)線程在訪問(wèn)共享資源時(shí)線程執(zhí)行的次序變得不可預(yù)期,所以線程間的同步就顯得極為重要。QNX提供了多種同步機(jī)制以保證多線程程序的安全、可靠。
1 QNX多線程庫(kù)函數(shù)簡(jiǎn)介
QNX與LINUX不同,沒(méi)有單獨(dú)的線程庫(kù),與線程有關(guān)的API是作為C語(yǔ)言庫(kù)函數(shù)的一部分使用的,頭文件是,同樣方便地提供線程的創(chuàng)建、終止和同步等功能。QNX不僅在C語(yǔ)言庫(kù)函數(shù)中提供了符合POSIX1003.1c標(biāo)準(zhǔn)的與線程相關(guān)的API,而且還提供了很多POSIX標(biāo)準(zhǔn)沒(méi)有的擴(kuò)展功能,使得多線程編程變得更加容易。
1.1線程的創(chuàng)建、取消和終止
1.11線程的創(chuàng)建
QNX通過(guò)pthread_create()函數(shù)創(chuàng)建線程,API定義如下:
int pthread_create(
[1] [2] [3] [4] [5]
【QNX環(huán)境下多線程編程】相關(guān)文章:
編程的心得03-14
給機(jī)器編程04-28
網(wǎng)絡(luò)環(huán)境下的歷史教學(xué)04-30
極端環(huán)境下的生命奇跡04-25
環(huán)境政治視角下的環(huán)境全球治理探析04-26
A-SMGCS中基于QNX平臺(tái)的車(chē)載終端的設(shè)計(jì)研究04-30
數(shù)控編程心得05-07
編程語(yǔ)言排名04-29