[comp.sys.amiga] MINIX on ST beta-release

johan@nlgvax.UUCP (Johan Stevenson) (07/07/87)

After many evening hours work by myself and some friends, notably Jost
Mueller, I am about to finish a beta-release for MINIX on the Atari-ST.
This beta version is NOT for a broad audience.
The reason for posting this message is twofold:

 - to keep potential MINIX-ST users informed.

 - to solicit requests from SERIOUS candidates to use MINIX-ST as base
   for porting activities to other 68000-based machines.

A first official release of MINIX-ST is expected in the last quarter
of 1987. The intention is to have it distributed by Prentice Hall, as
another option to Tanenbaum's book.

The distribution policy for the beta release is:

 - No more beta-testers are needed for the ST.

 - For other 68000-based machines I can only handle a single porting
   candidate per product family (Amiga, Mac, ...).
   Please coordinate per product family before contacting me!

 - Distribution is strictly limited to the selected persons, since I
   do not want premature versions floating around.

To give you a feel for MINIX-ST I will describe the areas where we
spent most of our time. During the port we always opted for solutions
that had minimal impact on the code. This to keep the diffs between
MINIX-PC and MINIX-ST minimal, so that the book is still a good guide.

68000 portability:
   Several of the well-known portability problems have been encountered
   and solved, like byte-ordering, derefencing NULL pointers, int and
   pointer size assumptions, etc.
   NOTE: MINIX compares rather favorable to other code in this area!

68000 assembly:
   The library and kernel contains some assembly code that had to be
   rewritten, half in 68000 assembly, half in C.

68000 memory model:
   We use 16-bit ints and 32-bit pointers. No MMU is assumed, no special
   compiler either, so virtual and physical addresses are equal.
   Clicks are still present as in MINIX-PC, but a click is 256 bytes
   and you can have 65536 clicks, so 16M of address space.

shadows:
   The fork/exec problem is elegantly solved by copying process images
   back and forth between the original position in memory (used whenever
   the process runs) and a shadow copy.
   This so-called shadowing will be explained more fully later.
   The number of flips is minimized by a shadow scheduler.
   The size of the image to be flipped is minimized by excluding text.
   About performance: the loss of copying is outweighted by a single
   performance improvement with respect to MINIX-PC: zeroing new
   process images. Have a look at MINIX-PC.

compiler:
   Currently the Alcyon C, release 4.14, as present in the ST developers
   kit is used. The official product will surely have a MINIX cc, based
   on the ACK compiler, one of my previous hobbies.
   During the port I used a VAX/Sun as archiver and syntax checker,
   but the ST itself for a short edit-compile-test cycle.

ST drivers:
   Currently the floppy, keyboard, screen and printer are supported.
   Header files for all hardware are present. The tty driver is
   prepared for the serial interface. No wini yet. No blitter yet.
   No MIDI, no mouse, no joysticks, no ...

TOS:
   Several of the programs used for booting are ported to TOS.

MINIX 1.2:
   All the recent postings of Tanenbaum concerning MINIX 1.2 are
   incorporated in MINIX-ST.

stack overflow:
   Stack overflow is not checked every procedure call, but only on
   process restart (after system call, or hardware interrupt).
   Signal handling had to be improved quite a lot over MINIX-PC.

The following limitations are present in the beta-release:

 - uses only 512k RAM (rest can be used as TOS ramdisk. nice for debug!)

 - uses only 360k floppy. speed of floppy driver is limited. 

 - no wini

 - no MINIX cc

I hope this message is of any use. ST users need a little more patience.
Potential porters should consider quite carefully whether they feel
qualified AND have the necessary spare time. At least the second
condition was not fulfilled in my case.


				Johan W. Stevenson,
				Philips Research Laboratories,
				Project Centre Geldrop,
				Building XR, Room 15,
				Willem Alexanderlaan 7B,
				5664 AN Geldrop, The Netherlands.
				phone: +31 40 892205
				uucp: mcvax!nlgvax!johan