[comp.unix.microport] Thoughts needed

kean@mist.cs.orst.edu (Kean Stump) (04/22/88)

	I need recommendations for a multi-user multi-tasking os that will run
    on the following equipment:
	
		I have a Compaq 386/20 with 5 meg ram 
		         136 Mb hard drive
			 Compaq VGA card w/NEC Multisync II
			 20 Mhz 80387
			 20 Mhz Unitek coprocessor (Weitek originally, I think)

	I've read SCO's literature on their brand of Sys V, Microport's literature
    and a small amount on IBM's Sys V.  I'm also considering Concurrent-Dos and
    PC-MOS/386 as runners-up.  One of the major requirements is that 
    real-time sampling on the order of 10K samples/sec (~40 bytes/sample) needs
    to be possible (the Compaq will spend some time on a chunk of ice in the 
    Arctic next spring collecting data from a variety of instruments dropped
    through a hole in the ice) and a good C and FORTRAN (8-<) compiler are needed.
    The os should also be capable of painlessly driving a >= 60 meg tape unit;
    the Everex Stream 60 we have for the pc's in the group is down more than 
    it is up, and Everex hands out rma's only when a small cannon is held to 
    their head (1/2 8-}!).

	The Arnet Smartport and the Microway AT16 are the serial port expanders
    currently being considered. What opinions do you have on these? I've seen
    multiple good references on the Smartport, but no mention of the Microway
    AT16 16 port expander in the newsgroups I (try 8->) to keep up with.

	Please mail to me and I'll summarize if there's enough info to do so.

					Thanks Much....kean

-------------------------------------------------------------------------------
Campus Crusade for Cthulhu...It found me.             Kean Stump
Oregon State University                     UUCP:     hplabs!hp-pcd!orstcs!kean
College of Oceanography			    DOMAIN:   kean@cs.orst.edu
-------------------------------------------------------------------------------

wes@obie.UUCP (Barnacle Wes) (05/06/88)

In article <4144@orstcs.CS.ORST.EDU>, kean@mist.cs.orst.edu (Kean Stump) writes:
> 
> I need recommendations for a multi-user multi-tasking os that will run
> on the following equipment:
> 	
>	I have a Compaq 386/20 with 5 meg ram 
	[ all sorts of goodies deleted ]
> 
> I'm also considering Concurrent-Dos and PC-MOS/386 as runners-up.
> One of the major requirements is that real-time sampling on the order
> of 10K samples/sec (~40 bytes/sample) needs to be possible (the Compaq
> will spend some time on a chunk of ice in the Arctic next spring
> collecting data from a variety of instruments dropped through a hole in
> the ice) and a good C and FORTRAN (8-<) compiler are needed.

Hmmm... Have you carefully though this out?  A Unix (or unix-like)
system is probably not your best bet for doing data acquisition on.
Unix was designed from the beginning to be a time-share system, not a
real-time system.

If you really need to acquire data at this rate, you will be better
off sticking with good ol' boneheaded MS-DOS, where you won't have to
worry about another user, or something in the crontab, blowing your
data acquisition away.

There are several good compilers available.  High-C 386 is a screamer,
and supports the 387.  MicroWay sells C and Fortran compilers that
generate 386 code, and support either the 387 or the Weitek.

Have you thought about where you are going to store 400K/sec of data?
Most hard disks will not run at that rate consistently, and definitely
not if any head seeking is going on.  I don't know if cartridge tape
drives are fast enough, either.  You may end up looking for a FAST
9-track system just to be able to store the data!  That is what I've
settled on at work, but some of our daq requirements are even tighter
than yours.
-- 
    /\              -  "Against Stupidity,  -    {backbones}!
   /\/\  .    /\    -  The Gods Themselves  -  utah-cs!uplherc!
  /    \/ \/\/  \   -   Contend in Vain."   -   sp7040!obie!
 / U i n T e c h \  -       Schiller        -        wes

romwa@gpu.utcs.toronto.edu (Mark Dornfeld) (05/09/88)

