NUCLEUS: Difference between revisions

From NDWiki
Jump to navigation Jump to search
(Initial article on NUCLEUS)
 
(add product number section, and link to products)
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
NUCLEUS is a library for fast message passing on ND-500-II or ND-5000 computers. It can be used for message passing both in the ND-100 and in the ND-500/5000, but is not available on pure ND-100 computers, because NUCLEUS requires either a [[DOMINO]] controller (only available on ND-5000 with MPM-5, aka MF-Bus memory) and [[OCTOBUS]], or on ND-500-II equipped with OCTOBUS alone<ref>DOMINO and NUCLEUS Software Guide ND-820026.1, preface</ref>.
'''NUCLEUS''' is a library for fast message passing on [[ND-500-II]] or [[ND-5000]] computers. It can be used for message passing both in the [[ND-100]] and in the ND-500/5000, but is not available on pure ND-100 computers: NUCLEUS requires either an ND-5000 with [[OCTOBUS]] and a [[DOMINO]] controller and [[Multi-Function bus|MF-Bus]] memory (former [[MPM-5]]), or an ND-500-II with OCTOBUS alone (DOMINO is not available for ND-500)<ref>{{ND-doc|820026.1|preface}}</ref>.


=NUCLEUS purpose=
==Purpose==
NUCLEUS is intended for communication between processes within one computer. Unlike [[XMSG]], it cannot be used between computers. "Computer" in this context means one or several main CPUs with access to the same physical memory and OCTOBUS.
NUCLEUS is intended for communication between processes within one computer. Unlike [[XMSG]], it cannot be used between computers. "Computer" in this context means one or several main CPUs with access to the same physical memory and OCTOBUS.


=NUCLEUS components=
==Components==


==Kernel==
===Kernel===
NUCLEUS data structures / messages are passed through shared memory (MPM), and managed via OCTOBUS.
NUCLEUS data structures / messages are passed through shared memory (MPM), and managed via OCTOBUS.


==Library==
===Library===
Applications will interface to the NUCLEUS kernel through libraries. Applications are isolated from the physical implementation of NUCLEUS which differs between ND-500 and ND-5000.
Applications will interface to the NUCLEUS kernel through libraries. Applications are isolated from the physical implementation of NUCLEUS which differs between ND-500 and ND-5000.


==Monitor==
===Monitor===
The NUCLEUS monitor is a tool for inspection of parts of the NUCLEUS kernel, e.g. message queues.
The NUCLEUS monitor is a tool for inspection of parts of the NUCLEUS kernel, e.g. message queues.


=NUCLEUS concepts=
==Concepts==
Communication between processes is based on ports and messages. Ports and messages have descriptions in physical memory (the NUCLEUS kernel). A port is a defined communication port between processes, and it can be given a name. A message is constructed as a buffer for data, and a header. The header may contain e.g. a description of the data, and it can also link to other messages.
Communication between processes is based on ports and messages. Ports and messages have descriptions in physical memory (the NUCLEUS kernel). A port is a defined communication port between processes, and it can be given a name. A message is constructed as a buffer for data, and a header. The header may contain e.g. a description of the data, and it can also link to other messages.


An application can create a message, and then link it to a port. The port could be owned by another process. Messages are queued in the sequence the arrive.
An application can create a message, and then link it to a port. The port could be owned by another process. Messages are queued in the sequence they arrive.


=Difference between ND-500 and ND-5000=
==Difference between ND-500 and ND-5000==
Due to the DOMINO I/O controllers used in ND-5000, NUCLEUS messaging does not have to go through the ND-100 (via a monitor call), so NUCLEUS communication between ND-5000 processes is faster and has less overhead than communication between ND-500 processes. ND-5000 CPUs also has NUCLEUS support in the microcode<ref>DOMINO and NUCLEUS Software Guide ND-820026.1, NUCLEUS Overview</ref>.
Due to the DOMINO I/O controllers used in ND-5000, time-critical parts of NUCLEUS messaging do not have to go through the ND-100 (via a monitor call), so NUCLEUS communication between ND-5000 processes is faster and has less overhead than communication between ND-500 processes. ND-5000 CPUs have NUCLEUS support in the microcode for the time-critical functions<ref>{{ND-doc|820026.1|NUCLEUS Overview}}</ref>.


