[comp.sys.ibm.pc] PC AT clones, MSDOS and OS2 - request for info.

brand@janus.uucp (Graham Brand) (05/04/88)

I was about to buy an AT clone recently when one of my friends
mentioned that not all AT's will run OS2 and give true multitasking!
This brought up the more fundamental question of the difference between
the 8086, 80286 and 80386. I had thought that the main difference was
that the 80286 supported truw multitasking while the '386 supported that
as well as true multiuser capability. If that is the case, why would
the make of clone matter? Would someone on the net advise enlighten me?
Please reply via e-mail as I read the net somewhat sporadically.

Cheers,
Graham Brand  {   ..!hplabs!ucbvax!janus!brand   }
	      {   brand@janus.berkeley.edu       }
	      {   brand@janus.UUCP		 }

madd@bu-cs.BU.EDU (Jim Frost) (05/04/88)

In article <23861@ucbvax.BERKELEY.EDU> brand@janus.UUCP (Graham Brand) writes:
|This brought up the more fundamental question of the difference between
|the 8086, 80286 and 80386. I had thought that the main difference was
|that the 80286 supported truw multitasking while the '386 supported that
|as well as true multiuser capability.

All of the processors can support multiuser and multitasking in the
IBM PC configuration (they support a clock interrupt that can give
time slicing).  The newer processors also contain memory management
and memory protection mechanisms which are vital when making a robust
operating system, but are not necessary.  (This is basically a
"necessary" versus "sufficient" argument.)  For proof of this, note
that ersions of UNIX are around for the 8086, 80286, and 80386.

The newer processors also run faster than the older, making them more
useful in a multitasking environment (more things get done faster, you
know).

As for multiuser and multitasking, ANY multitasking operating system
that supports multiple I/O devices (such as serial lines) can be made
to be multiuser.  Yes, this includes OS/2.  I'd be willing to place
money on companies coming out with multiuser versions of OS/2 within a
couple of years, providing OS/2 really catches on (and it looks like
it will).

Note that a multiuser operating system can be made without
multitasking.  An easy way to do this is to poll each terminal for a
function, do it, then continue polling.  Many database systems work
this way.

jim frost
madd@bu-it.bu.edu

mru@unccvax.UUCP (Markus Ruppel) (05/04/88)

in article <22359@bu-cs.BU.EDU>, madd@bu-cs.BU.EDU (Jim Frost) says:
> ...
> I'd be willing to place
> money on companies coming out with multiuser versions of OS/2 within a
> couple of years, providing OS/2 really catches on (and it looks like
> it will).
> ...

According to a recent poll in PC WEEK 67% of business people stated that 
they WILL NOT SWITCH TO OS/2 in their cooperate evironment.

BTW, I don't like OS/2, esp. because I want multiuser and multitasking 
now and not in the ( far ) future. I've been using a multiuser and multi-
tasking OS ( Concurrent DOS from Digital Research, Inc. ) for 3 years (!)
now.

There has been a thread on Concurrent DOS recently in comp.sys.ibm.pc 
( last 3 weeks, look for subject "Concurrent DOS" ).

> 
> jim frost
> madd@bu-it.bu.edu

Markus Ruppel
Dept. of Chemistry   
Univ. of NC at Charlotte

UUCP:  ...!mcnc!unccvax!mru
       ...!mcnc!mru

BITNET: ACC00MR1@UNCCVM

brand@janus.uucp (Graham Brand) (05/05/88)

Thanks to all who have replied to date. There was another part of the 
original question which was apparently not clear when I posted it. 
Isn't OS2 compatibility automatic on clones with MSDOS compatibility?
If not, why not? Is it similar to MSDOS compatibility in that it is 
determined primarily by the BIOS implementation and, therefore, should 
be asked for specifically if needed?

Cheers,
-Graham Brand

johnl@ima.ISC.COM (John R. Levine) (05/05/88)

In article <23879@ucbvax.BERKELEY.EDU> brand@janus.UUCP (Graham Brand) writes:
>Isn't OS2 compatibility automatic on clones with MSDOS compatibility?
>If not, why not? Is it similar to MSDOS compatibility in that it is 
>determined primarily by the BIOS implementation and, therefore, should 
>be asked for specifically if needed?

According to PC Week, that well-known source of Nearly Official Information,
the story is like this:  IBM OS/2 does its I/O through the BIOS, while
MS OS/2 that they license to clone vendors doesn't; it does its I/O any way
the cloner chooses to set it up, generally by programming the hardware
directly.  This is much the same situation that originally held with DOS;
machines like the Tandy 2000 ran MSDOS without an IBM-style BIOS.

