Using the virtual machine approach in embedded systems presents some new challenges: Virtual machines hosting application programs with very different—sometimes even conflicting—timing requirements need to coexist safely and cooperatively in a single physical machine. This paper introduces a method for scheduling virtual machines in such a way that each of them receives a constant, reliable share of processing time while still allowing for good system utilization.