Check out the new USENIX Web site. next up previous
Next: GNOME VFS and GNOME Up: Unix file system extensions Previous: Implementation of access plug-ins


Implementation of asynchronous operations

To make operations totally asynchronous, we need to be able to perform them independently of the code that wants them to be executed. This can be done using either external helper processes or helper threads.

The thread-based solution has a number of advantages:

Unfortunately, it is not fully portable, as many systems don't have a suitable thread support. For this reason, GNOME VFS implements asynchronous operation in both ways. This is done by splitting the library in two parts: the basic file access library, and the asynchronous wrapper library. While there is one single version of the former, there are two versions of the latter: one that is based on POSIX threads, and one that uses external processes.

At run time, GNOME VFS applications are dynamically linked to either of the two wrapper libraries. This makes it possible to use either method without changes in the source code. In the case of helper processes, the GNOME Virtual File System uses CORBA to communicate with them.

Using CORBA has the advantage of not requiring the creation of a custom inter-process communication protocol; moreover, adding new operations is very simple (you just need to extend the IDL). GNOME comes with its own ORB by default, so this does not add any further constraints to the applications willing to use GNOME VFS.


next up previous
Next: GNOME VFS and GNOME Up: Unix file system extensions Previous: Implementation of access plug-ins
Ettore Perazzoli 2000-04-26