db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
%T Blocking System Calls in KRoC/Linux
db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
%A Frederick R. M. Barnes
db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
%E Peter H. Welch, Andr\[`e] W. P. Bakkers
%B Communicating Process Architectures 2000
%X This paper describes an extension to Kent Retargetable occam
Compiler (KRoC), which enables the execution of a blocking
call, without blocking the occam\-kernel. This allows a
process to make a blocking system call (eg, read, write),
without blocking processes running in parallel with it.
Blocking calls are implemented using Linux clones which
communicate using shared memory, and synchronise using
kernel level semaphores. The usefulness of this is apparent
in server applications with a need to handle multiple
clients simultaneously. An implementation of an occam
web\-server is described, which uses standard TCP sockets
via an occam socket library. The web\-server comes with the
ability to execute CGI scripts as well as dispensing static
pages, which demonstrates some level of OS process
management from within occam. However, this mechanism is not
limited to blocking in the Linux kernel. On multi\-processor
machines, the clones are quite free to be scheduled on
different processors, allowing computationally heavy
processing to be performed aside the occam world, but still
with a reasonable level of interaction with it. Using them
in this way provides a coarse\-grained level of parallelism
from within the fine\-grained occam world.