- Object oriented multithreaded GUI.
- UNICODE character support through UTF8.
- Flexible command-line interface through the native x-term like terminal emulator
and the Borne again shell (bash). In addition you have most of the utillities
you normaly find on a Unix system available.
- Global clipboard.
- Drag and drop.
- Multi processing/multi threading.
- Pre-emptable multithreaded kernel.
- Syncronous Multi Processor (SMP). AtheOS runs on (and take advantage of) multi processor intel machines.
My main developer machine is a Dual Pentium III 800.
- IPC through message ports, shared memory posix signals and semaphores.
- Named and anonymous pipes (pipe() and mkfifo()).
- Memory area objects that can address normal RAM or other physical addresses (for memory mapped devices).
Those areas can be shared between processes for comunication through shared memory. They are also
used when an application have special requirements for locking and/or protection of a
certain memory area.
- 64 bit journaling file system with support for an arbritary number of named data streams for
each file (user attributes). I am also planning support for indexing of file attributes for extremly
fast file lookup. The file system design is mostly ripped from the book
Practical file system design
by Dominic Giampalo (The author of BFS, used in BeOS).
- Node watching. This is a system that allow an application to keep track of
changes in directories (like file creation, deletion, renaming) and files (like size-changes,
date-changes, attribute changes, etc etc) in an asyncronous manner without any polling.
- Dynamic disk-cache. The disk-cache utilize all unused memory.
- Network file system: There is a native network filesystem for remote mounting of filesystems between
AtheOS machines. I also ported the server to Linux, so I could mount disk's from my Linux server on AtheOS.
The filesystem is very imature though, and does not support attributes yet, so it need some work to be
- Loadable kernel-drivers, video-drivers and file-systems. AtheOS is very modular, mening that you can extend
both the kernel, and the GUI system vith external drivers at runtime without rebooting the system
- Plugin-interface for window-decorators. (You can replace the window-border rendering)
- AtheOS runs ELF executables.
- TCP/IP: AtheOS has a TCP/IP stack built into the kernel. It can communicate through TCP, UDP and some ICMP.
The TCP/IP stack need quite some work though.
- POSIX: AtheOS supports POSIX well enough to compile/run most non-gui GNU application's
- Serial kernel debugger. Two AtheOS machines can comunicate through a simple protocol atop of
RS-232 that allow up to 16 simultanous connections. The kernel send all debug output (printk())
to channel 0, and the kernel debugger read commands from channel 1 and send output from the debugger
to channel 2. By running a tool named dbterm in a terminal you can direct standard input/output
to any of the channels to view kernel output and controll the debugger on a remote machine.
Very usefule for kernel debugging. I also wrote a little ftp like tool to transfere files
over one of the channels that I used to upgrade the kernel, and other components on my test
machine before I got the network up to speed.