Historically, advances in compiler technology have been driven by the characteristics of applications, particularly those that comprise the SPEC benchmark suite. To achieve high performance, many of the most promising compilation techniques rely on accurate profile information to direct the optimization and instruction scheduling process. Prior studies have shown that for these applications it is possible to generate representative data sets that are suitable for profile-based compilation algorithms. Though we would like to apply sophisticated compiler techniques to operating systems (and eventually other multi-threaded software systems such as database management systems), we are presented with two significant problems. First, the process of profiling the operating system is more difficult than profiling an application, because of the complexity of the operating system and the interaction between the operating system and its applications. Second, even when one can profile the operating system, there seems to be no general agreement of what constitutes a representative data set for such a large and complex system. This implies that the optimization of the operating system in isolation is not the correct approach. A better approach for improving the combined system and application performance is to allow the compiler to symbiotically optimize the operating system in the context of the applications that use it. This paper proposes a structuring of the compiler and operating system so that it is possible to perform this type of symbiotic, cross-address space compile-time optimization.