QNX簡介

QNX  QNX是由QNX軟件系統有限公司開發的實時操作系統。
  [編輯]基本特徵
  * QNX是一個分佈式、嵌入式、可規模擴展的實時操作系統。它遵循POSIX.1
(程序接口)和POSIX.2
(Shell和工具)、部分遵循POSIX.1b(實時擴展)。它最早開發於1980年,到現在已相當成熟

  [編輯]體系結構
  *
QNX是一個微內核實時操作系統,其核心僅提供4種服務:進程調度、進程間通信、底層網絡
通信和中斷處理,其進程在獨立的地址空間運行。所有其它OS服務,都實現爲協作的用戶進
程,因此QNX核心非常小巧(QNX4.x大約爲12Kb)而且運行速度極快。
  [編輯]調度策略
  QNX 提供POSIX.1b標準進程調度:
  * 32個進程優先級;
  * 搶佔式的、基於優先級的正文切換;
  * 可選調度策略:FIFO、輪轉策略、適應性策略。
  [編輯]系統服務
  QNX的系統服務:
  *
多種資源管理器,包括各種文件系統和設備管理,支持多個文件系統同時運行,包括提供完
全POSIX.1及UNIX語法的POSIX文件系統,支持多種閃存設備的嵌入式文件系統,支持對多種
文件服務器(如Windows NT/95、LAN
Manager等)的透明訪問的SMB文件系統、DOS文件系統、CD-ROM文件系統等。
  * 設備管理。在進程和終端設備間提供大吞吐量、低開銷接口服務。
  * 圖形/窗口支持。包括QNX Windows、X Window System for QNX、對MS Windows
NT/95和X Window系統的遠程圖形連接。
  * TCP/IP for QNX。
  *
高性能、容錯型QNX網絡——FLEET,使得所有連入網絡的計算機變成一個邏輯上的超級計算
機。
  *
透明的分佈式處理。FLEET網絡處理與消息傳遞和進程管理原語的集成,將本地和網絡IPC統
一起來,使得網絡對IPC而言是透明的。
  [編輯]系統開放性
  QNX的開放性:
  * QNX的POSIX兼容性和其提供的UNIX特色的編譯器、調試器、X
Window和TCP/IP都是UNIX程序員所熟悉的。
  * 支持多種CPU:AMD ElanSC300/310/400/410、Am386 DE/SE、Cyrix
MediaGX、x86處理器(386以上)、Pentium系列、STMicroelectronics 的STPC。
  * 多種總線:CompactPCI、EISA、ISA 、MPE (RadiSys)、STD、STD
32、PC/104、PC/104-Plus、PCI、PCMCIA、VESA、VME。
  * 各種外設:多種SCSI設備、IDE/EIDE驅動器、10M/100M以太網卡、Token
Ring網卡、FDDI接口卡、多種PCMCIA設備、閃存、聲卡等等。
  QNX結構:
  QNX是業界公認的X86平臺上最好的嵌入式實時操作系統之一。它具有獨一無二的微內核
實時平臺,建立在微內核和完全地址空間保護基礎之上,實時、穩定、可靠,已經完成到Po
werPC、MIPS、ARM等內核的移植,成爲在國內廣泛應用的嵌入式實時操作系統。
  1 QNX內核簡介
  QNX的微內核結構是它區別於其它操作系統的顯著特點。
  平板式內存結構,如圖1所示,所有的程序都使用同一個地址空間,不加保護;應用程
序可以自由訪問所有空間,效率較高,但是任何應用程序指針錯誤都可能會導致內核崩潰。
  大內核內存結構,如圖2所示,操作系統內核和各種驅動程序、網絡協議在同一個地址
空間,應用程序在單獨空間;內核模塊同處於一個保護空間,運行效率高,應用程序無法直
接訪問保護空間,系統穩定性大大提高。缺點是,由於內核模塊(例如網絡驅動)處於保護
空間,因此調試困難,任何驅動程序的修改都要重新編譯內核,無法做到驅動的動態加載和
卸載。
  QNX的微內核結構,內核獨立自處於一個被保護的地址空間;驅動程序、網絡協議和應
用程序處地程序空間中。
  微內核結構的優點:①驅動程序、網絡協議、文件系統等操作系統模塊和內核相互獨立
