找回密码
 注册
搜索
查看: 3359|回复: 10

车载电子OS_QNX开发手册_1.1

[复制链接]
发表于 2011-1-21 11:16:26 | 显示全部楼层 |阅读模式
  前言

  QNX操作系统是一个分布式网络实时操作系统,它是加拿大QuantumSoftwareSystems公司的产品。该产品1982年推出在IBMPC机上使用的多用户、多任务实时操作系统版本。1984年,将局域网络集成到该操作系统中,并使用了AT机的保护模式。随后,QNX的设计者们不断地将它标准化,如遵从IEEE的可移植操作系统标准,并增加了新的功能,使它既可以运行在PC及其兼容机上,又可以运行在PS/2机上。2.15版的QNX操作系统集成的网络是采用令牌环网协议,支持255个节点,共享程序、文件和设备。4.x版的QNX操作系统集成的网络符合IEEE802.3以太网协议。随着版本的升高,性能也在不断提高。

  QNX是一个实时操作系统。它提供用户可控制的、优先级驱动的、急者优先抢占的调度方式。它德自身开销小、上下文切换快,在同样的硬件条件下给实时应用留下更大的余地,因而它在实时控制、通信、多媒体信息处理等对时间敏感的应用领域大有用武之地。

  QNX是一个可嵌入的操作系统。它由微内核和一组共操作的进程构成,具有高度可伸缩性,可灵活的剪裁。最小配置只占用几十KB内存。因此,它可以广泛地嵌入到智能机器、智能仪器仪表、通信设备等应用中去。

  随着QNX的深入使用和计算机软件技术的发展,QNX设计者又推出了QNXforWindows(Phindows);许多软件开发者在此基础上作了二次开发,充分利用了QNX的实时性能和网络通信能力,同时增加了图形界面,使QNX更具生命力。

  CSM300E综合控制主站就是在实时多任务操作系统——QNX的平台上开发的。它秉承了QNX实时性能高、稳定性能好的优点,最大程度地利用操作系统的各种优越性能,使我公司的远动主站迈上了一个崭新的台阶。

  为了使广大技术、开发人员能够在短时间内对QNX操作系统及在QNX下的编程有一个初步的了解,我们特地编写此开发手册。如果您想深入学习QNX及编程知识,请参考其它书目和联机文档。此开发手册的章节安排如下:

  第一章QNX概述       

  1.1QNX特点        介绍QNX操作系统的主要特点

  1.2QNX系统结构        介绍QNX的一些抽象概念

  1.3进程间通信        介绍几种QNX间任务传输信息的基本方法

  第二章QNX常用命令       

  2.1系统命令        介绍一些QNX常用的系统命令

  2.2文件操作命令        介绍一些QNX操作文件系统的命令

  第三章QNX应用程序开发       

  3.1开发环境        介绍有关QNX应用程序开发的基本知识

  3.2开发过程举例        通过具体实例介绍QNX应用程序的开发过程

  
 楼主| 发表于 2011-1-21 14:16:44 | 显示全部楼层
  If you need more information, please refer to the attachement.





    【文件名】:11121@52RD_QNX开发手册(1.1版).doc

  【格式】:doc

  【大小】:1932K

  【目录】:

  第一章QNX概述       

  1.1QNX特点        介绍QNX操作系统的主要特点

  1.2QNX系统结构        介绍QNX的一些抽象概念

  1.3进程间通信        介绍几种QNX间任务传输信息的基本方法

  第二章QNX常用命令       

  2.1系统命令        介绍一些QNX常用的系统命令

  2.2文件操作命令        介绍一些QNX操作文件系统的命令

  第三章QNX应用程序开发       

  3.1开发环境        介绍有关QNX应用程序开发的基本知识

  3.2开发过程举例        通过具体实例介绍QNX应用程序的开发过程

  

  

  
点评回复

