Unifying the User and Kernel Environments

Vendors of commercial operating systems today invest resources in two very different environments–one for user-level (application or server) programming and one for kernel-level (device driver or subsystem) programming. The kernel environment is typically more restrictive, with completely different interfaces and programming conventions. Based on our experience developing and deploying an operating system for an interactive TV system, we believe that it is desirable to unify the user and kernel environments. We structured our operating system to provide common programming and run-time environments for user-level code and kernel-level code. For example, modules loaded into the kernel did not have any restrictions on their use or shared libraries or stack space. We found that documentation, and a common debugger produced significant software-engineering benefits. In addition, we could transparently collocate trusted server code in the kernel to reduce memory usage and improve performance.

tr-97-10.ps
PostScript file
tr-97-10.pdf
PDF file

Details

TypeTechReport
NumberMSR-TR-97-10
Pages16
InstitutionMicrosoft Research
Share
Share this page on Facebook
Share this page on Twitter
Share this page on LinkedIn
E-mail this page
RSS feeds
> Publications > Unifying the User and Kernel Environments