Hardware designers are facing the following dilemma: they must ensure that the processor temperature will never exceed a safe maximum, but they also know that this maximum is reached only under unrealistic benchmarks. In other words, the processor could be more efficient for an average workload. Maintaining a safe temperature bound is made difficult because it depends on system statistics as well as external parameters such as the room temperature. We present an adaptive approach that uses feedback to keep the processor temperature in a safe range. The temperature is regularly sampled. When it reaches a dangerous level, the applications responsible are slowed down. Our technique is implemented in the operating system so that it can both access hardware statistics and control the interleaving of processes. This allows us to affect only CPU-intensive (or "hot") processes and not reduce the responsiveness of interactive processes. We are able to keep the temperature under a predefined threshold..