HelenOS project is an effort to develop a working operating system according to HelenOS specifications. HelenOS supports SMP, multitasking and multithreading on both 32-bit and 64-bit, little-endian and big-endian, processor architectures, among wich are AMD64/EM64T (x86-64), IA-32, IA-64 (Itanium), 32-bit MIPS, 32-bit PowerPC and SPARC V9.
HelenOS is being developed by students of Faculty of Mathematics and Physics at Charles University in Prague. The source code is available under the BSD license. Third party components are licensed under GPL.
In case you are interested in our project or have any questions about it, feel free to subscribe to our mailing list. The project is currently under heavy development and we are looking for people to join our team as beta testers. Beta testers of today can become developers of tomorrow.
Here are some key features of "HelenOS":
· In-tree means that the port has already begun and that it is possible to build a binary image of SPARTAN kernel for that respective architecture.
· Interrupt & exception handling says whether the kernel is ready to survive and eventually process some kind of interrupt. This especially relates to hardware interrupts like timer interrupts.
· Context save/restore is the ability to save and restore the state of the current CPU within the kernel mode. This is an architecture-specific task and requires some assembly coding.
· FPU context refers to the ability to support thread's private floating point environment.
· Time management refers to kernel's ability to count timer ticks and execute registered actions on special events called timeouts.
· Kernel preemption, contrary to ordinary userspace preemption, states, that the execution of kernel code can be interrupted whenever CPU priority is low (interrupts are disabled).
· Kernel threads are schedulable entities with own kernel context.
· Synchronization is provided by semaphores, mutexes, rwlocks and condition variables. All of these are SMP safe and capable of timeout mode of operation.
· Heap manager aids dynamic allocation and deallocation of memory for kernel purposes.
· Physical memory management takes care of allocation of frames of physical memory.
· Virtual memory management is the subsystem which provides mapping of virtual addresses to physical memory. It is also used to organize threads' userspace memory mappings.
· Userspace threads are threads with userspace stack and virtual memory mapping added.
· Multiprocessor support declares support for SMP systems. Each architecture needs to configure the system on startup to detect all CPU's and make them execute kernel code.
· Little-endian and big-endian architectures are supported.
· 32-bit and one 64-bit architectures are supported.
What's New in This Release: [ read full changelog ]
· The project switched to Bazaar VCS.
· The ia32 port can be run in VirtualBox again.
· Support for building using Clang.
· Support for the UltraSPARC T1 and T2 processors was added.
Services and Drivers:
· ATA Disk Driver
· Now works with real disks and supports 48-bit LBA.
· Added MBR and GUID partition table drivers.
· On G3 Macs keyboard works again via new Apple Desktop Bus driver (and mouse is also supported).
· Re-introduced mouse drivers, this time as separate servers.
· PS/2 mouse
· Apple ADB mouse
· Clipboard service
· Networking stack (experimental support)
· Block addresses and file offsets are now 64-bit on all architectures.
· Improved I/O error handling.
· The FAT file system is now more robust against malformed on-disk file system data.
· The DEVFS file system now understands device namespaces and moves to hierarchical directory structure.
· TMPFS and FAT file systems can now be unmounted.
· New Text Editor
· Added edit, a simple text editor.
· Improved command input (text seek, history, copy and paste)
· mkfile command for creating zero-filled files (e.g. disk images)
· Tool for creating FAT file systems, mkfat
· Build system
· Parallel builds are now supported.
· Spawned task now inherits the current working directory from the spawner task.
· Stack traces
· Upon a failed assertion the failing application will print a stack trace (all architectures except ia64 and mips32).
· When the kernel kills a task, it will print its stack trace (all architectures except ia64, mips32, ppc32 and sparc64).
· When the kernel panics, it will print a stack trace (all architectures except ia64, mips32, ppc32 and sparc64).
· Core dumps (experimental support)
Regressions in This Release:
· Changes in Qemu behavior for some platforms
· HelenOS/arm32 for Integrator/CP running in Qemu 0.11 and above will show wrong colors on the frame buffer and the keyboard presses will result in incorrect scan codes. Running in Qemu 0.10.5 does not exhibit these problems.
· For the known bugs, please see the list of defects logged for the next releases.