If you want to donate with Paypal, my contact address is tuomoster AT gmail DOT com.

Amazon Wish List

file: vendu

projectszero, resurrection, wizard code

project: zero

Code for the people,
food for the mind,
peace on Earth,
Love for mankind.

GIT repository

why zero?

Whereas Unix and many of its different reincarnations are still pretty sound systems to use, need has arisen to modernify and optimize things a bit.

Traditional Unix was a system of notable elegance and simplicity. It does not, however, know anything about many now important concepts such as graphics. Therefore, I see need for a new operating system kernel and [at least partially] support libraries and other software tools for it.

Parallel and distributed computing should, in my opinion, be fundamental elements of design for modern operating systems. The kernel proper might be multithreaded and should be re-entrant code with proper locks for critical regions where necessary.

Zero C Library aims to bring together functionality from POSIX and related operating systems. Whereas POSIX-compliance is a fundamental goal, I have some ideas about making it possible to run different "personalities" on top of the Zero kernel.

name symbolism

Software engineers typically start counting entities from the ID of 0 (zero). This makes sense for doing things such as indexing arrays; in C and some other programming languages, this would translate easily to native CPU [addressing] operations.

On Unix-like systems, process ID zero is typically reserved for the system. To a point, it would make sense to think about the core kernel as a process with the ID of 0.

When naming my project, I also thought about Zero meaning not just nothing (writing a system from scratch), but also a new beginning [of reinventing core functionality of typical Unix-like systems as well as adding new kinds of support libraries to the software stack.

obtaining zero

ATTENTION - Zero is to be considered pre-alpha software for the time being, so anything and everything is subject to change and often break as well. :)

On Unix-like systems, the following command should do the trick:

git clone https://github.com/vendu/OS-Zero.git

Make sure to browse README- and other text files in the source code repository.

goals

native support for multicore and multiprocessor systems; multithreaded system and support libraries
efficient POSIX-compliant operating system with support for other OS personalities (system call interfaces); Linux, FreeBSD, ...
high quality framework and software for multimedia playback and production including games; professional-quality graphics, audio, and video tools
modern, innovative software development tools

Overview

Zero is my operating system project. Currently it has an early IA-32 kernel, parts of libc, and notes + other ideas for a system.

The zero kernel, the 32-bit X86-version, currently boots into VGA text mode console and prints some informative messages on the bootstrap process. Support for interrupt handling and most of virtual memory - short of disk drivers for paging - have been implemented.

Downloads

NOTE: As of 0.1.15, Zero has a start of a book on the kernel project. This book can be downloaded as LaTeX source as well as a PDF file. Notice that the books are very early in development, but I hope they are of some help investigating Zero source code.

Highlights

zero mallocworld class malloc-interface allocator
wizard pseudo machinework-in-progress virtual cpu with bytecode interpreter and assembler
ia32 kernelearly kernel to run on 32-bit PC machines, most of virtual memory implemented
gamesa few game ideas; cyberpunk rogue-like, real-time strategy, program-on-program combat

Kernel

Zero kernel will be POSIX/Unix-like with a low number of different system calls. It will implement ISO and POSIX as well as features from other standards in its C Standard Library, often refered to as libc.

Zero shall be a multithreaded kernel with fixed (realtime) priorities for multimedia, user input, and other low-latency functionality. The kernel design is monolithic, using loadable modules for drivers.

IRC

Zero has a somewhat small and quiet IRC channel on the Freenode IRC Network. Connect to irc.freenode.net and if you want to pay us a visit, welcome to #oszero :)

Links

osdgeezer's OS tutorials
osdevoperating system forum
kernelnewbiesLinux/Unix wiki