In article <224@obie.UUCP> wes@obie.UUCP (Barnacle Wes) writes:
>In article <4144@orstcs.CS.ORST.EDU>, kean@mist.cs.orst.edu (Kean Stump) writes:
>> 
>> I need recommendations for a multi-user multi-tasking os that will run
>> on the following equipment:
>> 	
>>	I have a Compaq 386/20 with 5 meg ram 
>	[ all sorts of goodies deleted ]
>> 
>> I'm also considering Concurrent-Dos and PC-MOS/386 as runners-up.
>> One of the major requirements is that real-time sampling on the order
>> of 10K samples/sec (~40 bytes/sample) needs to be possible (the Compaq
>> will spend some time on a chunk of ice in the Arctic next spring
>> collecting data from a variety of instruments dropped through a hole in
>> the ice) and a good C and FORTRAN (8-<) compiler are needed.
>
>Hmmm... Have you carefully though this out?  A Unix (or unix-like)
>system is probably not your best bet for doing data acquisition on.
>Unix was designed from the beginning to be a time-share system, not a
>real-time system.

QNX is is billed as a real-time OS.  It is
Unix-like, multiuser but can handle the kind of thing you
require.  I do not have the reference handy, but mail to me
and I'll look it up.  Or have a look in some recent issues of
Byte or PC Tech Journal; they usually advertise in there.

I believe that Venix, a System V port sold by VenturCom is
supposed to have some real-time capabilities.

VenturCom, 215 First Street Cambridge, MA 02142
(617) 661-1230

Both of these systems will run on an 8088/6 PC.

Mark T. Dornfeld
Royal Ontario Museum
100 Queens Park
Toronto, Ontario, CANADA
M5S 2C6

mark@utgpu!rom      - or -     romwa@utgpu

henry@utzoo.uucp (Henry Spencer) (05/11/88)

>...  A Unix (or unix-like)
>system is probably not your best bet for doing data acquisition on.
>Unix was designed from the beginning to be a time-share system, not a
>real-time system.

There is nothing about Unix that makes it inherently unsuited to be a
real-time system.  Real-time variants of it exist, and many labs have done
quite extensive real-time work under it.  All that having been said, Unix
as it usually comes out of the box isn't well adapted to real-time work.
Unless you have a version that has been adapted, or are capable of doing
it yourself, you're probably better off with a program loader (e.g. MSDOS)
that gives your program absolute control of the hardware, rather than a
real operating system (e.g. Unix) that may insist on playing some part
in things at inopportune times.
-- 
NASA is to spaceflight as            |  Henry Spencer @ U of Toronto Zoology
the Post Office is to mail.          | {ihnp4,decvax,uunet!mnetor}!utzoo!henry

wes@obie.UUCP (Barnacle Wes) (05/14/88)

In some article, I embarass myself by saying:
> ...  A Unix (or unix-like)
> system is probably not your best bet for doing data acquisition on.
> Unix was designed from the beginning to be a time-share system, not a
> real-time system.

In article <1988May10.181259.1971@utzoo.uucp>, henry@utzoo.uucp (Henry Spencer) replied:
| There is nothing about Unix that makes it inherently unsuited to be a
| real-time system.  Real-time variants of it exist, and many labs have done
| quite extensive real-time work under it.  All that having been said, Unix
| as it usually comes out of the box isn't well adapted to real-time work.
| Unless you have a version that has been adapted, or are capable of doing
| it yourself, you're probably better off with a program loader (e.g. MSDOS)
| that gives your program absolute control of the hardware, rather than a
| real operating system (e.g. Unix) that may insist on playing some part
| in things at inopportune times.

Exactly, and well put.  Most "real-time" systems have some way of
specifying a minimum repsonse time expected to any event you are
waiting on.  On vanilla Unix, the best you can do is crank the
priority for the daq process way up.  MS-DOS allows you to load your
program and write files on the disk in a fairly reasonable manner, and
won't get in the way of your response time (hopefully).  Coming up
with a task scheduler in such a situation, however, is your own
problem.  Good Luck.  :-)

vandys@hpindda.HP.COM (Andy Valencia) (05/17/88)

	I've been writing a MIDI driver for the PC/AT running Microport.
