Clicker model for servers
cooked by Pype @ 03.05.02
status: model proposal - requires a T-cup to be written about page frame
viewer - request for comments
The goal of this document
is to provide a rough overview of how device access could be implemented
in Clicker Operating System, how these low-level devices can be extended
in high-level (abstract) services to applicative programs.
Note that the base model remains microkernel architecture, which
mainly means that:
However, Clicker state-of-mind is also modulable, and copyless
- the microkernel (Clicker32) doesn't know anything about your hardware,
except for your CPU and main memory.
- the applications can't deal directly with your hardware (not an
exokernel), but have to send requests to a high-level server (file
system, network stack, etc.) that will process the I/O informations in its
- each server is isolated from other servers and from the kernel level,
so that a failure in network or file or GUI sub-system doesn't make the whole
- communication between clients and servers can be done through reliable
memory sharing between both entities so that we don't need requests &
response between clients & servers to cross the microkernel, except through
the transmission of events. The details of this client/server communication
will be hidden in the access library of the server.
- the server can be sub-divided in smaller services called either
syncrhonously (function calls) to build complex processing from simple layered-blocks.
- the hardware part of the service (interrupt service routine) can
be plugged into the kernel by the mean of modules. I/O programming can be
delegated to the user mode, but restricted to the server that deals with that
- The presence of the page frame viewer allows the user-level
server to give the ISR a pre-mapped buffer that can be used in every process
(thus needing no process switching for IRQ servicing)
- Events model allow quick response of user-level component to system
(or client-server) notifications (provided that the scheduler preempts job
processing for events processing).
- memory-objects can provide buffer-aware memory to the application
so that it can safely let the untrusted server write into it without overwriting
[RFC==true]: please, post your feedback on the