1. A method of scheduling execution of a plurality of tasks by a processor, the processor having a processor memory, the processor being arranged to load into the processor memory, during execution of a current task, data for execution of a task that is scheduled for execution after the processor has completed the current task, the method comprising: executing by the processor a current task; scheduling a next task for execution by the processor; after scheduling the next task, determining whether there is a high priority task to be executed by the processor; and if there is a high priority task to be executed by the processor: determining whether the processor has begun loading data for execution of the next task into the processor memory; if the processor has not begun loading the data for execution of the next task into the processor memory, scheduling the high priority task, instead of the next task, for execution by the processor after the processor has completed the current task; and if the processor has begun loading the data for execution of the next task into the processor memory, maintaining the next task as scheduled for execution after the processor has completed the current task.