Comments
Loading Dream Comments...
You must be logged in to write a comment - Log In
ArtistA red circle (with a smiley) in the centre, linked to a number of green circles around it.
As discussed in the similar drawing with the red circle (SHE, the Kernel) surrounded by purple circles (ILA, the User Mode tasks), the Kernel running in ring 0 also calls BIOS Device Drivers (tty, disk, kbd, etc) which run in ring 3 (user mode). This allows for example USB disks to be handled by the built-in BIOS drivers supplied with a given motherboard, without worrying about their particular implementation. (Most modern mobo's will emulate a HDD when a USB stick is plugged in, and allow access via INT $13). The reason we run the BIOS device drivers in ring 3 is because they are written to expect a "real-mode" addressing model, i.e. the segment registers are used to provide the leftmost 16 bits of a 20bit RAM address, and the 80x86 processor only implements this in either real mode or in ring 3 of VM86 mode (otherwise the segment registers are "selectors" into the GDT -- Global Descriptor Table).
When ::SHE+ILA:: boots up, it sets up 256 IDT (Interrupt Descriptor Table) entries, based on the Real Mode versions at 0000:0000, with a mixture of Task Gates, Interrupt Gates, and Trap Gates. It also moves the Interrupt Controller chips from INT $08_$0F to INT $78_$7F to fixup the oversight due to IBM's overlapping of 80x86 exceptions (opcode trap, GPF, zero divide, stack overflow) with IRQ vectors. It also points INT $48 to the FBI (Fundamental Buffer Interface) of the Kernel, so that ILA (Interactive Language Architecture) tasks running in ring 3 can issue supervisor calls to the SHE (Segmented Hierarchical Environment) kernel, and finally calls BIOS INT $15 to switch into protected mode. Note that ::SHE+ILA:: does not implement VCPI or DPMI, so will not coexist with either QEMM or EMM386 as such.