使用道具 举报

 楼主| 发表于 2011-1-21 13:54:56 | 显示全部楼层
  2.2文件操作命令

  QNX系统中带有很多操作文件系统的命令和工具,从简单的列文件命令到复杂的比较文件命令diff和字符串搜索命令grep等。本节中对一些常用文件操作命令进行介绍。

  2.2.1显示文件内容的命令——cat

  cat命令有点类似于DOS下的type命令,它用于显示文件的内容。其格式为:

  [Code]cat[-u][-s][-v[-t][-e]]files[Code]

  例2.10假设用户处于目录/300e/config并想在终端上显示文件comn1.sys的内容,可以在提示符下输入如下命令:

  #catcomn1.sys<CR>

  Protocol:U4F

  Baudrate:600

  set_clock:No

  base_year:0

  logic_rtu:1

  rtu_codes(H):2

  yk_lock_check:YES

  #

  正如cat命令格式中暗示的那样,cat可以同时显示两个或多个文件的内容,只要把想要显示的几个文件的名字依次输入,加在命令行中即可。也可以将cat命令的输出改向,送入另一个文件或一个新文件。如:

  例2.11假设用户处于目录/300e/config并想将qcdt.sys的内容赋到channel1.sys中,除了cp命令外,还可以在提示符下输入如下命令:

  #catqcdt.sys>channel1.sys<CR>

  #

  如果用户要了解cat命令参数的用法及更多的信息,请参阅联机帮助或有关文档。

  2.2.2文件处理命令——diff、grep、sort、wc

  在处理文件时,可能需要一些更高级的信息处理方法,本小节将介绍4个非常有用的文件处理命令:

  &#8226;diff—用于找出两个文件的不同之处。

  &#8226;grep—用于在文件中搜索一种模式。

  &#8226;sort—用于排序和合并文件。

  &#8226;wc—计算文件行数、词数和字符数。

  1、diff命令

  diff命令能够找出并报告两个文件之间的所有差别,而且告诉用户怎样改变第一个文件以使其与第二个文件相同。这条命令的基本格式为

  difffile1file2

  若file1和file2是相同的,则系统将回送一个提示符;若不同,diff命令将告诉用户两个文件的各个不同之处。QNX系统用小于号(“<”)标志file1中的行,用大于号(“>”)标志file2中的行。

  例2.12假设执行diff命令以确定文件comn1.sys和comn2.sys之间的差别,在提示符下输入如下命令:

  #diffcomn1.syscomn2.sys<CR>

  6,7c6,7

  <rtu_codes(H):2

  <yk_lock_check:NO

  ---

  >rtu_codes(H):1

  >yk_lock_check:YES

  #

  上面例子diff命令输出的第一行为:

  6,7c6,7

  这意味着若想让comn1.sys和comn2.sys相同,就必须把comn1.sys的第六和第七行更改为comn2.sys的第六和第七行,接下来diff命令显示了两者的这些行。

  如果用户要了解diff命令更多的信息,请参阅联机帮助或有关文档。

  2、grep命令

  grep命令用来使QNX系统在一个文件中搜索某个指定的词、短语或字符串。搜索的模式为正则表达式,简单地说,一个正则表达式是所指定的任何字符模式(一个词、一个短语或一个表达式)。有关正则表达式的内容请参阅有关文档。grep命令的基本格式为

  greppatternfiles

  例2.13为了在channel1.sys和channel2.sys两个文件中查找字符串“protocol”(不区分大小写),在提示符下输入如下命令:

  #grep–iprotocolchannel1.syschannel2.sys<CR>

  channel1.sys:Protocol:U4F

  channel2.sys:Protocol:CDT

  #

  如果用户要了解grep命令更多的信息,请参阅联机帮助或有关文档。

  3、sort命令

  sort命令用来使指定文件中的行以一系列规则排序和合并。它的排序规则为:

  &#8226;以数目开头的行按数字排序,并被列在以字母开头的行之前。

  &#8226;以大写字母开头的行,被列在以小写字母开头的行之前。

  &#8226;以符号如*、%或@开头的行,按这些符号的ASCII码顺序排序。

  如果用户要了解sort命令更多的信息,请参阅联机帮助或有关文档。

  4、wc命令

  wc命令给出命令行中指定文件所具有的行数、词数和字符数,若命令行中含有多个文件,则wc程序先分别给出每个指定文件的行数、词数和字符数,然后再给出这些文件的行数、词数和字符数的总数。此命令的格式为

  wc[-lwcht]files

  其中:

  l代表文件的行数。

  w代表文件的词数。

  c代表文件的字符数。

  h在行数、词数或字符数的上方显示一个题头。

  t对于多个文件,不显示行数、词数或字符数的总数。

  例2.14为了当前目录中文件dbms.cfg和ser.cfg的行、词和字符数,在提示符下输入如下命令:

  #wc–hdbms.cfgser.cfg<CR>

  lineswordsbytes

  2915955333dbms.cfg

  739256ser.cfg

  2986345589Total

  #

  2.2.3文件的拷贝、移动和删除——cp、mv、rm

  本节讨论在使用文件时所必需的QNX系统命令:

  &#8226;cp—拷贝一个已存在的文件。

  &#8226;mv—移动和重新命名文件。

  &#8226;rm—删除文件。

  1、cp命令

  cp用于拷贝一个或多个文件。它可以将一个文件中的内容完全复制到另一个文件中,也允许将一个或多个文件从一个目录复制到另一个目录中,并在原目录保留原来的文件。cp命令的基本格式为

  cpsource_filetarget_file

  QNX系统不允许在一个目录中存在两个名字相同的文件。如果在使用cp命令之前,目标文件不存在,则在cp命令发出后,系统就用目标文件名建立一个新文件。然而,如果以目标文件命名的文件已经存在,那么在使用cp命令后,它将被源文件的拷贝所替代,同时它的以前版本也将被覆盖。

  &#61552;注意:cp命令不能用于复制目录。

  如果用户要了解cp命令更多的信息,请参阅联机帮助或有关文档。

  2、mv命令

  mv命令可对一个文件进行重新命名,或者把文件从一个目录移到另一个目录。当把文件从一个目录移动到另一个目录中时,这个文件可以重新命名,也可以使用它以前的名字。mv命令的基本格式为

  mvsource_filetarget_file

  例2.15如果想将qcdt.sys更名为channel1.sys,在提示符下输入如下命令:

  #mvqcdt.syschannel1.sys<CR>

  #

  例如,如果想将/300e/config/qcdt.sys移动到/300e1/config目录下,并将其更名为channel1.sys,在提示符下输入如下命令:

  #mv/300e/config/qcdt.sys/300e1/config/channel1.sys<CR>

  #

  3、rm命令

  当不需要一个文件时,可以执行rm命令将其从目录中删除,也可以一次删除多个文件,此时命令行中指定要删去的几个文件名之间必须用空格分开。一般情况下,在QNX系统中并不保留被删除文件的副本,所以一旦执行了rm命令,文件将永久性的被删除,不能被恢复。

  如果要被删除的文件是一个符号链接,那么只删除这个链接,它所指向的文件并不被删除。只要用户对目录有写权限,那么它对一个符号链接无需写权限就可以进行删除。

  rm命令的基本格式为

  rm[-r][-f][-i]files

  其中:

  -f使得目录中的所有文件都被删除,并且不提示用户。然而,在一个写保护(即不具备写权限)的目录中,不会删除任何文件,也不显示任何信息。如果试图删除一个写保护的目录,那么这个选项不显示出错信息。

  -r递归地删除参数中的所有目录和子目录。使用该选项时,遇到的符号链接不会沿符号链接的指向进行下去,如果想删除一个非空的写保护的目录,那么命令会失败,并且产生一个出错消息。

  -i删除时和用户进行交互确认,它覆盖了-f的功能。

  &#61552;注意:目录文件“.”和“..”是禁止删除的。

  如果用户要了解rm命令更多的信息,请参阅联机帮助或有关文档。

  2.2.4目录操作——cd、mkdir、rmdir

  本节讨论在对目录操作时所必需的QNX系统命令:

  &#8226;cd—改变当前工作目录。

  &#8226;mkdir—建立目录。

  &#8226;rmdir—删除目录。

  1、cd命令

  刚登录进入QNX系统时,用户被置于起始目录处,只要工作在该处,它就一直是用户的当前工作目录。然而,通过使用cd命令可以改变到其它目录处工作。cd命令的基本格式为

  cdtarget_path

  为了使用cd命令,只要在cd后带上想移至的目录路径名作为参数即可,任何有效的路径名(全路径名或相对路径名)都可以用作cd命令的参数。若不规定路径名,这个命令将把工作目录移到起始目录处。一旦移到了一个新的目录,这个目录就称为当前目录。

  例2.16假设当前目录为/300e/bin,若想将当前目录移到/300e/config,则既可以使用绝对路径名,也可以使用相对路径名,在提示符下输入如下命令:

  #pwd<CR>

  /300e/bin

  #cd/300e/config<CR>(使用绝对路径名)

  #

  #cd../config<CR>(使用相对路径名)

  #

  &#61647;技巧:没有必要非在某个目录处才能访问它所包含的文件,可以指明全路径名或相对路径名。如,当前目录为/300e/bin,倘若需要cat目录/300e/config/下的文件comn1.sys时,可在命令行上指明comn1.sys的全路径名

  (命令格式:cat/300e/config/comn1.sys)

  或相对路径名

  (命令格式:cat../config/comn1.sys)。

  2、mkdir命令

  为了建立目录,使用命令mkdir,后面跟随新目录名字。建立目录要求用户对父目录具有写权限。mkdir的命令格式为

  mkdir[-mmode][-p]目录名列表

  其中:

  -m给新目录指定操作权限。

  -p如果父目录不存在,先建立父目录。

  例2.17假设当前目录为/300e,若想在此目录下同时建立3个目录(分别为bin、config、lib),在提示符下输入如下命令:

  #pwd<CR>

  /300e

  #mkdirbinconfiglib

  #

  &#61552;注意:mkdir将会自动建立新目录中的2个标准登记项,即文件“.”和“..”,mkdir不能通过名字来建立这些登记项。

  3、rmdir命令

  若不再需要某个目录,可用命令rmdir删除它。这条命令的标准格式为

  rmdir[-p]目录名列表

  其中:

  -p允许用户删除目录,如果该目录的父目录为空,那么也将被删除。

  与mkdir命令相同,rmdir命令也可以在命令行中指定一个以上的目录名。

  &#61552;注意:若想删除一个仍旧包含子目录和文件(即非空)的目录,则rmdir命令将显示消息:Directorynotempty。必须删除该目录下的所有子目录和文件之后才能使rmdir命令生效。

  2.2.5设置文件和目录的操作权限——chmod

  本节讨论设置文件和目录的操作权限所使用的命令:chmod命令。

  1、保护文件

  命令chmod允许用户决定谁可以读、写和使用文件,以及谁不能这样做。

  可以使用下列3种符号指派权限类型:

  &#8226;r允许读一个文件或复制其内容。

  &#8226;w允许对一个文件进行写。

  &#8226;x允许运行一个可执行文件。

  系统中的所有用户,可以被分为三种类型:

  &#8226;u文件和目录的属主(u是user的缩写)。

  &#8226;g同组的成员。

  &#8226;o系统上所有其它的用户。

  当建立一个文件或目录时,系统自动授予(或拒绝授予)属主、同组成员和系统内其它用户的权限。不管在文件建立时这些权限是如何授予的,作为这个文件或目录的属主,总可以改变它们。

  例2.18可以通过ls–l命令来确定一个文件已有的权限,因为这一命令能产生目录内容的长格式清单。例如,假设当前目录为/300e,在提示符下输入如下命令:

  #ls-l<CR>

  total56

  drwxr-xr--7rootroot4096Apr0909:13.

  drwxrwxr-x18rootroot4096Apr2816:49..

  drwxr-xr--2rootroot4096May1413:25bin

  ......

  #

  对于目录“.”、“..”和“bin”的权限,显示在total56下,并且以下列形式显示:

  drwxr-xr--(.)

  drwxrwxr-x(..)

  drwxr-xr--(bin)

  在描述文件种类的起始字符之后,其它9个字符由表示权限的3组字符(每组3个字符)所组成。第一组指的是文件属主权限,第二组指的是同组成员的权限,最后一组指的是系统内其它所有用户的权限。每组字符中,r、w和x分别表示各组当前授予权限的情况,如果用短划线代替了r、w或x,则分别表示拒绝授予读、写或执行权限。如对于目录bin来说,目录属主具有r、w和x权限,同组成员有r和x权限,其它用户则只有r权限。

  2、改变已有权限

  可以用下列格式执行chmod命令来改变用户对一个文件所具有的权限:

  chmodwho+permissionfiles

  chmodwho-permissionfiles

  其中:

  who三种用户之一(u、g、o)或全部用户(a)。

  +或-+表示授予,-表示拒绝授予权限。

  permission三种权限的任意组合(r、w或x)。

  files文件名或目录名(可以不止一个)。

  &#61552;注意:不要在who和+、-和permission之间输入空格,否则chmod命令不能正确执行。

  chmod命令可以通过两种方法执行。上面讲述的方法称为符号方法,它是用r、w和x这样的符号来定义权限的。另一种可供选择的方法是八进制法,它需要用3个八进制数(从0到7)来定义特权。使用这种方式的chmod命令格式为

  chmodnnnnfiles

  其中n是从0到7的数。第一个n在设置用户ID时使用,对于一般的文件n=0;后面3个n分别对应三种用户的三种权限,对应关系如下表

  八进制数        对应符号        权限

  0        ---        无任何权限

  1        --x        执行

  2        -w-        写

  3        -wx        写/执行

  4        r--        读

  5        r-x        读/执行

  6        rw-        读/写

  7        rwx        读/写/执行

  例2.19假设当前目录为/300e/bin,若想将此目录下的mkrtu文件的属性更改为所有用户可以进行读/写/执行,在提示符下输入如下命令:

  #chmod777mkrtu<CR>

  #

  如果用户要了解chmod命令更多的信息,请参阅联机帮助或有关文档。

  
