Why are operating systems (usually?) unable to access BIOS settings?

Solution 1:

Why are operating systems (usually?) unable to access BIOS settings?

The above question cannot be answered as the OS can access the BIOS.

I will answer below the question that could have been asked.


How are operating systems able to access BIOS settings?

On Windows and Unix the OS is able to read the BIOS.

Windows

Example (using wmic):

F:\test>wmic bios /?

BIOS - Basic input/output services (BIOS) management.

HINT: BNF for Alias usage.
(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].

USAGE:

BIOS ASSOC [<format specifier>]
BIOS CREATE <assign list>
BIOS DELETE
BIOS GET [<property list>] [<get switches>]
BIOS LIST [<list format>] [<list switches>]


F:\test>wmic bios list brief
Manufacturer              Name                                        SerialNumber      SMBIOSBIOSVersion  Version
American Megatrends Inc.  BIOS Date: 09/05/11 11:20:58 Ver: 04.06.03  27546064-5001600  R1190V3            Sony - 20110905

Windows can also write to the BIOS (some motherboard manufacturers provide a Windows-based BIOS updater.)

See for example How to flash the BIOS if needed through Windows or in the BIOS.

Unix

Unix has similar commands.

  • biosdecode parses the BIOS memory and prints the information about all structures.

  • You can make real-time BIOS calls from the root user using C applications that include embedded ASM (assembly code).

Source How to dump BIOS data to a file


Further Reading

  • An A-Z Index of the Windows CMD command line - An excellent reference for all things Windows cmd line related.
  • wmic - Windows Management Instrumentation Command.
  • biosdecode(8) - Linux man page

Solution 2:

They can, but there isn't very much in the way of standardized interface to the settings in there, especially if you mean "BIOS" proper (i.e. pre-UEFI).

Certain parts of the BIOS are governed by software contracts between the BIOS and the OS running on top of it. A long time ago, BIOS routines were used for all kinds of day-to-day tasks like reading and writing disks, displaying things on the screen, and printing to an attached printer, thus the name "basic input/output system". If the BIOS was matched to the hardware, the OS could support different hardware variants without having to have its own routines for all of those things. But as hardware, and OSes, grew more complicated and outgrew the limited set of BIOS facilities, OSes started to provide their own drivers for nearly everything, only relying on the BIOS for bootup, power management, and retrieving system configuration information.

But the BIOS, too, grew more complicated and gained all kinds of settings and abilities that weren't governed by the OS-BIOS interface, and even for the stuff that is in there only specifies the results, not the implementation. That means that every BIOS manufacturer is free to do things how they want, that they're free to change things whenever they like as long as OSes keep running, and that they don't have to tell anyone any of the details. Accessing the data stored by the BIOS is a piece of cake, but if you have a utility that can make sense of the data, or that can modify it in a way that the BIOS will actually understand, then it was probably either made by the BIOS manufacturer themselves, or it's the result of reverse-engineering.