Fork us on GitHub Follow us on Facebook Follow us on Twitter

Version 1 (modified by Jakub Jermář, 8 years ago) (diff)

Start page describing major differences of HelenOS from Unix

Design differences from Unix and POSIX systems

No fork(), no exec()

In traditional Unix, new processes are created by duplicating the resources of the current process via a call to fork(). Forking a process will, among other things, clone the current thread of that process. After fork(), both threads typically test whether they are the parent or the child instance. Very often, the child thread makes a call to exec() to load a new program. Calling exec() replaces the contents of the address space of the entire process with the new content of the loaded program. As can be seen, especially without heavy optimizations such as copy-on-write allocation of memory pages and non-duplicating variants of fork() such as vfork(), the procedure of spawning a new program is quite wasteful.

In HelenOS, there is no fork() or exec() or any variant thereof. Programs are simply spawned by calling task_spawn(), which creates a separate new task for the loaded program and allows the caller to continue to run. Likewise, new threads and thread-like entities are created by calling thread_create() and fibril_create().

No signals

To Be Written.

Lexical dot-dot resolution

To Be Written.