点评回复

使用道具 举报

 楼主| 发表于 2011-1-21 11:38:18 | 显示全部楼层
  第二章QNX常用命令

  能够快速的了解QNX,无疑是每个QNX用户的基本愿望。本章的目的就在于引导QNX用户迅速掌握QNX的常用命令,为在QNX操作系统下进行应用程序开发打下坚实的基础。

  2.1系统命令

  本节介绍一些QNX的常用系统命令,用户可以通过这些命令,逐步地熟悉QNX系统的使用。

  2.1.1显示当前工作目录——pwd

  pwd是printworkingdirectory的缩写,它能够显示用户当前所处的目录名。

  例2.1如果用户以root登录,在提示符下执行pwd命令,则QNX将显示如下信息:

  #pwd<CR>

  /300e/bin

  #

  路径名/300e/bin告诉用户根目录(行首的“/”)含有目录300e,300e又含有目录bin。非根目录的其它斜线用来分隔目录和文件名,并且表明了每个目录相对于根的位置。以“/”开头的路径名称为绝对路径。在任何时刻,用户可以执行pwd命令,来判断当时用户在文件系统中的位置。

  2.1.2显示用户信息——who、finger

  1、who命令

  简单的格式是直接输入who命令,显示的信息包含当前QNX系统用户的登录名、终端线路和用户的登录时间。

  例2.2如果用户想知道自己的登录名,可以采用带amI或者ami参数的who命令,如下所示:

  #whoami<CR>

  root+//1/dev/ttyp0Apr2913:58

  #

  2、finger命令

  finger命令可以显示本地和远程用户的信息。

  例2.3在提示符下输入finger命令显示本地登录用户的信息,如下所示:

  #finger<CR>

  LoginNameTtyIdleLoginTimeOffice

  rootn14dApr2913:58

  rootp0-Apr2913:58

  #

  如果想显示某个用户的详细信息,则在finger后面加上要显示的用户名即可。此时,不管这个用户当前是否登录到系统上,系统都将显示该用户的具体信息。

  2.1.3显示和设置系统日期和时间——date

  date命令的简单格式就是在系统提示符后直接输入date,系统将显示当前的系统日期和时间。此外,还可以定制date的显示格式。

  例2.4

  #date<CR>

  SunApr2915:08:31wast2001-4-29

  #

  #date‘+DATE:%m/%d/%y%nTIME:%H:%M:%S’<CR>

  DATE:04/30/01

  TIME:15:09:19

  #

  对于系统管理员,可以通过date命令来设置系统的时间。

  2.1.4列目录——ls

  用户登录到QNX系统后,大部分时间都是与QNX的文件系统打交道。文件系统中的所有目录都具有关于它所含文件和目录的信息,如名字、大小和最近修改日期登。QNX的列目录命令为ls,用户通过执行此命令,可以获得当前目录以及其它系统目录在这方面的信息,并用参数指定输出目录信息的格式。

  例2.5最简单的命令就是在命令提示符下输入ls,系统将显示当前目录下的文件。如下所示:

  #ls<CR>

  .binincludesrc

  ..configlib

  #

  在上面的输出列表中,无法知道所列的名字是一个目录还是一个文件。可以采用-F参数,让QNX系统告诉用户哪些是目录,哪些是文件,哪些是可执行的。(名字后面带有“*”表示这是一个可执行文件,带“/”表示这是一个目录。)

  在QNX中,还可以采用带-R参数的ls命令来列出目录下所有子目录中的所有文件;采用带-l参数的ls命令获取文件和目录的更详细信息。关于ls命令更多参数的使用请参阅联机帮助或有关文档。

  2.1.5查找文件——find

  在QNX中,用来查找文件的命令是find。find命令格式比较复杂,可表示为:

  findpath-name-listexpression

  其中,path-name-list是路径名的列表,expression是要查找的文件名满足的表达式。

  例2.6最常用的命令就是在某一目录下查找指定的文件。如下所示:

  #find/300e–nameqrtu.c<CR>

  /300e/src/rtu/comn/qrtu.c

  #

  在上面的命令中,“/300e”表示在该目录中寻找,表达式“-nameqrtu.c”则表示指定查找文件名为qrtu.c的文件。

  如果用户要了解find命令更多的信息,请参阅联机帮助或有关文档。

  2.1.6浏览文本文件——more

  more是一个过滤程序,它在终端上显示文本文件的内容,每次一屏。通常,每显示出一屏后,它将暂停显示,并在屏幕底部显示--more--,表示文件还有内容未被显示。More对于“回车<CR>”键的响应为向上滚动一行,对“空格<SPACE>”键的响应则是显示下一屏。而且下一屏的第一行总是接着上一屏最末行的内容。

  此外,用户还可以输入其它的按键,让more执行其它功能。最常用的输入按键是“/”,用来查找某个字符串。

  如果用户要了解more命令更多的信息,请参阅联机帮助或有关文档。

  2.1.7显示进程状态——ps、sin

  1、ps命令

  ps是ProcessStatus的缩写,该命令显示整个系统及用户当前正在运行进程的情况。

  例2.7在命令提示符下输入如下命令:

  #ps<CR>

  PIDPGRPSIDPRISTATEBLKSIZECOMMAND

  11030fREADY262066K/boot/sys/Proc32–l1

  22010rRECV0108K/boot/sys/Slib32

  ......

  70837083610oWAIT-136K/bin/sh

  70907083610oREPLY124Kps

  #

  可以看到,命令的输出分成若干行,每行都包含一些相同类型的列。一个进程在输出数据中占一行,有多少行输出就表示当前shell运行期间有多少个程序正在运行。

  如果用户要了解ps命令更多的信息,请参阅联机帮助或有关文档。

  2、sin命令

  sin是SystemINformation的缩写,该命令显示整个系统运行的信息。它与ps命令比较接近。

  例2.8在命令提示符下输入如下命令:

  #sin<CR>

  SIDPIDPROGRAMPRISTATEBLKCODEDATA

  ----Microkernel-----------104480

  01/boot/sys/Proc3230fREADY---118k1392k

  02/boot/sys/Slib3210rRECV053k4096

  ......

  67083//1/bin/ksh10oWAIT-194k36k

  67105//1/bin/sin10oREPLY145k49k

  #

  如果用户要了解sin命令更多的信息,请参阅联机帮助或有关文档。

  2.1.8获得联机帮助——use

  在QNX系统中,当用户需要获取某个命令的用法时,可以通过use命令获得联机帮助。

  例2.9要查询use命令的用法,在命令提示符下输入如下命令:

  #useuse<CR>

  use–printausagemessage(QNX)

  use[-a]file

  Options:

  -aExtractsallusageinformationfromtheloadmodulein

  itssourceform,suitableforpipingintousemsg.

  Where:

  Fileisanexecutableloadmoduleorshellscriptthat

  Containsausagemessage(seeprinteddocumentation

  foruseandusemsgfordetails).

  #

  前面介绍的所有命令都可以在shell下通过use命令来得到其使用说明。

  
