Extending Operating Systems at the User-Level: How to Build Your Own Ufo Klaus E. Schauser, Albert Alexandrov, Maximilian Ibel, Chris Scheiman Department of Computer Science University of California at Santa Barbara Abstract In this talk we present a novel way of extending the functionality of the operating system completely at the user-level. We demonstrate our technique in the context of Ufo, a personal file system useful for global computing environments. We also discuss how our methodology can be applied to other system extensions desirable for a network of workstation setting, such as co-scheduling, sandboxed execution of untrusted applications, parallel debugging, and process migration. Our approach works by intercepting selected system calls and signals at the user level, using tracing facilities such as the /proc file system provided by many Unix operating systems. The behavior of some intercepted system calls is modified to implement new functionality. We used this approach to implement a global file system prototype, called Ufo, which allows users to treat remote files exactly as if they were local. With the advent of global clusters of workstations and the rapid growth of the Internet and World-Wide Web, it becomes increasingly important to provide users and applications with this kind of transparent access to files located on remote servers. Currently, Ufo understands the FTP and HTTP protocols and allows new protocols to be plugged in. While several other projects have implemented global file system abstractions, all of them require either changes to the operating system or modifications to standard libraries. Ufo, on the other hand, is based on user-level extensions to the operating system and installs without system administrator assistance. Ufo does not require any re-linking or re-compilation of existing applications. In fact, it can even be dynamically ``installed'' into already running processes. While our approach results in a substantial increase in the cost of the individual system calls being intercepted, the remaining system calls are not affected. Measurements of our prototype implementation under Solaris show that, while running under Ufo, the user sees an acceptable overall overhead for many applications.