To allow continuous media applications ne-grained control over their CPU allocations, and to protect these allocations from each other, thread priorities must have quality-of-service (QoS) interpretation. To this end, we present a CPU scheduler based on the well-dened resource specication of service curve. Service curve is distinguished from the traditional notion of rate by its ability to exibly decouple delay and rate performance. Apart from how we compute thread priorities, predictable performance is hard to achieve also because threads can interact with each other and contend for synchronization resources. Such interactions can contribute to various forms of priority inversion. We discuss a new approach of dynamic priority inheritance in our CPU scheduler that solves priority inversion due to lock contention. To solve priority inversion arising from incompatible client/server resource specications, we employ a train abstraction that allows a thread of control to visit multiple..