Groups | Search | Server Info | Login | Register


Groups > alt.os.development > #18750

Re: PC BIOS (was [OSDev] How to switch to long mode in x86 CPUs?)

From Salvador Mirzo <smirzo@example.com>
Newsgroups alt.os.development
Subject Re: PC BIOS (was [OSDev] How to switch to long mode in x86 CPUs?)
Date 2025-03-08 14:24 -0300
Organization A noiseless patient Spider
Message-ID <875xkjcu64.fsf@example.com> (permalink)
References <871pvje5yq.fsf@onesoftnet.eu.org> <vpu3m5$3804$1@dont-email.me> <JdFwP.46247$SZca.36276@fx13.iad> <87v7ssi2ec.fsf@example.com> <vq1vc4$17o$1@reader1.panix.com>

Show all headers | View raw


cross@spitfire.i.gajendra.net (Dan Cross) writes:

> [Note: Followup-To: alt.os.development]
>
> In article <87v7ssi2ec.fsf@example.com>,
> Salvador Mirzo  <smirzo@example.com> wrote:
>>scott@slp53.sl.home (Scott Lurndal) writes:
>>> "Paul Edwards" <mutazilah@gmail.com> writes:
>>>>Do you consider the concept of a BIOS (as seen as the IBM PC),
>>>>"legitimate to use" 
>>>
>>> In the abstract, possibly.  But the last half century has
>>> shown that BIOS as an I/O abstraction layer was a bad idea
>>> from the start.
>>
>>Would you elaborate or point out an article or book that could clarify
>>the ideas that have made you to make such remark?  Sounds interesting.
>
> This isn't really on-topic for comp.lang.c, so I'm cross-posting
> to alt.os.development and setting Followup-To: to redirect
> there.

Cross-post obeyed.

> The thing about the "BIOS" is that it is the product of a
> specific context in computer history.  Early PCs were all
> weirdly idiosyncratic, so Kildall created it to provide an
> abstraction layer for CP/M, isolating relatively portable parts
> from the machine specific bits.
>
> But this had an interesting side effect that was also related to
> the historical context.  Early PCs were mostly built around
> microcontroller CPUs and were seriously RAM constrained; the
> original IBM PC shipped with something like 128KiB of RAM.  A
> useful property of the BIOS, as an abstraction layer between
> the OS and the hardware, was that it could be be moved into ROM,
> thus freeing up precious RAM resources for actual programs.
>
> But it was always sort of a lowest-common denominator
> implementation, tailored to the needs of a specific operating
> system (first CP/M, then the various incarnations of DOS in the
> IBM PC), so it runs in 16-bit mode and so on.  As such makes a
> poor basis for IO in more advanced operating systems, which
> generally want to be in charge of how IO is handled and what
> state an IO device is in themselves.  Such systems provide
> drivers that are redundant with whatever services the BIOS
> provides, but better suited to their uses, so the BIOS confers
> no real benefit for them.
>
> I don't know that there are many books/articles/whatever that
> discuss this in detail, but folks who build real systems run
> into BIOS limitations pretty quickly. In particular, once you
> want to start doing things like multiplexing concurrent IO
> operations across devices, the whole synchronous BIOS model
> breaks down.

But Scott Lurndal said it was a bad idea and, from what you say, it
seems like a not-so-bad idea.  It could be stored in ROM, leaving up RAM
for the OS and the users; it hid machine-specific details from the OS,
creating an abstraction.  And I believe the BIOS doesn't stop the OS
from talking directly to the machine, so it's not an obstacle either.
What am I missing?

Back to alt.os.development | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: PC BIOS (was [OSDev] How to switch to long mode in x86 CPUs?) cross@spitfire.i.gajendra.net (Dan Cross) - 2025-03-02 16:01 +0000
  Re: PC BIOS (was [OSDev] How to switch to long mode in x86 CPUs?) Salvador Mirzo <smirzo@example.com> - 2025-03-08 14:24 -0300
    Re: PC BIOS (was [OSDev] How to switch to long mode in x86 CPUs?) Salvador Mirzo <smirzo@example.com> - 2025-03-08 14:39 -0300
      Re: PC BIOS (was [OSDev] How to switch to long mode in x86 CPUs?) cross@spitfire.i.gajendra.net (Dan Cross) - 2025-03-09 01:52 +0000

csiph-web