Table of Contents
- General Operating System Questions
- GregOS Questions
An operating system is the software installed on every computer that allows it to run. There must be an operating system installed in order to use things like your monitor, keyboard, modem, hard drive, etc. efficiently and effectively. Now on some computers, there is a mini-version of an operating system known as the BIOS (Basic Input Ouput System). Intel PCs generally have a BIOS that can be accessed when the computer is first powered on. This "operating system" is very low-level and really does not allow you to do much of anything. However, it is extremely helpful when installing new hardware (like hard drives) or when trouble-shooting.
Recently, you have probably heard that the Y2K bug (Year 2000 bug -- otherwise known INCORRECTLY as the Millenium Bug; the new Millenium is not until January 1, 2001) will be affecting computers on a global scale. Testing your computer's BIOS is an important part of determining if your computer is Y2K-compliant. (Go here for testing procedures.) However, testing if the installed operating system is also Y2K-compliant is also important. For information as to compliance of your operating system, please refer to the company that produces your operating system (either Microsoft, Apple, or a Unix [variant]).
What happens when my computer is turned on, then?
If your computer is a standard PC, then when you hit the power button on your machine, the computer is in an unknown state. There is nothing in the RAM (Random-Access Memory), and various components on the computer contain junk values. The manufacturer of the computer motherboard (also known as a mainboard) guarantees that the computer will be placed into a known state following the power-up.
There is still nothing in the RAM in the way of a program. What happens is that during the manufacturer's guaranteed startup procedure, a small program (16 bytes!) is executed in the ROM (Read-Only Memory). This program always exists when booting up the computer. This program is very simple (it has to be!) and simply runs another program. This program is the BIOS (discussed above).
When the BIOS starts to run, it initiates something called the POST (Power-On Self-Test). You generally see the results of these tests in the form of your memory being tested, your disk drives whirring, and a few beeps beeping. These tests simply perform some diagnostics on the various components of your computer. If something fails during the POST, then it is generally quite bad (although not always -- if your keyboard is not plugged into the back of your computer, the POST will halt and tell your this fact).
Once the POST is complete, the BIOS will attempt to load the operating system of the computer. Operating systems are unlike other programs because they have to integrate themselves with the computer hardware like this. They become part of the power-on sequence of events.
The operating system can reside in one of several places: floppy disk, hard disk, removable writeable media (like a ZIP drive) or even on a CD-ROM. The choices available to your system may be different than another. The BIOS determines acceptable locations for the operating system. In all cases, the standard bootable devices are the floppy drive and the hard drive.
The operating system will reside at a very specific place on the disk -- the beginning. If it weren't, then the BIOS (located in ROM) would be hard-pressed to find it. At this location, there is another small program (at a size of 512 bytes). With 512 bytes, not many fancy things can be done -- ie. like Windows 3.1, or Windows '95 boot-up screens. What most operating systems do is to perform what is known as a multi-stage boot. The small program will perform some necessary functions and then load a larger boot program into memory -- which can be located in an arbitrary location on the disk. This program can be any size and can perform a greater variety of things.
GregOS is my experimental operating system based on the Intel 80x86 family of processors and their equivalent clones (what most people run on a desktop PC). It will be a 32-bit, protected-mode operating system capable of running multiple programs simultaniously (called multi-tasking or multi-processing). Because it is a 32-bit, protected-mode operating system, it will take advantage of the true power in any 80386 and greater. Before the 80386, processors could only operate in 16-bit real-mode (although the 80286 had limited protected-mode capabilities). The difference between real-mode and protected-mode is how programs (called processes or tasks) behave with one another. In a real-mode operating system (like DOS/Windows 3.1x), if one process crashed, the entire system tended to require rebooting. With protected-mode operating systems, processes are not allowed to corrupt other processes (unless the program dictates otherwise). Because of this, when a process crashes on an O/S like Windows '95, generally only that process will crash.
In developing this operating system I hope to provide a very rigid structure. The Windows family of operating systems are constantly changing and having major architectural over-hauls. This leads to complex internal workings, difficulty in debugging, potential conflicts with earlier designs and lots of leftover, ignored system garbage. Since the O/S is still in its infancy, there are no solid plans as to how or what this will entail. I hope to use a form of object-oriented design (or at least an object-based design).
I also want to provide detailed error messages to the user. I am sick and tired of obscure messages that give an error code and a stack dump. I realize that there are some errors that cannot be explained in further details, but there is the possibility for work here.
I want to implement a custom network protocol called Borg. The inspiration comes from the popular television series, Star Trek: The Next Generation. The Borg are a race of beings that behave as a collective and distribute tasks among themselves. One aspect about the Borg is that they assimilate other beings into their collective (unwillingly). I would like for this protocol to be able to easily incorporate another computer into the network and convert it over to the GregOS operating system with relative ease. The protocol would not unwillingly assimilate (since this would be the basis of a good virus!), but rather perform a more passive search.
Because of the collective nature that the Borg network protocol would impose on the computer (and consequently, the operating system), the entire OS would be similar to a distributed operating system. This is an area which I would like to specialize in (see my resume).
What is different between GregOS and Microsoft Windows?
First of all, GregOS would NOT be Microsoft Windows. I personally believe that the Microsoft Windows family of operating systems are shoddy pieces of professional programming (not to say that they are not incredibly complex). Windows NT offers the best of the crop. However, they are attempting to infuse NT with the same services, architecture, etc. as the Unix operating system. Because of their drive, what took Unix 25 years or more to implement can be done in about five years by Microsoft.
The goals listed above are quite different that those of the Microsoft operating systems. Personally, the Windowing environment appeals to me quite a bit, although I frequently open a DOS-box to perform operations that cannot be done within the GUI (Graphical User Interface). For this reason, I would like to have a command-line operating system coupled with a windowing environment -- similar to the Unix environment.
Although I am laying some praise on the Unix operating system, there are several things that I do not like about it. My main qualm is the fact that Unix is NOT user-friendly. Although this is beginning to change with the emergence of Linux, the free Unix-clone, it is still a long way off. Micrsoft has certainly made a user-friendly operating system. Some would argue that it limits the freedom of the power-user (or the hacker). I would like to identify the elements in the Windows family of operating systems that add to the user-friendly nature and incorporate as many of these as possible into GregOS.
Yes, GregOS is highly experimental in nature. However, because of the experimental and educational nature of the system, I will be posting the source code and documentation for the system as it is created (and hopefully debugged). I hope to build an archive to show the evolution from a simple device-driven, command-line operating shell to the "full-blown" OS it aims to be.
Documentation is at least as important as the source code (if not more so). I encourage you to examine the documentation before the source code or in tandem. Documentation for the GregOS project can be found here.
Source code (written in C/C++) can be found here.
Archived sections can be accessed from this point.
What other OS projects are going on in the world?
There are a number of operating system projects underway. The inspiration for this operating system comes from the Lego VM (Virtual Machine) distributed operating system developed by Dr. Larry Hughes of Dal-Tech. Click here for getting in touch with Dr. Larry Hughes.
Links to other operating system projects are as follows:
Last Updated on May 9, 1999