=NUCLEUS functions=
==Library functions==
nkCrePort &ndash; Create a new port. The creating process becomes port owner.<br>
* nkCrePort &ndash; Create a new port. The creating process becomes port owner.
nkCreName &ndash; Assign a name to a port, so that other processes can refer to it.<br>
* nkCreName &ndash; Assign a name to a port, so that other processes can refer to it.
nkOpenPort &ndash; Get a send reference to a named port.<br>
* nkOpenPort &ndash; Get a send reference to a named port.
nkOpenReturnPort &ndash; Get a send reference to the home port or last sender of a message.<br>
* nkOpenReturnPort &ndash; Get a send reference to the home port or last sender of a message.
nkDelName &ndash; Delete the symbolic name of a port. The port itself is not removed.<br>
* nkDelName &ndash; Delete the symbolic name of a port. The port itself is not removed.
nkCreMessage &ndash; Allocate a message buffer in a contiguous area of physical memory.<br>
* nkCreMessage &ndash; Allocate a message buffer in a contiguous area of physical memory.
nkMove &ndash; Write, read, or insert data into or from a message buffer.<br>
* nkMove &ndash; Write, read, or insert data into or from a message buffer.
nkSend &ndash; Send a message to a port.<br>
* nkSend &ndash; Send a message to a port.
nkReceive &ndash; The first message in the queue to a port is received.<br>
* nkReceive &ndash; The first message in the queue to a port is received.
nkGetInfo &ndash; Get information about the specified message or port.<br>
* nkGetInfo &ndash; Get information about the specified message or port.
nkClose &ndash; Close a port, a message, or a send reference.<br>
* nkClose &ndash; Close a port, a message, or a send reference.
nkVersion &ndash; Get version of different NUCLEUS parts (kernel, library..).<br>
* nkVersion &ndash; Get version of different NUCLEUS parts (kernel, library..).


=References=
== Product numbers ==
* [[:Category:ND-250295|ND-250295]]
 
==References==
<references/>
<references/>
[[Category:Glossary]]

Latest revision as of 22:20, 5 July 2020

NUCLEUS is a library for fast message passing on ND-500-II or ND-5000 computers. It can be used for message passing both in the ND-100 and in the ND-500/5000, but is not available on pure ND-100 computers: NUCLEUS requires either an ND-5000 with OCTOBUS and a DOMINO controller and MF-Bus memory (former MPM-5), or an ND-500-II with OCTOBUS alone (DOMINO is not available for ND-500)[1].

Purpose

NUCLEUS is intended for communication between processes within one computer. Unlike XMSG, it cannot be used between computers. "Computer" in this context means one or several main CPUs with access to the same physical memory and OCTOBUS.

Components

Kernel

NUCLEUS data structures / messages are passed through shared memory (MPM), and managed via OCTOBUS.

Library

Applications will interface to the NUCLEUS kernel through libraries. Applications are isolated from the physical implementation of NUCLEUS which differs between ND-500 and ND-5000.

Monitor

The NUCLEUS monitor is a tool for inspection of parts of the NUCLEUS kernel, e.g. message queues.

Concepts

Communication between processes is based on ports and messages. Ports and messages have descriptions in physical memory (the NUCLEUS kernel). A port is a defined communication port between processes, and it can be given a name. A message is constructed as a buffer for data, and a header. The header may contain e.g. a description of the data, and it can also link to other messages.

An application can create a message, and then link it to a port. The port could be owned by another process. Messages are queued in the sequence they arrive.

Difference between ND-500 and ND-5000

Due to the DOMINO I/O controllers used in ND-5000, time-critical parts of NUCLEUS messaging do not have to go through the ND-100 (via a monitor call), so NUCLEUS communication between ND-5000 processes is faster and has less overhead than communication between ND-500 processes. ND-5000 CPUs have NUCLEUS support in the microcode for the time-critical functions[2].

Library functions

  • nkCrePort – Create a new port. The creating process becomes port owner.
  • nkCreName – Assign a name to a port, so that other processes can refer to it.
  • nkOpenPort – Get a send reference to a named port.
  • nkOpenReturnPort – Get a send reference to the home port or last sender of a message.
  • nkDelName – Delete the symbolic name of a port. The port itself is not removed.
  • nkCreMessage – Allocate a message buffer in a contiguous area of physical memory.
  • nkMove – Write, read, or insert data into or from a message buffer.
  • nkSend – Send a message to a port.
  • nkReceive – The first message in the queue to a port is received.
  • nkGetInfo – Get information about the specified message or port.
  • nkClose – Close a port, a message, or a send reference.
  • nkVersion – Get version of different NUCLEUS parts (kernel, library..).

Product numbers

References

  1. Norsk Data Document ND–820026.1 DOMINO and NUCLEUS Software Guide preface
  2. Norsk Data Document ND–820026.1 DOMINO and NUCLEUS Software Guide NUCLEUS Overview