LSE/OS, an operating system for x86 (but not only).



  • LSE/OS shall be viable.
  • LSE/OS shall abandon the monolithic model: It is true that the monolithic kernel model is simple and has been well-tried, but at long-term there is a possibility we can't master all internal links that were made among all built-in services (locks, global variables, system priority levels) and that could lead to unpredictable results (deadlocks, errors, freeze of the system).
  • LSE/OS shall offer the same services as in a Unix system.
  • LSE/OS shall emulate a Unix system with a glue.
  • LSE/OS shall be small but extensible (modular)
  • LSE/OS shall unify disk and memory handling (McKusick): otherwise it induces a lot of code redundancy.
  • LSE/OS shall have only one libc for kernel, drivers and processes: for the same reasons as above.
  • LSE/OS shall not crash: It is true that todays kernels are quite stable but they sometime crash without any reason and this is inadmissible.
  • LSE/OS shall rely under the hardware to the max (Mach philosophy)
  • LSE/OS shall not stack contexts but use "context linking": that excludes stack overflows
  • LSE/OS entire kernel shall work in fully "scalar" mode (without the need of an FPU).
  • LSE/OS shall be fully written in C language (gcc). Assembly calls are wrapped into C functions.
  • LSE/OS code for managing peripheral shall be out of the core kernel: making services independant leads to a better global stability (tends to eliminate deadlock conditions).
  • LSE/OS Drivers shall be normal userland processes.
  • LSE/OS Drivers shall be reusable (backward compatibility of binaries)
  • There shan't be spl() like functions in LSE/OS: interrupt handlers are not interruptible (this is the default for x86 taskgates).
  • LSE/OS shall support VM86 extension.
  • LSE/OS shall support SMP (Symetric Multi-Processing).

    Kernel requirements

  • LSE/OS shall define a subset of syscalls for drivers needs (unlike POSIX).
  • Macro-syscalls (e.g. fork(), execve()) shall be emulated with smaller syscalls (this implies that they are not system bottle necks anymore)
  • LSE/OS shall manage 64bits process ids.
  • LSE/OS shall manage errnos but also sub-errnos for more accurate descriptions of errors

    Memory manager requirements

  • LSE/OS shall manage infinite memory space.
  • LSE/OS shall not dedicate special memory for management: especially we exclude buddy allocators.

    Security requirements

  • LSE/OS shall be secure: a normal user can't become a superuser.
  • LSE/OS shall respect anonymity: memory pages shall be cleaned when they are freed.
  • LSE/OS shall be MAC (Mandatory Access Control) compliant.