A key concept for this discussion is the
The information is transmitted along the
The signals that move along a computer
In todays PC computer
market, there are several buses, many of which have the same functions but
approach things quite differently. In this section, I am going to talk about the
different
Despite differences in
The
Because the BIOS can actually perform certains functions and does not simply provide information, it is common to think of the BIOS as a set of small programs which carry out the necessary functions. Although very limited in scope, one might also consider it sort of a “mini” operating system. It is important to note that in modern computers, you will find a BIOS in places other than just on the motherboard. For example, it is very common to have disk controllers and even graphic cards with their own BIOS.
When PCs first started becoming commonplace, users typically had to set the BIOS clock when the computer was first set up. Often there was was battery that powered an internal clock which kept track of time when the computer was turned off. Still, it was occassionally necessary to reset the system time on this “real-time” clock when the system rebooted.
When Linux first boots, it checks the time of the hardware clock and then calls an internal function at regular intervals which updates the system time accordingly. It is interesting to note that the system clock update mechanism has a very low priority. Therefore, it is common on busy system, that updates are skipped in favor of processes with a high priority. The result is that the time might “drift” by a few minutes. This means that the system clock and hardware clock differ. Eventually Linux started included the
To overcome both the drift and differences with the hardward clock. you can implement the Network Time Protocol (NTP). This allows you to synchronize your system time with a more accurate clock. This can be a specific machine within your own network or you can update from public servers connected to the internet.
The standard
In Linux, on the other hand, a special
program called a
The fact that Linux by-passes the
The Intel 80×86 family of processors has an
When accessing memory, either for a read or write, the
Although the Linux
You can often see the
If your motherboard only uses 10
These image addresses may cause conflicts with hardware that have
I/O addresses higher than 0x3FF (1023), which is the highest possible with
only 10
When you install, it is vital that no two devices have
overlapping (or identical) base addresses. Though you can share interrupts
and
If you are installing a
board whose default
Note that with current (2009) hardware most of these issues with interrupts, DMA channels and base addresses is becoming moot. Most cards today are either PCI or something even more advanced so it is no longer necessary to set anything on the cards yourself. The system does it all for you!
The table below contains a list of the more common devices and the
Table – Common Hex Addresses
HexRange | Device |
000-0ff |
Motherboard devices (DMA Controller, |
1f0-1f8 | Fixed disk controller (WD10xx) |
278-27f | Parallel port 2 |
|
2f8-2ff |
Serial port 2 |
|
378-37f | Parallel port 1 |
3bc-3bf |
Monochrome display and parallel port 2 |
3c0-3cf |
EGA or |
3d0-3df |
CGA, |
3f0-3f7 | Floppy disk controller |
3f8-3ff | Serial port 1 |
One common BIOS feature is the ability to set one or more passwords. For example, you can set a user password which prevents the sytem from booting if the correct password is not provided. You can also set a system or admin password, which prevents unauthorized users from changing the configuration. When my kids were growing up I would set a BIOS password to keep them from playing too many video games. However, in my experience restricting physical access to the machine provides more security than a BIOS password as anyone who manages to walk away with the computer can find all sorts of information on the Internet for overcoming BIOS passwords.
Although universal, some new computers can detect configuration changes, including adding or removing hardware. When the system detects new hardware during the boot processes, the BIOS may prompt the user to acknowledge the addition or removal of the hardware. For example, by pressing the the F1 or some other key. In some cases, if the BIOS is password protected, the user must input the appropriate password to continue.
The BIOS is also responsible for the Power-On Self Test (POST). As the name implies, a test is carried out when the system is powered on . Various type of hardware are checked to see if they exiss and if so, a diagnostic test is carried out. By default the extent of such tests is limited, but modern BIOSes typically have more detailed diagnostic tests, but these need to be enabled manually. Generally, these are only necessary if you suspect a hardware problem and can take several minutes to complete. Should either type of test find an error this is referred to an “
In addition to the POST, the BIOS also serves as an interface to a special memory that stores various hardware settings. This memory is call the Complementary Metal Oxide Semiconductor) memory or simply CMOS. Although the CMOS is
Among the information the CMOS may contain is the date, whether specific on-board hardware is enabled or not, and the boot order of various devices. This last one I feel is very important to keep track of. It is possible that your system allows you boot from floppy, hard disk, CD/DVD, USB, and even from a network device. If you have multiple devices of the same type, you may have even more options. One common configuration is first floppy, then CD/DVD then the first hard disk. If there is no floppy, this might appear at the end of the list of be disabled entirely. If you are trying to boot from a CD/DVD, but your hard disk comes first in the boot order, the system logically will always attempt to boot from the hard disk first and if there is a bootable operating system, that is what is booted. If you have multiple hard disks it is possible that only the second one is bootable, but appears lower in the list. You then get an error when your try to boot from the first hard disk (for example “No oerating system found”). Some more modern BIOSes have an option whereby you press a certain button at boot-time (e.g. F12) and you are brought to a boot menu where you can select the boot device. This only applies for the current boot processes and the order is not stored in the CMOS.
Using the same battery as the one which keeps the configuration Information, a so-called “real-time” clock runs continually and is ofter used to set and maintain the clock the operating system uses. On the other hand, many operating systems like Linux and other UNIX-variants maintain the system time using
In recent years, Intel along with a number of other hardware manufacturer developed a new standard called the
Most of the information stored in the system BIOS and well as other hardware can be found in the /proc directory. (/sys on newer systems) You can get details about this in the section
Hard disks:
Originally the BIOS used Interrupt (INT) 13h as the interface to the hard disk. This mechanism had a limitation of 1024 cylinders, 256 heads and 64 sectors per track for a total of 8 GB. However, the original IDE specification has different limits: 65536 cylinders, 16 heads and 255 sectors per track. Since the smallest maximum value needs to be used, this works out to a maximum disk size of 504 MB. Because this depends on the cylinders, heads and sector, it is referred as the CHS specification and diskspace is calculated so:
cylinders * heads * sectors per track * 512 bytes per sector = capacity
The first method to get around this was problem was called Extended Cylinders Heads Sectors (ECHS). Typically you will see this in the BIOS as “Large Mode”, and is essentially a translation between the BIOS and INT13h. When activated, Large Mode takes the number of cylinders on the drive and calculates a “best fit” into the 1024 cylinders of INT13h by dividing the number of cylinders by a mulitple of 2 in order to get below 1024 cylinders. The number of heads is then mulitple by that same number. For example, if our disk has 4680 cylinders. In order to get this under 1024, we need to divide by 8, which gives us 585 cylinders which is then what the BIOS sees. Assuming the drive has 16 heades, we multiple 16 by 8 to get 128 heads.
One interesting and important aspect is that the IDE specification only supports up to 16 heads. This is not problem because the translation passes corrected
Eventually drives grew beyond the 8.4GB limitation of INT13h, so there was no way to define a translation that worked. The solution was Logical Block Addressing (LBA) which has actually become the most common way of getting around the 528MB limitation of IDE/ATA drives. This is another type of transation and works by simply assigning each block a number starting a 0.
Modern operating system are no longer bothered with this problem anymore because the bypass the BIOS completely. Instead, they access the hardware directly and are not restricted by a limitaiton in the BIOS.
Much (if not most) of how your hardware is configured can be found by looking through the files in
-
/proc/devices –