1. A method for scheduling software task execution, the method comprising the steps of: accepting at least one high priority software task that has a specified start time; accepting at least one lower priority software task; determining a time remaining until the specified start time for the high priority software task; determining if the lower priority software task can complete execution within the time remaining that was determined; executing the lower priority software task only if it was determined to be able to complete execution within the time remaining; and executing the high priority software task at or very near the specified start time.