,任何模塊的故障都不會導致內核的崩潰;②驅動程序、網絡協議、文件系統和應用程序都
處於程序空間,都調用相同的內核API,開發與調試和應用程序沒有區別;③操作系統功能
模塊可以根據需要動態地加載或卸載,不需要編譯內核。在高可靠性要求的情況下,可以編
寫監視模塊,對可靠性要求高的模塊進行監視,必要的時候重新啓動或重新加載而無須重啓
系統。高可靠性的內核結構使QNX具備了高可靠性嵌入式操作系統的本質特徵。
  在具有高可靠性內核的基礎上,QNX的創新設計使它同樣具有很高的效率。QNX最爲引人
注目的地方是,它是UNIX的同胞異構體,保持了和UNIX的高度相似性,絕大多數UNIX或LINU
X應用程序可以在QNX下直接編譯生成。這意味着爲數衆多的穩定成熟的UNIX、LINUX應用可
以直接移植到QNX這個更加穩定高效的實時嵌入式平臺上來。
  2 QNX網絡結構
  QNZ網絡子系統由三個部分組成:網絡管理模塊(io-net)、網絡協議模塊(npm-qnet.
so、npm-tcpip.so)、網絡設備驅動模塊(devn-ne2000.so)。
  每個模塊各自具有不同的功能,但是它們具有一些相同的屬性。如:網絡設備驅動、TC
P/IP協議棧分別對上層io-net模塊和應用程序產生數據,兩者都可以被看作數據源;同時它
們也接受上層發來的數據,又可以同時被看作數據的消費者。過濾模塊對向上的數據進行篩
選,分協議進行處理;對向下的數據則進行相應的轉換,如進行網絡地址轉換NAT。轉換模
塊負責不同協議幀結構的轉換,在以太網的工作環境下,它就負責對IP數據報進行以太網幀
的封裝和解包。
  和QNX其它服務進程一樣,QNX的網絡子系統也在內核外部空間運行。應用程序面對的是
一個統一的網絡接口,硬件相關的內容被完全包裝在網絡子系統內。
  QNX網絡子系統的三個子模塊按層次分開,io-net模塊處於中心,是QNX網絡的核心和重
點,其它模塊都掛接在它上面。數據和信息的流動都必須經由io-net調度與轉發,所有其它
模塊所面對的就是一個單一主體。這樣的中心交換結構,屏蔽了各個模塊間相互協調的複雜
細節,在很大程序上方便了模塊的編寫工作;同時,io-net還是QNX的網絡管理中心。任何
網絡協議和網絡設備驅動程序都必須向io-net註冊,由它來加載,並接受io-net的配置和管
理,用戶對網絡狀態的查詢和管理也是通過io-net來實現的。
  3 QNX網絡設備驅動
  QNX網絡設備驅動模塊處於網絡硬件和io-net模塊之間。驅動模塊負責配置硬件使其正
常工作,向io-net報告數據收發情況,接收和傳遞數據,接受io-net的調度和管理。QNX網
絡設備驅動程序依照以上功能,分爲初始化、接收發送數據、網絡設備信息統計幾個功能塊
。要使網絡設備工作正常,驅動程序就要對它進行一定的寄存器配置,同時,還要向QNX網
絡子系統註冊自己,表明網絡設備的存在和網絡通信能力,才能爲系統和應用程序所用。在
初始化工作完成以後,網絡設備就進入了工作狀態,收發數據。設備信息的統計也是由設備
驅動程序來完成的。
  (1)初始化
  初始化包括兩個方面,一方面是初始化網絡設備,使其正常工作;另一個方面,是向io
-net正確註冊驅動模塊,表明自己的屬性,方便上層正確操作。網絡設備的初始化工作和硬
件緊密相關,這裏就不一一描述。
  驅動模塊向io-net加載自己的時候,系統遵循如下工作流程:
  ①io-net搜索全局的符合io_net_dll_entry。它定義了驅動的初始化函數,io-net會直
接調用這個函數。
  ②初始化函數向io-net註冊驅動和相應的函數。
  ③初始化函數告訴io-net和它的模塊自己的通信能力。
  經過以上流程以後,io-net中就建立起有關此驅動程序的數據和函數調用列表。驅動程
序必須正確編寫初始化函數,並將該函數正確鏈接至io_net_dll_entry。
  (2)從網絡設備接收數據
  當有包到達網絡設備的時候,網絡設備就會用某種方式通知驅動程序(例如中斷),此
時,驅動程序就要採取某種策略來處理到來的幀或數據。通常驅動程序這時候需要做以下工
作:
  ①通過DMA將包取回來;
  ②做相應的必要處理,如通知網絡設備釋放當前幀的緩存,配置寄存器讓網絡設備等待
下一幀到來等;
  ③通過調用io-net的tx_up_start()函數把包傳遞給上層模塊。
  當上層所有的模塊都完成對這個包的處理以後,io-net調用我們驅動中的tx_done()