This means that IBM OS/2 should run on any BIOS compatible machine, while
other OS/2's require much stricter hardware compatibility.  But wait --
there's more.  IBM's PS/2 series has two separate parts of the BIOS, the
real mode CBIOS that DOS uses and the protected mode ABIOS that OS/2 uses.
So your clone has to have an ABIOS.  Except that OS/2 runs on old ATs, which
don't have an ABIOS, so they must either be programming the AT's hardware
directly, or else backflipping into real mode for all I/O on the AT, which
would be extremely slow.   Your guess is as good as anybody else's.
-- 
John R. Levine, IECC, PO Box 349, Cambridge MA 02238-0349, +1 617 492 3869
{ ihnp4 | decvax | cbosgd | harvard | yale }!ima!johnl, Levine@YALE.something
Rome fell, Babylon fell, Scarsdale will have its turn.  -G. B. Shaw

hedrick@athos.rutgers.edu (Charles Hedrick) (05/11/88)

>This brought up the more fundamental question of the difference between
>the 8086, 80286 and 80386. I had thought that the main difference was
>that the 80286 supported truw multitasking while the '386 supported that
>as well as true multiuser capability. If that is the case, why would
>the make of clone matter? Would someone on the net advise enlighten me?

I'm certainly no expert on Intel architecture, but my impression is
that things are not so clear-cut as this.  The main difference between
the 8086 (aside from things that would lead to faster speed for the
286) seems to be the memory mapping.  However the 286 is still a
16-bit machine, i.e. the registers hold only 16-bit quantities, and
you are limited to 64K of contiguous memory (though compilers give
various kinds of emulation of larger address spaces, the various
"memory models").  The 386 has memory-mapping similar to the 286, but
it is a 32-bit machine.  Thus there are 32-bit registers, and more
importantly, the memory-mapping supports contiguous segments of memory
larger than 64K.  Also, there is hardware support for a "virtual
machine" that allows Unix and MS-DOS to run at the same time in a
clean way.

In the end you can do anything with any chip: in a theoretical sense
you can show that they are all equivalent, and Unix -- which handle
both multiple processes and multiple users -- has been implemented on
all of them.  However some things can be so difficult that nobody is
really going to bother doing them.  

It seems that the lack of memory mapping on the 8086 make it unlikely
that there will be any new multi-process operating systems written for
it.  Not that doing so is impossible, though in my view it is probably
impossible to do a secure multi-user system without protected memory.
But the 286 and 386 are enough better for this task that no one will
bother with the 8086.  Actually the 286 and 386 memory mapping seem
fairly similar.  I don't think that saying the 286 can do
multi-tasking but not multi-user makes sense, except in the sense that
maybe a 286 doesn't have enough CPU power to really support more than
one user.  It seems that the 286 and 386 are very similar in their
ability to support advanced operating systems.  (This is no doubt why
OS/2 is being done for both.)

The main advantages of the 386 are the 32-bit register and
instructions, and having contiguous address space larger than 64K.
Again, anything that can be done on the 386 can be done on the 286
eventually.  But it's enough easier to do big spreadsheets, editor
buffers (Gnu Emacs appears to be impractical to port to a 286), etc.,
that you're going to start seeing larger applications written to
support only the 386.  Programmers have enough trouble making things
work that they simply aren't going to go to extra trouble to tune
their programs to work on 16-bit machines very much longer.  This is
particularly true in the Unix community.  Most new Unix software these
days assumes a 32-bit machine.  Not that it couldn't be written for a
16-bit machine.  Often it could.  But taking software written on a
32-bit machine and converting it is at best a continual headache and
at worst very nearly impractical.  All that new stuff you're hearing
about from ATT and Sun will be available on the 386.  It's unclear to
me whether they will ever get around to doing it for the 286.  Under
OS/2 maybe this won't be the case.  386's are still new enough in the
MS-DOS community that most software is still written assuming 16-bit
machines.  But I have to believe that as 386's spread the MS-DOS and
OS/2 folks will eventually catch the 32-bit disease as well.