点评回复

使用道具 举报

 楼主| 发表于 2011-1-21 11:31:57 | 显示全部楼层

1.3进程间通信

  1.3进程间通信

  进程间通信(IPC——inter-processcommunication)是QNX区别于其它系统的一个主要标志。QNX系统采用此思想执行任务并在任务间传输信息,IPC能有效地管理任务之间的信息传输,QNX系统中所有的系统服务、设备驱动和应用都依赖于它。

  QNX在任务间传输信息有许多种基本方法,下面分别对它们进行说明。

  1.3.1内部任务消息

  消息是一组数据,这些数据从一个任务传送到另一个任务,数据从第一个任务地址空间复制到第二个任务地址空间时,第一个任务的执行将被挂起,直到第二个任务返回应答消息。消息是进程间通信的进本形式。QNX不对消息的内容附加任何解释信息,因此消息的内容仅对消息的发送者及接收者有意义。对消息的主要操作是发送、接收和应答。

  1.3.2代理

  代理是一种特殊的消息通信形式。一个代理是一种非阻塞式的消息,特别适用于事件通知亦即发送进程不需要与接收进程进行交互的场合。一个代理的唯一作用就是向拥有该代理的特定进程传送一个固定消息。通过使用代理,一个进程或一个中断处理程序可以在不被阻塞和不必等待回答的情况下向另一个进程发送消息。

  1.3.3信号

  信号是一种已使用了几十年的被各种操作系统用于进程之间异步通信的传统方法。QNX支持一个内容丰富的POSIX兼容的信号集合,以及部分传统的UNIX信号和QNX特有信号。

  1.3.4共享内存

  在QNX中,所有已分配的内存都被已激活的任务所拥有,共享内存意味着至少有一个其它任务通过指针直接存取某任务已拥有的数据。当然,这种共享内存的任务是在同一物理节点上。共享内存是交换信息最快的方法,但若不采取同步措施,往往也容易出错。例如,两个任务同时修改一个记录而没有协调,则一个修改就会丢失。这一点在编程时要特别注意。

  1.3.5消息队列

  QNX还提供了另一种形式的消息,称为队列。一个队列是一个简单数据域,它由另一个任务管理。该任务暂时接收和发送消息,并立即向发送这应答。这时,并不象标准的消息传输,发送这可立即解挂而继续执行。队列保存消息直到接收任务将它取走,接收任务直接向队列请求消息。

  
