1. A scheduling method for a data processing system comprising at least one physical CPU, and one or more virtual machines each assigned to one or more virtual CPUs, the method comprising: assigning a scheduling priority P to each of said virtual CPUs in accordance with a waiting time Tw associated with each of said virtual CPUs, wherein said waiting time Tw reflects the time for transition from ready to running state and the selection of at least one of said virtual CPUs is performed based on the scheduling priority P; a first scheduling step in which one of said virtual machines is elected to run on said physical CPU; a second scheduling step in which at least one of the virtual CPUs assigned to the elected virtual machine is elected to run on said physical CPU, wherein the second scheduling step is performed on said physical CPU, and wherein the election is performed based on the scheduling priority P and wherein said second scheduling step comprises selecting said at least one of said virtual CPUs based on a waiting time Tw associated with each of said virtual CPUs, wherein said waiting time reflects the time for transition from ready to running state; and selecting the virtual CPU associated with the highest scheduling priority P calculated in accordance with the following formula: 
 P=Tw+Bm+Bl wherein Bm=predetermined interrupt masking bonus Bl=predetermined locality bonus.