The reason that not all AT compatibles will run OS/2, by the way, has
nothing to do with the chip.  The same would be true of 386 machines,
except that since the 386 is fairly new, most machines using it are
designed with OS/2 in mind (or so the designers claim -- one wonders
how many of them will *really* run it).  The real problem is with
display adapters, I/O controllers, memory, etc.  MS-DOS uses the BIOS
to hide hardware dependencies.  So you can build a wierd machine, and
as long as you put enough cruft into the BIOS to handle the hardware,
MS-DOS will never know.  Unfortunately, the original BIOS design isn't
well suited to a multi-process system.  So OS/2 (and Unix) bypasses
the BIOS and deals directly with the hardware.  (Of course they could
have designed a new BIOS that could support OS/2.  But since the BIOS
is in ROM that would be a logistical nightmare.)  Thus if you have
hardware that is different from IBM's, the BIOS can no longer make up
for it.  It will still be possible to replace the low-level parts of
OS/2 with special software tuned for your machine's hardware, just as
the BIOS is.  The concern is that not all vendors may do that (indeed
they may not all be around to do it), and also that users may be
displeased at having to get a different version of OS/2 for each
machine from its own vendor, rather than being able to run the
standard IBM software on all their machines.









Unix, and OS/2 if you choose to classify it as an advanced operating
system):

  - 32-bit registers and instructions.  This is most important for
	Unix, where most software was originally written for VAXes
	and other 32-bit machines, in C.  Many big Unix programs
	would require a fair amount of work to run on a 16-bit
	machine.  Compilers could compensate for this.  It's perfectly
	possible to declare a 32-bit integer in C on the 8086 and 286.
	The compiler automatically deals with the low-order and
	high-order halves.  Clearly one could write a compiler where 
	this was the default, and you'd then have compatibility with 
	the VAX etc.  However the reports are that the performance 
	penalty is unacceptable.  So far I've talked only about
	porting Unix code from the VAX, because of the laziness
	of Unix programmers in declarating variables.  To the extent
	that you have applications that need to deal with data that
	takes more than 16 bits, then of course you're going to have the
	same performance problem whether you are using Unix or not
	and whether you're lazy or not.  This obviously depends
	upon the application, but there are many applications for
	which moving from 16 to 32 bits makes a significant
	performance difference.

  - large contiguous address space.  On the 8086 and 286, you can
	only increment through an array that is 64K bytes long.
	You can have larger data structures, but you have to
	adjust a separate pointer register at least once every
	64K bytes.  This isn't always crucial.  Originally I thought
	a reasonable Lisp would be impossible to do for an 8086 or
	286, but on further thought it's clear that it is not a
	problem, because no single Lisp object would need to be
	bigger than 64K.  But big Fortran arrays are painful.
	Of course compilers can compensate for this also, and
	some do (that's what the huge model is about).  But again,
	the performance penalty is heavy, and the official ATT
	286 Unix does not support the huge model.  (It may be
	that Xenix does, however.)  It appears that the huge
	model is worse to implement in protected mode than
	real mode, by the way, which may explain why it is fairly
	common in MS-DOS C compilers but not in System V.  Again,
	at the bare minimum, the 8086 and 286 cause portability
	problems for code that is written on machines without
	these constraints.  For example, Gnu Emacs reads your
	whole file into a contiguous buffer.  Unless you want
	to be limited to editing 64K files, you need a machine
	that can treat a large area of memory as a contiguous
	array.  As far as we can determine, no existing combination
	of operating system and compiler will allow Gnu Emacs to
	be ported to an 8086 or 286.  Of course it could have
	been written to break your file into smaller pieces and
	use a linked list.  But who is going to adopt more
	complicated programming practices just to fit old chips?
	Programming is already hard enough without operating 
	with one hand tied behind your back.



	



Here's my sense of what is unreasonable on various
types of machines:
  8086 - addressing more than 1M of memory, except via bank-switching.
	This makes a "big" OS such as the more recent versions of Unix
	or OS/2 impractical.  Not impossible.  If there were some
	law of nature that made better machines impossible to build,
	I'm sure there would be 10Mbyte 8086's running huge OS's, with
	the compilers hiding the bank-switching.  But with the 286 and
	386, that's never going to happen.  The other thing that
	makes multi-process and multi-user systems (and really there
	isn't much distinction: in both cases you want clean
	protection of multiple address spaces) problematical is that
	there is no memory-mapping hardware.  That could be
	supplied externally, as it is for all 680x0's below the
	68030, but it seems like at the low end nobody does that,
	and nobody is going to build a high-end 8086.
	
	

hedrick@athos.rutgers.edu (Charles Hedrick) (05/11/88)

I just posted an article that will seem incoherent.  That's because
I blew the editing.  The last half of the article shouldn't be there.