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