点评回复

使用道具 举报

 楼主| 发表于 2011-1-21 11:29:52 | 显示全部楼层

1.2 QNX系统结构

  1.2QNX系统结构

  QNX系统定义了一些抽象的概念,诸如任务、消息、资源和节点等。任务是一个可执行单元,它可通过消息等手段对资源进行操作和与其它任务进行通信。典型的资源有内存和文件。网络上不同节点的两个任务可以不关心它们的状态而很方便地进行通信。

  1.2.1任务

  任务是一个可调度的执行单元,换句话说,任务是由执行代码和只能由该任务存取的私有数据组成。大多数时间任务是独立运行的,只有在与其它任务或资源同步时暂停一刻。操作系统基于轮巡方式或预先定义的优先级方式来调度机器上的任务。相同优先级的任务只能按时间片轮流运行。低优先级任务必须等高优先级任务的I/O操作或其它操作完成挂起后才能运行,而最高优先级任务准备就绪就可运行。如果高优先级任务一直在运行,低优先级任务就无法运行。

  1.2.2文件

  文件系统将磁盘上文件按目录树方式组织起来。文件包含数据并且可驻存在任意目录层中。目录包含有关文件和其它目录信息,诸如它们的名字和存取权限。因此目录就象个“盒子”,可以达到任意深度。文件和目录都有唯一的名字。

  QNX实现了至少六种文件类型,其中五种是由文件系统管理器(Fsys)来管理的。这些文件类型是:

  常规文件——由可随机存取的一系列字节组成,无任何预定义的结构。

  目录文件——包含查找常规文件需要用到的位置信息,也包含每个常规文件的状态和属性信息。

  符号链文件——包含着指向一个文件或目录的路径名,使人们可以通过该符号链来实现对该文件或目录的存取。这类文件常被用来产生指向单个文件的多个路径。

  管道和FIFO文件——可用作共操作进程之间的I/O通道。

  块特殊文件——用于指向设备,如磁盘驱动器、磁带和磁盘驱动器分区等。有了这些文件,应用程序可在不需要知道设备的硬件特征情况下对设备进行方便的存取。

  第六种文件类型——字符特殊文件,由设备管理器负责管理。其它可能的文件类型则由其它管理器负责管理。

  1.2.3设备

  一般来说,除了硬盘外,其它外围设备都称为设备。这包括系统控制台、终端、打印机、调制解调器等。QNX的设备管理器(Dev)就是进程和这些设备之间的接口。系统中硬盘和节点是被编号的,而设备是被命名的。在I/O名字空间中,这些设备使用“/dev”作为它们名字的前缀,因此用户根据这一特点可以很容易的找到它们。例如,QNX的一个控制台设备应有像下面这样的名字:/dev/con1。

  1.2.4节点

  节点是一个独立的工作站,它是QNX的一个重要特征。在同一时刻,各节点可以共享服务器节点的资源,诸如打印机、硬盘等。节点间通过高速局域网连接在一起。从程序设计人员的角度,可将整个系统看成单一的虚拟机,而实际上这个虚拟机是由不同节点组成的。所有任务被看成是在虚拟机上运行的,所有文件都是可存取的。

  
