Abstract. Distributed database systems need special operating system support. Support routines can be implemented inside the kernel or at the user level. Kernel-level functions, while efficient, are hard to implement. User-level implementations are easier but suffer from poor performance and lack of security. This article proposes a new approach to supplement or modify kernel facilities for database transaction processing. Our experimental facility, called Push, is based on an extension language interpreted within the kernel. Our implementation provides the efficiency of kernel-resident code as well as the simplicity and safety of user level programming. This facility enables experimentation that would be difficult and time consuming in current enviromnents. The overhead of the Push implementation can be factored out to give a good estimate of the performance of a native kernel implementation. We have used Push to implement several kernel-resident services. In the case of multi-RPC and commit protocols, Push implementations significantly improve performance and scalability over user-level implementa tions. The experiments show the benefits of Push both as an operational tool for improving transaction processing performance and as an experimental tool for investigating the benefits of operating systems extension without costly implementation.