> Now why does this remind me of a certain design decision taken by a
> certain very large software manufacturer about its single user operating
> system in about 1980?
Assuming you're talking about the 640k limit, I think that this is a
little unfair on Microsoft. The 640k thing was actually a *hardware*
design decision (or at least firmware), not a software one, and IBM is
more to blame than Microsoft for it. Bill Gates' famous quote was a
retrospective justification for the decision.
The 8086/8088 CPU has (as we know) a segmented architecture, with only a
single 64k page visible at one instance. Unlike earlier processors,
though, it supported memory paging natively, without requiring (much)
external hardware - a total of 16 pages in total were supported (1MB).
The IBM designers had to reserve some of this space for memory-mapped
I/O, and leave the rest for application space. They decided, quite
sensibly, to allow 10 pages for application space (640k) and reserve the
rest (384k) for I/O. 640k did seem like a lot (the original IBM PC came
in 16k and 64k flavours, IIRC), so this isn't too bad a decision. This
was *before* factors like Moore's law started to be widely noticed, and
nobody really thought that 640k would ever be realistic in a desktop
machine (remember that the principal purpose of the IBM PC was to
compete with the Apple ][).
The other side of the decision was *which* of the 16 pages to reserve
for applications and which to reserve for I/O. Here they made the
"easy" decision which, in retrospect, was the wrong one. They decided
to let applications have the lowest-numbered pages, and reserve
high-memory for the I/O systems, so they'd be "out of the way". User
memory could happily be expanded in 64k chunks from page 0 to page 9,
and the I/O systems would live in pages 10 to 15... this was fine until
user memory hit 640k. All 10 pages of user memory were then used up,
and you couldn't cleanly add more without impinging on the pages which
were reserved for I/O. The desire to expand further led to all kinds of
horrible hacks (XMS, EMS etc) which basically involved reserving page 10
for "high memory" and mapping the remaining high pages into this one at
a time... this really nasty situation persisted until the advent of the
386 processor and 32-bit operating systems (Unix variants ran on the
Intel architecture from about 1987, but the first MS OS to support
32-bit 'flat' memory access was Windows 95) - these combinations allowed
the system memory to be viewed as "one big address space" as well as
adding virtual memory support - there's still a couple of "reserved"
portions in the range 640k-1024k for I/O, but modern OS's know about
these and arrange matters accordingly.
Microsoft have made many, many bad design decisions in their time, but
this really wasn't their fault...
Colm Buckley B.A. B.F. # colm at tuatha.org # +353 87 2469146
http://www.tuatha.org/~colm/ # whois cb3765
To succeed in politics, it is often necessary to rise above your principles.
Maintained by the ILUG website team. The aim of Linux.ie is to
support and help commercial and private users of Linux in Ireland. You can
display ILUG news in your own webpages, read backend
information to find out how. Networking services kindly provided by HEAnet, server kindly donated by
Dell. Linux is a trademark of Linus Torvalds,
used with permission. No penguins were harmed in the production or maintenance
of this highly praised website. Looking for the
Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!