QNX4 --------------------------------------------------------------- () QNX Software Systems Ltd., 1996 : QNX Software Systems Ltd. : SWD Software Ltd. WWW: http://www.swd.ru/qnx/support/literature/sysarch/ E-mail: books.qnx@swd.ru Date: 04 Mar 2002 ---------------------------------------------------------------
QNX. " QNX/Neutrino 2". , (400 .)

QNX4

QNX , .

QNX. , , , . QNX, .

QNX, QNX

:



 

QNX

:

QNX?

. - , , .. - , .

, . , , . , .

QNX . : , .

QNX - . , . QNX , . - , .

QNX , :

QNX

QNX , . , , , "" - .


fig: i/modules.gif


QNX .


- "" . , , , !

QNX - . -, , QNX . -, :

, . .

, , , QNX . QNX :

- - , .

QNX . QNX, , !

, . , , , - .

, . ?

, ( QNX ) , . , , . , .

. ! , QNX .

- , .

, QNX . , QNX , .

, :

(IPC)

, , , .

(Interprocess communication, IPC) , .

QNX , IPC, , .

QNX , IPC. , QNX.

QNX - , . - , .

, . , , " ", , . , , ().

, .. . QNX .

QNX

. QNX .

. , , - . , , , !

, , ( , ). , . QNX IPC .

QNX . QNX , -. , . , QNX , .. .

/, , , , , . QNX "", , QNX (, ), , .

QNX . , , .


Note: QNX . , .

QNX , . , QNX .

QNX, . , IPC , . " ", - , - !

QNX, , , . , , QNX, , , .

QNX.

:

QNX :


fig: i/kernel.gif


QNX.


QNX : , .

IPC

QNX - , . QNX . .

:
: :
Send()
Receive()
Reply() ,

, .. , , .. .

, , Send(), Receive() Reply() . QNX - , (, , , - pipe), .


fig: i/messpass.gif


A B, ,


, , , A B, Send(), Receive() Reply() :

  1. A B, Send(), . A SEND- , B Receive() .
  2. B Receive() A. A REPLY-. B Receive() , .. A.

    , B Receive() , , RECEIVE- . - REPLY-.

  3. B A Reply(). A, . Reply() B, . , .

, .

. A Send(), , . , B A , A . , B Receive(), , .


Note: QNX " " .

, .. , - .

:
: :
Send(), - SEND-
Send(), -, REPLY-
Receive(), RECEIVE-


fig: i/states.gif


.



Note: " ".

Send(), Receive() Reply()

Send(), Receive() Reply(). A B.

Send()

, . Send():

Send( pid, smsg, rmsg, smsg_len, rmsg_len );

Send() :

pid
(process ID), (.. B); ;
smsg
(.. , )
rmsg
( B)
smsg_len
rmsg_len
, A,

, smsg_len rmsg_len - , .

Receive()

Receive(), B , A:

pid = Receive( 0, msg, msg_len )

Receive() :

pid
, (.. A)
0
() , B
msg
,
msg_len
, ,

smsg_len Send() msg_len Receive() , , , .

Reply()

A, B A, Reply():

Reply( pid, reply, reply_len );

Reply() :

pid
, (.. A)
reply
,
reply_len
, ,

reply_len Reply() rmsg_len Send() , .

Reply-

, , - , , , RECEIVE- - . send- : - , , .

, , , : reply- , Reply(). -"" , , . , "", . , . - , , .

, , :


fig: i/blocproc.gif


A B ( ). C, D, E .


QNX :

, , Receive() . , .

, , , RECEIVE- . , , , . Creceive(), , .


Note: Creceive(), .. .

, .

, / , . ( 0 64 ). / , Readmsg() . , Readmsg() . , Writemsg() , , , , / .

. . , , . , , . / QNX, Dev Fsys, .

:


fig: i/multimsg.gif


qqq0 mx . .


QNX 16- , . , , . QNX :
: :
0x0000 - 0x00FF
0x0100 - 0x01FF / ( /)
0x0200 - 0x02FF
0x0300 - 0x03FF
0x0400 - 0x04FF
0x0500 - 0x0FFF QNX

IPC

- , , . , . , .

, , .

:

qnx_proxy_attach(). , , Trigger() , . Trigger() .

"" - . 65535 .


fig: i/prxytrig.gif


- 3 , 3 "" .


IPC

, .

QNX , POSIX, , , UNIX-, , QNX.

, , . .
: :
: kill slay
: kill() raise()

, , :

, , , , . . , . , .

: :
SIGABRT , abort().
SIGALRM -, alarm().
SIGBUS ( QNX ). , .
SIGCHLD . - .
SIGCONT HELD, . - , HELD.
SIGDEV , .
SIGFPE ( ), , , . , .
SIGHUP , , .
SIGILL . , .
SIGINT "" (Break)
SIGKILL - . "" . qnx_pflags(). .
SIGPIPE , .
SIGPWR Ctrl-Alt-Shift-Del shutdown.
SIGQUIT .
SIGSEGV . , .
SIGSTOP