函數,它來做最後的處理工作。
  tx_up_start()函數是設備驅動中比較關鍵的函數,下面簡要部分一下這個函數的入
口參數。
  npkt_t*(*tx_up_start)(int registrant_hdl,
  nptk_t *npkt,
  int off,
  int framelen_sub,
  uint16_t cell,
  uint 16_t endpoint,
  uint16_t iface,
  void *done_hdl)
  其中:int registrant_hdl--本驅動在io-net中的句柄,註冊時由io-net生成;
  nptk_t *npkt --需要處理的包的指針;
  int off--底層協議包頭長度,如以太網幀頭部長度;
  int framelen_sub--尾部填充的長度,對於以太網這個值爲零;
  uint16_t cell、uint16_t
endpoint--endpoint和cell是io-net在註冊的時候分配的用來區別不同的驅動;
  uint16_t iface--接口號,可以讓同一個驅動負現多個相同硬件;
  void *done_hdl--該指針指向tx_done()函數需要的額外數據。
  (3)向網絡設備發送數據
  當上層模塊需要硬件傳送包的時候,會調用io-net管理器的rx_down()函數。
  int(*rx_down)(npkt_t*npkt,
  void *func_hdl)
  rx_down函數入口參數中,npkt是指向需要傳送的數據的結構指針,func_hdl是相應驅
動模塊在io-net中的句柄。其中npt結構包含許多成員,其中的重要成員如:
  cell、endpoint、iface 需要處理該包的硬件標識
  buffers 指向包的指針
  tot_iov 包含數據包的所有I/O矢量
  Framelen 所有數據的長度,以字節爲單位
  驅動模塊在接收到io-net的調用後,就要配置網絡設備,讓它完成數據的發送工作。網
絡設備發送數據所需要的信息都會在相應的數據結構中,如net_buf_t結構中保存了等待傳
送的數據包的鏈接列表,配置DMA所需的物理地址在net_iov_t中等。驅動模塊要等待硬件完
成這些包的傳送,並調用io-net的tx)done()函數通知上層模塊驅動程序已經完成了數據
的發送。
  4 網絡設備信息的統計
  應用程序或者用戶可以通過網絡信息接口nicinfo工具來了解網絡工作狀態。信息的查
詢都是通過io-net來進行的。驅動程序必須維護相應的狀態數據,方便io-net的查詢。網絡
設備有一些共同的狀態屬性,如收到和發出的包的個數、發送錯誤的包的個數等,不同的網
絡設備還會具有不同的屬性和狀態,這些都可以在驅動程序中用數據結構詳細列明。
  需要維護的數據結構中,主要的是Nic_t,它包括四個子結構;
  CustNicStats--網絡信息入口;
  EthernesStats_t--以太網狀態;
  GenStats_t--常用統計信息;
  NetStats_t--網絡信息(包含常用統計信息)。
  以上是驅動程序需要維護的數據。當用戶或應用程序要查詢這些信息的時候,它們就通
過Nicinfo工具對/dev/io-net/en0調用devctl()函數來取得網絡信息。信息的取得是必須通
過io-net來完成的,io-net對信息的查詢則是通過調用io_net_register_funs_t結構中所指
向的函數來取得信息的。例:
  #include<sys/nic.h>
  int generic_eth_devctl(void *hdl,int dcmd,void *data,size_t size,int
*ret)
  {
  Nic_t *nic=(Nic_t *)hdl;
  int status;
  status=EOK;
  switch(dcmd){
  case DCMD_IO_NET_NICINFO;
  memcpy(data,nic,min(size,sizeof(Nic_t)));
  break;
  default:
  status=ENOTSUP;
  break;
  }
  return(status);
  }
  結束語
  網絡設備的驅動是網絡系統的最低層和最基礎的模塊,是如今嵌入式開發中首先要解決
的問題之一。由於QNX具有微內核的特點,其網絡設備驅動程序的開發不需要內核調試,更
適合初學者掌握。本文對QNX操作系統及網絡設備驅動程序的介紹,可以幫助讀者對相關內
容作初步瞭解。
  QNX用戶評價:
  QNX有一個非常華麗的圖形界面,並且號稱運行速度比Windows或Linux更快。不用不知
道,一用你會忘不掉:P
  壟斷的微軟Windows操作系統和自由的Linux操作系統都是很多朋友熟知的計算機主要的
操作系統。但是您聽說過QNX計算機操作系統嗎?如果我告訴您QNX操作系統運行的速度比Wi
ndows或Linux還快,而且用戶界面也十分華麗,您相信嗎?
  別以爲QNX是剛剛誕生的計算機操作系統,它早就在20年前就誕生了,但是QNX作爲一種
