Personal Page

VISOPSYS

Home

About
Download
Developers
OS Development
Screenshots

ABOUT VISOPSYS

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.

 

TOP