This requires a ceratin amount of real-time responsiveness (although the
MPU-401 handles the most nitty-gritty of the real-timeness).  I've found
that the interrupt level is fairly responsive; it's trying to get the user
process running that can take an indefinite amount of time.  Depending
on your application, you might be able to off-load the responsiveness into
the first-level interrupt handler.

					Andy Valencia
					vandys%hpindda.UUCP@hplabs.hp.com

m5@lynx.UUCP (Mike McNally) (05/18/88)

In article <230@obie.UUCP> wes@obie.UUCP (Barnacle Wes) writes:
>                               . . .  MS-DOS allows you to load your
>program and write files on the disk in a fairly reasonable manner, and
>won't get in the way of your response time (hopefully).  . . .

``Reasonable'' is in the eyes of the reasoner.  Because (at least in
the 386 thing we have here) the AT hard disk controller does not use 
the DMA controller, the CPU must poll when transferring.  The MS-DOS
driver keeps interrupts off while doing this, bringing the interrupt
response time down by quite a bit.

-- 
Mike McNally of Lynx Real-Time Systems

uucp: lynx!m5 (maybe pyramid!voder!lynx!m5 if lynx is unknown)

davidsen@steinmetz.ge.com (William E. Davidsen Jr) (05/19/88)

In article <3771@lynx.UUCP> m5@lynx.UUCP (Mike McNally) writes:
| In article <230@obie.UUCP> wes@obie.UUCP (Barnacle Wes) writes:
| >                               . . .  MS-DOS allows you to load your
| >program and write files on the disk in a fairly reasonable manner, and
| >won't get in the way of your response time (hopefully).  . . .
| 
| ``Reasonable'' is in the eyes of the reasoner.  Because (at least in
| the 386 thing we have here) the AT hard disk controller does not use 
| the DMA controller, the CPU must poll when transferring.  The MS-DOS
                      ^^^^^^^^^^^^^^^^^
| driver keeps interrupts off while doing this, bringing the interrupt
| response time down by quite a bit.

  As I'm sure a lot of people will tell you, that's the way the beast is
implemented, not the way it *must* be done. Xenix and OS/2 seem to be
able to run just fine using DMA mode and interrupts. The problem is that
MS-DOS is more or less a knock off of CP/M, and since it's not multi
tasking it has nothing better to do with the CPU than wait.
-- 
	bill davidsen		(wedu@ge-crd.arpa)
  {uunet | philabs | seismo}!steinmetz!crdos1!davidsen
"Stupidity, like virtue, is its own reward" -me

kevinr@june.cs.washington.edu (Kevin Ross) (05/20/88)

In article <10889@steinmetz.ge.com> davidsen@crdos1.UUCP (bill davidsen) writes:
>In article <3771@lynx.UUCP> m5@lynx.UUCP (Mike McNally) writes:
>| ``Reasonable'' is in the eyes of the reasoner.  Because (at least in
>| the 386 thing we have here) the AT hard disk controller does not use 
>| the DMA controller, the CPU must poll when transferring.  The MS-DOS
>                      ^^^^^^^^^^^^^^^^^
>  As I'm sure a lot of people will tell you, that's the way the beast is
>implemented, not the way it *must* be done. Xenix and OS/2 seem to be
>able to run just fine using DMA mode and interrupts. The problem is that
>MS-DOS is more or less a knock off of CP/M, and since it's not multi
>tasking it has nothing better to do with the CPU than wait.

Actually, DOS could have implemented a DMA transfer from the controller. I
think they really should have / or still should implement this. Sure, the
CPU might not have anything better to do than to wait for the CPU, but it
also should use DMA as the transfer mechanism when the IO is completed. 
This would definitely speed things up.

Another route they should have taken was to add a no busy wait option to 
the call. Then, at least, the CPU could be used for more productive jobs 
than sitting in a tight loop. When a program gets to a point where the 
data is crucial, it can call a wait routine. Of course, many programs
would not be able to deal with this, but how sweet it would be to have
the option. You could be working with a database routine that prefetchs
the next records while working on the current records. 

Ah, but then, hindsight makes for easy complaining.


Kevin Ross

kevinr@june.cs.washington.edu 	
..uw-beaver!june!kevinr

Home: ..uw-beaver!tikal!camco!carmine!kevin