專業的操作系統,至今它還未能進入普通用戶的計算機爲我們服務。其中的原因無疑是很復
雜的。
  QNX的發音也十分有趣,大家知道Linux用漢語發音就是“裏訥克斯”,而QNX的發音就
是“cue-nix”:)。如果您使用的是Pentium處理器系列的計算機,那麼在這臺計算機的硬
盤上安裝QNX操作系統是很容易的事情,QNX可以在Windows下安裝,它和Linux一樣,是一種
類UNIX的操作系統。另人驚異的是QNX也是免費的操作系統,可以直接到QNX的網站上下載這
個原版操作系統。當然,購買一張QNX的CD-ROM也是很方便的。一張QNX的安裝盤CD-ROM售價
爲30美圓。在QNX的主頁上有很詳細的介紹和資料,還有關於QNX的新聞及應用軟件可供用戶
閱讀下載。
  有了QNX,您計算機裏的操作系統不只是Windows獨霸了,QNX完全可以取代霸道的Windo
ws平臺。很多初學計算機的朋友因爲接觸最多的是Windows平臺,以至於他們誤認爲Windows
98就是“OS”的唯一選擇。現在不同了,使用QNX同樣也能很好的管理計算機了。
  簡單的說,操作系統就是給計算機一個靈活的大腦,一個強健的心臟和突出的個性。沒
有操作系統,計算機什麼也做不了,只能是一堆廢物。
  QNX是由一家位於加拿大的QNX軟件系統公司(簡稱QSSL)推出的。該公司位於渥太華(
加拿大城市)的市郊。最近從該公司傳來好消息說,該公司已經面向普通用戶推出了可以免
費使用、非商業用的個人用戶版本的QNX實時平臺或稱作QNX
RTP,最小的在Windows下安裝文件只有24MB。當這個版本正式向公衆推出的時候,大約有40
0000人次從網上下載了這個QNX
RTP版本。這大大出乎了意料,沒有想到竟然有這麼多人對這個操作系統感興趣。因爲很多
人在以前根本就沒有聽說過世界上還有這麼一個免費的QNX操作系統。
  現在要在這麼一臺電腦上試裝這個QNX操作系統。電腦的硬件配置爲233 MHZ AMD K6
處理器,96MB內存,ATI All-in-Wonder Pro顯示卡,Sound Blaster AWE 32
聲卡,兩個硬盤驅動器和兩個CD-ROM驅動器,一個SCSI硬盤和一塊標準的網卡。
  在安裝的過程中除了遇到一個小故障之外,一切還算順利。那塊SCSI卡沒有能被QNX自
動配置。查閱QSSL公司的資料,該公司說他們正在努力的修正這個SCSI的問題。
  如果您是一位有經驗的Linux用戶,那麼QNX會使您很快就能上手。雖然它和Linux有很
大的區別。QNX
RTP使用的命令和操作是和Linux的許多“shell”命令是兼容的。更令人滿意的是QNX的文件
分級目錄(組織,文件名和目錄)和Linux幾乎是一樣的。可以說QNX
RTP和舊的Linux是十分相象的。這對許多喜歡Linux,對Linux有一定實際操作經驗的用戶來
說無疑是一個福音。QNX在他們手裏很快就能玩轉。
  但QNX和Linux最大的不同就是QNX的圖形用戶界面設計的十分漂亮。儘管Linux使用的是
經久世故的X
Window系統,但是和QNX的稱爲“Photon”的圖形用戶界面相比還是顯得QNX略省一籌。 
  不用不知道,一用忘不掉:QNX RTP的圖形用戶界面-Photon MicroGUI非常酷
  QNX的Photon
MicroGUI窗口系統是最“酷”的GUI(圖形用戶界面)。安裝QNX後,你就會發現QNX的默認
桌面背景“炫”得讓你暈倒,得讓人給你叫個醫生來了:)。
  另外要提到的是,QNX RTP
的運行速度是那樣的快,是否所有的用戶都能夠接受?沒有錯,在同樣的電腦硬件配置情況
下,QNX確實運行速度要比其他的Windows系統要快得多。在使用鼠標和窗口的操作界面下,
QNX的運行速度確實是讓人滿意的。給人以一種“豪爽”的感覺。
  以上關於QNX的優點介紹得讓你立刻想鼓掌,狠不得馬上下載一個QNX試一試,但是有些