点评回复

使用道具 举报

 楼主| 发表于 2011-1-21 11:28:12 | 显示全部楼层

第一章QNX概述

  第一章QNX概述

  QNX是一种运行在IntelX86兼容处理器和一些RISC处理器(如PowerPC、MIPS)上的操作系统。它是从UNIX发展起来的,它的命令有许多与UNIX相同,UNIX有许多很好的概念被QNX采纳,如文件的组织、输入/输出重定向、任务建立等。

  QNX是一个很有特色的操作系统软件。它的与众不同的设计思路实现的是一个极为灵活方便、可按照需要随意裁剪的系统,从而开拓了实现计算机系统应用的另一种路子。

  1.1QNX特点

  QNX与DOS的区别很大,因为QNX是多任务、分布式的操作系统,而DOS不是。QNX对硬盘的划分及文件存放格式也与DOS不同。但QNX操作系统提供了两个服务:QDOS和DFS。它们允许QNX系统存取DOS文件和运行DOS程序。既可将DOS下的文件传送到QNX中,也可将QNX中的文件传送到DOS下,使传送字符文件变得非常容易。(当然,传送中必须检查行结束符和文件终止符。)

  QNX操作系统是可以运行在PC机上的多任务、多用户的实时操作系统,它可以与MS-DOS、UNIX、Windows和OS/2并存于一台PC机或兼容机上。QNX实时系统突出特点之一是任务间通信主要依靠内部任务消息实现,它的结构灵活、内核小、集成网络后只有148KB,最多可连接32个终端,任务调度基于优先级,对异常事件能实时响应。

  QNX由一个体积很小的内核及一些负责系统管理的共操作进程组成。如同图1-1所表明的那样,QNX的系统结构中包含了若干个管理器,各管理器之间、管理器和其“指挥者”(内核)之间都是彼此可共操作的。这样的结构,使QNX系统看上去具有小组型的结构,而不是具有层次型的结构。

  图1-1 QNX微内核协调系统管理器之间的工作

  QNX操作系统最突出特点是,它是一个真正的分布式网络操作系统。它的网络功能最大程度地实现了资源共享,并对网络上的每个节点资源透明存取,任务可共享网上所有资源。在资源使用时,只要在资源名前加入节点号即可,如果不在同一节点,QNX内核在网上通过消息实现不同节点通信。因此使用起来非常简捷、方便,为网络用户提供了良好的网络使用环境。此外,QNX提倡把一个任务划分为多个子任务。每个进程执行一个子任务,由协同操作的进程组共同完成整个任务。这样做不仅能简化程序设计,还能充分利用系统资源。

  
点评回复

使用道具 举报

52RD网友  发表于 2015-10-26 16:50:21
mark!
回复

使用道具

52RD网友  发表于 2016-3-14 22:01:52
mark
回复

使用道具

发表于 2016-6-13 22:38:03 | 显示全部楼层
没有看到下载?
点评回复

使用道具 举报

发表于 2018-6-11 23:25:38 | 显示全部楼层
附件呢????
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-23 01:29 , Processed in 0.048829 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表