Multiprocessor Jserver Support

An overview of the multiple transputer emulator support provided by jserver is shown in the following block diagram. Multiple transputer support (using /sn ) works by assigning a processor identifier number to each jerver running. Each jserver reads a network configuration file to determine what links are used and can then handle communication between each jserver using a Inter Process Communication (IPC) protocol layer. The IPC is not part of the Transputer emulator as such, but is used to pass data in the multiprocessor setup within the Windows OS on a PC or across a network when using multiple connected PCs.

Multiple jserver applications communicate via their external links (using the /sn number , where n for network switch enable, number is process id). Please note that the /sn switch option will only work if the PC is connected to a network. When this jserver.exe (with /sn option) is initially run Windows firewall will ask if program is allowed through firewall. Allow it.

The multiprocessor support uses Lightweight Communications and Marshalling (LCM) for the networking. LCM uses UDP broadcasts and is designed for process to process on one PC or local networked PCs (not across the internet). LCM version 1.0.0 is used in the jserver build. LCM details and source code is available at http://lcm-proj.github.io/ .

The GLib is also used in the software build since it is used by LCM. GLib version 2.28.8 (Win32) is used in the jserver build. GLib details and source code is available at http://www.gtk.org/.

The jserver (using /sn network) will read/use an ipc.net file (defining processes and link names) which each jserver can read (i.e. process id) and get the link name for each 4 links (on LCM) or - if no link. The ipc.net is simular to the .pgm file.

Below is an example of a ipc.net file.

ipc.net

----------------------------------------------------------

PROCESSOR 0

LINK 0 Host

LINK 1 Link0a Link0b

LINK 2 -

LINK 3 -

PROCESSOR 1

LINK 0 Link0b Link0a

LINK 1 -

LINK 2 -

LINK 3 -

#

----------------------------------------------------------

Below is an example of a two transputer network of jserver's using the above ipc.net:

1). In the first Win32 console, type  jserver /sn 1 /si (return)

2). Wait a few seconds, until jserver displays "Opening file ipc.net"

3). In the second Win32 console, type  jserver /sb multidemo.btl /sn 0 (return)

If all has been setup correctly the two jservers should interact and run as a multiprocessing configuration. The example files for a multiple transputer jserver setup are attached to the bottom of this page (see multi-processor example). Have fun.

IMPORTANT: The jserver handling the disk, screen and keyboard must be assigned processor id 0 (i.e. /sn 0). The other jservers can use any number from 1 onwards.

Notes:

#1. Each jserver is very CPU intensive and hence running multiple jservers to create a multiprocessing configuration requires a PC with some serious amount of horse power (e.g. a multicore Intel i3, i5 or i7 processor). Ideally one core per jserver.

Links to downloadable files:

multi-processor example.zip