問題是要說清楚的。QNX儘管是非常好的一個操作系統。但是你平時主要工作如果需要處理
電子表格,管理金融等等,那麼QNX可能不太適合你。因爲能在QNX下運行的應用軟件並不多
。這也是制約QNX發展的一個重要原因了。
  但是也不必太擔心軟件不夠用的問題,起碼QNX能讓你進行很多基本的操作。你可以用Q
NX來計算數據,播放CD音樂,使用電子郵件程序,進行文字處理工作,簡單的圖象瀏覽,還
有一些Linux上已經除去的屏幕保護程序,桌面背景轉換,軟件的安裝管理功能等等。甚至
你還可以在QNX上添加專用版本的Real
Player軟件,喜歡玩遊戲的朋友還可以安裝Quake這個著名的遊戲。所有在QNX上玩過Quake
的朋友都說Quake在QNX上的運行速度比任何操作系統都要快。這確實是一個對遊戲迷來說是
非常好的消息。
  好了,現在我們來總結一下QNX的所有優點:
  速度極快:QNX的運行速度非常快,其他的操作系統沒有辦法和它相比。
  系統非常安全:QNX上沒有計算機病毒,這是和Linux一樣的,所以QNX
RTP不存在被病毒破壞資料的危險,只有在微軟Windows系統中纔會有被病毒感染的噩夢。另
外,QNX的用戶管理相當出色,它絕對不會讓一個沒有輸入正確密碼的人闖入計算機系統中

  QNX有一個最好的網頁瀏覽器:QNX裏的網頁瀏覽器叫做“Voyager”,瀏覽網頁的速度
快得象火箭。和Voyager相比,微軟的IE和網景公司的NC瀏覽器簡直就是一輛破舊的老爺車
。但是這個Voyager瀏覽器目前還有些臭蟲,QSSL公司的軟件工程師正在改進它。
  QNX的最大不同:QNX完全不像Windows,那是一件好事情。它是免費的操作系統,可以
在網上下載安裝使用。它的使用和操作也十分的容易。

 


=============================================================
QNX Neutrino  QNX Neutrino 實時操作系統
  從1980年起,生產商就開始把QNX的操作系統使用在他們重要的應用上。從醫藥器材、
互聯網路由器到電訊系統、911報警裝置、處理控制系統、甚至航天系統,凡是需要一天24
小時不間斷運行的系統都離不開QNX實時操作系統。因爲QNX實時操作系統給他們提供標準的
穩定性,容錯性和兼容性。
  是什麼使得QNX Neutrino
實時操作系統如此的傑出?那是因爲它是一個真正的微內核操作系統。在QNX Neutrino
實時操作系統 (QNX Neutrino Real time Operating System)
裏的每一個驅動程序、應用、協議棧和文件系統都在內核的外部運行。因爲如此,當以上任
何一個系統發生問題時,實時操作系統會立即使此項運行停止,並重新啓動這項系統,與此
同時,其他所有的系統和內核的運行不會因此而受影響。QNX
Neutrino是目前市場上唯一一個擁有以上功能的實時操作系統。
  功能和優點
  QNX Neutrino 實時操作系統給您帶來:
  ·
設計能夠隨時進行現場升級,從而延長系統生存週期並擴展具有系統機能的高穩定性系統。
  ·
完善的自治癒系統使整個操作系統本身能很快地進行糾錯並排錯,從而大大提高了操作系統
的可利用率。
  ·
按照各個應用的需要,選擇您所需的元件進行操作,也可利用內置的對稱式多重處理器,來
增強雙處理器的性能。
  ·
擁有設計簡單的容錯集羣,只要在網絡上再多連接一臺中央處理器,多臺處理器間就能各自
獨立地進行分佈處理,這樣一來就提高了系統的工作效率。
  · 通過快速準確地實時響應來優化系統的性能。
  ·
通過對POSIX標準的可擴充性的支持,增強了應用的可移植性,使客戶從Linux,Unix和其他
開放資源程序上,更快地移植到QNX上來。
  ·
通過對較先進的網絡瀏覽器、多層顯示和三維立體顯示的支持,來呈現更好的圖表用戶界面

  ·
通過可擴增到4G的內存容量,使PowerPC、MIPS和X86的處理器的物理地址的範圍大大擴大了

  ·
爲您的操作系統尋覓最好的硬件平臺,通過運行支持和適合的常見芯片(如:MIPS,PowerPC
,SH-4,ARM,StrongArm,XScale和X86)的開發包,使系統能更快地啓動和操作。


================================================================
================================================================
================================================================
================================================================
================================================================
================================================================
================================================================

發佈了176 篇原創文章 · 獲贊 14 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章