| |


"No matter how certain its eventual coming, an event whose
exact time and form of arrival are unknown vanishes when we picture the future. We
tend not to believe in the next big war or economic swing; we certainly don't believe in
the next big software revolution." - David Gelernter
INTRODUCTION
Visopsys (VISual OPerating
SYStem) is a home brewed computer operating system kernel,
which is still -- and is continually -- in development. It consists of code created
entirely from the ground up (i.e. no "borrowed" or "supporting" code).
Visopsys has initially been designed to support PC-compatible computers. The source
code is available under the terms of the GNU General Public License.
The libraries and include files are licensed under the terms of the
GNU Lesser General Public License.
The design and interface philosophies of Visopsys are driven by the fundamental
goal of keeping some of the best features of other successful systems, while discarding
many of their notorious weaknesses.
It follows then, that however many ideas Visopsys borrows from other operating
environments, it is not -- and does not try to be -- entirely compatible with any of those
other systems. Although some aspects of Visopsys will probably seem familiar, it is
not a "clone" of any other operating environment.
Some of the higher-level conceptual goals are as follows:
1. Stability, reliability, and security. These are primary
objectives. Not always achieved, but always important.
2. "Native" Graphical environment
- The base-level graphics server (analogous to an 'X' server in Unix, but not X)
will be integrated into the kernel. A default GUI shell environment must load and
run "straight out of the box", with no complicated setup procedure.
- The interface must be trivial to learn and use, even for a computer
novice. Most of its elements should be familiar to all computer users. Just
like the old software industry cliche: "Something my Mom can use".
- Something which might seem like a contradiction of the previous item: A new
metaphor for the GUI environment. The tried and true desktop/office/files/folders
paradigm is becoming a little bit dated. While not intended to be
revolutionary, the planned interface will put a new spin on graphical
shell design -- without making it unfamiliar or non-intuitive. Stay tuned for details.
- To the greatest extent possible, the user should be able to perform all tasks,
including administrative ones, using this "point and click" interface -- no
need to edit mysterious configuration files by hand.
3. Powerful command line capabilities (text windows and
scripting)
- Users must be given the ability to operate in a text-based environment if they
prefer to do so.
- Existing popular command shells will be supported. The native command shell will
contain features found in various systems (Unix and non-Unix).
- Most common text-mode commands available on other popular systems will be included
and will, as much as possible, be use model compatible.
- Some of GNU's Unix-like tools will be available (see http://www.gnu.org).
- To the greatest extent possible, the user should be able to perform all tasks,
including administrative ones, using this text interface. Configuring mysterious
configuration files by hand is, therefore, optional.
4. Highly networkable. Visopsys will be very network
oriented. Stay tuned for more details about this as well.
5. Highly compatible. Visopsys will conform to existing standards
to the greatest extent possible. It is not desirable for Visopsys to define new formats
(such as a new filesystem type). Examples of supported standards will include:
- Filesystem types
- Executable/object/library file formats
- Image, sound, font, compression and (enhanced) text file formats
- Encryption algorithms
- Network protocols
- Software development environment conventions
- Operating system API calls.
- Hardware interface standards (e.g. VESA)
- Basic POSIX compliance, where possible
CURRENT DEVELOPMENT STATUS
Visopsys is starting to look and feel like a 'real' operating system.
Provided that the video card in a system meets the requirements, the system
boots up quickly into a simple, functional (but nice looking!) GUI.
There's still a long way to go before Visopsys might be useful to the average
person, but it's getting there little by little.
Coding work was begun as a part-time operation in late 1997. The
majority of the code is written in C, with portions written in x86 Assembly
Language. Following is a list of implemented and unimplemented
functionality; keep in mind that this does not represent the complete list of
planned features -- only short- and medium term goals are listed here:
Features:
- Graphical User Interface (GUI)
- Fully 32 bits, "protected" mode
- Preemptive multitasking and multi-threading
- Virtual memory, and memory protection
- Flat linear memory management
- Graceful processor fault and exception handling
- Good random number capability
- Support for ELF and "flat binary" executable formats
- Filesystem support for:
Virtual filesystem API
Multiple mount points, multiple disk slices (partitions) on a single device
Buffered, asynchronous filesystem IO
Multi-threaded filesystem functions and device locking
12, 16, and 32-bit FAT filesystems (commonly used by DOS and Windows)
Read-only Ext2/Ext3 filesystems (commonly used by Linux)
CD-ROM filesystems (ISO9660/Joliet)
- Abstracted loading and management of device drivers
- Native command line shell
- Native installer program
- Runtime loader
- Hardware device support for:
Single K6/MII/Pentium processor (or better)
RAM above 64Mb
Programmable Interrupt Controller (PIC)
System timer chip
Real-Time Clock (RTC) chip
Keyboard controller
Text console IO
Direct Memory Access (DMA) controller
Floppy disk drive
IDE hard disk drive
IDE CD-ROM
VESA 2.0 or greater video card with LFB
PS2 mouse
In development:
- Kernel API
- Small 'native' C library
- Assembler and compiler (ports of NASM/GAS and gcc)
- Native linker, or satisfactory port of GNU linker, ld
Unimplemented (or mostly unimplemented):
- Multi-user operation
- Inter-Process Communications (IPC) facility
- IO Protection
- FPU state saves
- Support for a.out, and PE executable formats, loader relocation
- Dynamically loaded/linked libraries
- Emulation of other operating systems' APIs
- Filesystem support for:
Writable Ext2/Ext3
NTFS filesystems (commonly used by Windows NT/2000 and Linux)
(others, as demand dictates)
- Device support for:
Multiple processors (multiprocessing)
3DNow! and MMX processor extensions
Plug and play
PCI bus devices
Accelerated graphics card
Serial port (UART chip)
Serial mouse
Modem
NDIS
Network Interface Card (NIC)
Printers
(many others)
DEVELOPMENT ENVIRONMENT
Visopsys is developed under Red Hat Linux 9.x, using the latest GNU C compiler and the NASM assembler.
A TEAM OF HIGHLY SKILLED PROGRAMMERS
Who's working on Visopsys? It's a very small team.
Andy McLaughlin: 31 year
old programmer from Calgary, Canada.
I have recently moved to London, UK, after a year in Boston and 2 years in Silicon Valley (San Jose, California). Like many other hobby OS writers, I build Visopsys in my
spare time.
Visopsys.org? An "organization" of one person? See the
next section ("want to help?") for an explanation.
WANT TO HELP?
I am not actively seeking other programmers to assist in the development of
Visopsys at this time, but I am open to considering the possibility if talented
programmers express interest. My main concern is that I want Visopsys to be
"presentable" before I even attempt to get anyone else excited about it.
It's pretty presentable now, but I'm unreasonable about it of course. It's
my baby.
Unfortunately, that means that the project only progresses when I have the time to work on
it (this takes up a considerable amount of time).
An operating system kernel is a big enough challenge to be discouraging at times.
As an example, the Pascal compiler I wrote over an eight month period is trivial by
comparison. On the other hand, since I do everything by myself I am able to keep the
development on a unified path. The architecture that develops is -- I hope -- consistent
(for better or worse) and thus the end product reflects the vision of a single
programmer. It can be argued that this is the good, old-fashioned way of producing
software.
TRY VISOPSYS
The binary
version that you'll find on the download page
is intended for anyone who wants to try Visopsys on their own computer. It can
install on a single floppy disk, or on a hard disk partition. There's also
a source code distribution on the same page, and there are also some screen shots here.
ACKNOWLEDGEMENTS
I'd like to thank the following individuals who contribute (with or without their
knowledge) to the success of this project:
- Graeme McLaughlin (graeme@cpsc.ucalgary.ca)
for patiently helping me test each version of Visopsys. Graeme is the #1 Alpha Tester.
Also, big thanks for hosting the Visopsys.org web site.
- Katrin Becker (becker@cpsc.ucalgary.ca)
at the University of Calgary for helpful advice about free-list management in filesystems. I should have paid more attention in class.
- John Fine (johnfine@erols.com), Alexei A.
Founze (alex.fru@mtu-net.ru), and the rest of the
regular contributors to the comp.lang.asm.x86 and alt.os.development newsgroups. Thanks for always taking
the time to help people.
- Jerry Coffin (jcoffin@taeus.com) and Ratko
Tomic for posting information about alternate text mode video configurations.
- Linus Torvalds (torvalds@transmeta.com)
for showing the rest of us that it can be done. Besides, he and I share the same
birthday.
Bibliography:
Andy McLaughlin
05/27/2003
|