GARTHWILSON wrote:
Many here know far more about operating systems than I; but where is the dividing line between the kernel and the GUI that accompanies it for example? My DOS-based CAD is point-and-click, and obviously graphics, but there's no GUI in the OS itself. There was minor GUI when I was running GEOS under DOS. On my Linux machine, I use audio- and photo-editing software, streaming video, etc. which are amazingly complex yet not part of the OS. The GUI that came with the kernel does have things like thumbnail photo previews, and the mp3 files' icons, not to be outdone, start playing the music if you mouse over them (since it's not very helpful if they all play at once when you're looking at the folder's contents). It does not seem that the OS has any business being as big as modern ones. But where is the line between the kernel and the GUI? is the GUI part of the OS? Do programs that are very graphics-oriented particularly need a GUI that's external to the program? For desktop applications, we enjoy a lot of things that won't come simply; yet I'm not convinced that the way it's done is the way it should be done. Further, it is inexcusable that modern OSs want the amount of RAM and disc space that they do.
The Linux GUI runs as a user space application above the kernel, meaning it's not part of the kernel. All versions of Windows prior to Windows 95 ran the GUI as an application on top of DOS. Stability was a (big) problem because DOS has no concept of memory protection, preemption, etc.
Linux uses loadable modules to support hardware discovered during boot. This is different from, say, SCO UNIX, the latter which runs a monolithic kernel with the device drivers statically linked in. SCO also also uses the concept of boot-time loaded drivers (BTLD) to add support for new hardware that doesn't have a device driver integrated into the kernel—the kernel is actually relinked on the fly prior to being started. SCO UNIX kernels tend to be relatively compact, since they usually didn't carry around anything that isn't needed to run the target machine. If fact, back when we sold and support SCO on our servers, we usually unlinked all device drivers that weren't pertinent to the installed hardware, a step that could significantly shrink the kernel's size and memory footprint.
Unfortunately, a fair amount of complication exists in modern operating systems due to networking and especially in the case of x86 machines, the myriad combinations of hardware that may be encountered. That has added quite a bit of bloat. Adding more bloat is the fact that networking opens the doors to security intrusions that only the kernel can efficiently prevent, something that Microsoft was slow in realizing with Windows.