The apache binding is implemented as a shared module (mod_uno). One problem is, that the webserver does not support a httpsession notion. So the binding itself must do a http session adminstration, which is implemented as a UNO component and can be reused for futher bindings, where the webserver does also not support a session notion.
The common apache webserver runs in different modes on windows and on unix. This directly affects the binding and the runtime process layout, so they are explained differently here.
Future developments of the UNO framework will allow to customize the process layout by simply modifiying some entries within a UNO registry, the current level of customization is quite limited.
On windows apache runs multithreaded in one process. So the binding, the servlets and the sessionadminstration can also run in this one process. This offers optimal performance as no processor cycles are wasted for remote bridging.
On linux, the apached forks into multiple worker processes. Which process gets which http-request, is coincidal. This means, that the servlets libraries get loaded in each worker process. That bears a memory penalty (the code segment is shared, but the heap needed by the UNO framework is not). However crashing of one servlet still leaves the webserver fully functional.
The session administration itself must live in a extra process, as there is no central process anymore. Each worker tries to establish an interprocess bridge on demand (the first time a getSession() is called). If the connection could not be established (e.g. because the server is not running), the getSession() call fails with a RuntimeException.
So there must be launched a seperate daemon for this binding. You can find the script at uno_servlets/out_linux/script/sessionadmind.