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

Changes between Initial Version and Version 1 of DiffFromUnix


Ignore:
Timestamp:
2011-06-10T10:14:24Z (8 years ago)
Author:
Jakub Jermář
Comment:

Start page describing major differences of HelenOS from Unix

Legend:

Unmodified
Added
Removed
Modified
  • DiffFromUnix

    v1 v1  
     1= Design differences from Unix and POSIX systems =
     2
     3== No `fork()`, no `exec()` ==
     4
     5In 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.
     6
     7In 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()`.
     8
     9== No signals ==
     10
     11To Be Written.
     12
     13== Lexical dot-dot resolution ==
     14
     15To Be Written.