Go back to the Visopsys Home Page.

What is Visopsys?



Download Visopsys and associated files.


Resources for Visopsys development

OS Development Resources

Search the Visopsys Site

 


"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 an alternative operating system for PC-compatible computers which is written "from scratch" and continually in development.  The source code is available under the terms of the GNU General Public License.  The libraries and header files are licensed under the terms of the GNU Lesser General Public License.

The overall goal of Visopsys is always to cherry-pick the best ideas from other OSes, preferably contribute a few new ideas, and hopefully avoid (re-) introducing some of the more annoying elements.

However many ideas Visopsys borrows from other operating environments, it is not a Windows or UNIX lookalike, nor a clone of any other system.  On the other hand, much of what you see in Visopsys will be familiar.  There are a number of command line programs that are superficially UNIX- or DOS-like, so you shouldn't have too much trouble finding your way around.  It is compatible with existing filesystems, file formats, protocols, and encryption algorithms (among other things).

The bulk of Visopsys is a fully multitasking, 100% protected mode, virtual-memory, massively-monolithic-style kernel.  Added to this is a bare-bones C library and a minimal suite of applications together comprising a small but reasonably functional operating system which can operate natively in either graphical or text modes.  It's been in continuous development for a number of years, though realistically the target audience remains limited to operating system enthusiasts, students, and assorted other sensation seekers.  The ISO and floppy images available from the download page can install the system, or operate in 'live demo' mode.

Other operating systems can do more than Visopsys; it doesn't include many applications.  Needless to say, it's not as good as Linux or even SkyOS or Syllable.  On the other hand, it's still a one-person project.

From the perspective of a user — the "but what the heck is it good for?" perspective — its primary selling point is a reasonably functional partition management program (the 'Disk Manager') in the vein of Symantec's Partition Magic.  It can create, delete, and move partitions, and modify their attributes. It can also copy hard disks, and has a simple and friendly graphical interface, but can fit on a bootable floppy disk (or CD-ROM, if you're feeling naughty).

The Disk Manager does most of what you'd expect from your basic 'fdisk' tool, whilst maintaining safety through MBR backups and 'undo' functionality.  The slightly more sophisticated features, such as copying disks and moving partitions, are the beginnings of a project to create a free alternative to certain proprietary tools such as Partition Magic, Drive Image, and Norton Ghost; the same user-friendly GUI environment, yet still small enough to fit on a boot floppy.  What it currently lacks are easily accessible ways to error-check and resize filesystems.

A few other simple user applications are provided.  These include a 'Program Manager'; a basic 'User Manager' for administering user accounts and passwords; a 'Keyboard Mapping' program which provides a choice between (currently) UK and US English keyboard layouts; a 'Display Properties' program for setting graphical boot, screen resolution, colours, background, etc.; and a 'Configuration Editor' for modifying the system's configuration files (since there isn't any kind of native text editor, yet!).  Additionally there are programs for installing Visopsys, viewing images, and making screen shots, as well as a simple command line shell and associated programs for viewing memory usage, managing processes, and plenty of other simple tasks.

Hardware support is generally limited to devices that conform to popular hardware interface standards, such as VESA, PS2, ATA/ATAPI (IDE), plus all of the standard PC chipset components.  Graphics are provided through the (non-performant, but reasonably standard) VESA linear framebuffer interface.  At present there aren't any vendor-specific video drivers provided, though this is not so much a design choice as it is the result of limited manpower and time.  Memory requirements are small: approximately 5 MB in text mode, and generally less than 20MB in graphics mode depending on screen resolution, etc.

Visopsys supports all variations of FAT filesystem (12, 16, 32/VFAT) as well as read-only EXT2/3 and ISOFS.  Upcoming features include support for SCSI, serial mice, resizing filesystems, writable EXT2, and dynamic linking. Ports of the Newlib C library, GNU Binutils and GCC are underway and will be available as add-ons.

Some of the higher-level conceptual goals are as follows:

1. "Native" Graphical environment

  • The base-level graphics server (analogous to an 'X' server in Unix, but not X) is integrated into the kernel.  A default GUI environment runs "straight out of the box", with no complicated setup procedure.
  • At a later stage, a new metaphor for the GUI environment.  While not intended to be revolutionary, the planned interface will eventually try to put a new spin on graphical shell design — without making it unfamiliar or non-intuitive.  The ideas are formed, but the code is not written.
  • 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.

2. Strong 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.
  • To the greatest extent possible, the user should be able to perform all tasks, including administrative ones, using the text interface. Configuring mysterious configuration files by hand is, therefore, optional.

3. Compatible.  Visopsys will conform to existing standards to the greatest extent possible.  It is not a goal for Visopsys to define new formats (such as a new filesystem type).  Examples of such standards 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
  • Hardware interface standards (e.g. VESA)
  • Some level of POSIX compliance, where possible, eventually.

CURRENT DEVELOPMENT STATUS

Visopsys is starting to look and feel like a 'real' operating system.  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 large majority of the code is written in C, with portions in x86 Assembly Language.  Following is a list of some of the implemented and unimplemented functionality

Implemented Features:

  • Graphical User Interface (GUI)
  • Fully 32 bits, "protected" mode
  • Fully pre-emptive multitasking and multi-threading
  • Virtual memory, and memory protection
  • Flat linear memory management
  • Graceful processor fault and exception handling
  • Good random number capability
  • Buffered, asynchronous disk I/O
  • ELF executable format
  • Filesystem support for:
    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)
  • Native command line shell
  • Small, native C library
  • Native installer program
  • Hard disk partitioning program (Disk Manager)
  • Hardware device support for:
    Single Pentium (or better) processor
    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

Unimplemented:

  • Multi-user operation
  • Inter-Process Communications (IPC) facility
  • IO Protection
  • FPU state saves
  • Support for a.out and PE executable formats
  • Dynamic linking
  • 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
    SCSI
    3D or accelerated graphics
    Serial ports (UART chip) and serial mice
    Modems
    Network Cards
    Printers
    (many others)

DEVELOPERS

It's a very small team: just Andy McLaughlin, a 32 year old programmer originally from Calgary, Canada.  A couple of years ago, I moved to London, UK, after a year in Boston and 2 years in San Jose, California. Like many other hobby OS writers, I build Visopsys in my spare time.

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.

An operating system kernel is a big enough challenge to be discouraging at times.  In comparison, the Pascal compiler I wrote over an eight month period is trivial.  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.

DEVELOPMENT ENVIRONMENT

Visopsys is still developed using Red Hat Linux 9, using the included GNU C compiler and NASM assembler.

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.
  • Thomas Kreitner for all his testing and interest, and for finding the weird bugs.  Only an evil genius would discover some of these things.
  • 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.

Bibliography:

 

Andy McLaughlin
03/03/2005

Go back to the Visopsys Home Page.   What is Visopsys?      Download Visopsys and associated files.   Resources for Visopsys development      Search the Visopsys Site
This site is copyright © 1999-2005, J. Andrew McLaughlin
Visopsys and Visopsys.org are trademarks of J. Andrew McLaughlin
Last updated on March 22, 2005