A computer system which permits deterministic and preemptive scheduling of
threads in a software application. In one embodiment, a scheduler is
utilized to schedule the threads in a queue. Once the threads are
scheduled, they are divided up into instruction slices each consisting of
a predetermined number of instructions. The scheduler executes each
instruction slice. An instruction counter is utilized to keep track of the
number of instructions executed. The thread is permitted to run the
instruction slice until the predetermined number of instructions has been
executed. Alternatively, the thread stops if it is blocked while waiting
for an input, for example. The next thread is then executed for the same
number of instructions. This process permits for the efficient debugging
of software which utilizes traditional cyclic debugging.
Een computersysteem dat het deterministische en preventieve plannen van draden in een softwaretoepassing toelaat. In één belichaming, wordt een planner gebruikt om de draden in een rij te plannen. Zodra de draden worden gepland, zijn zij omhoog verdeeld in instructieplakken elk die uit een vooraf bepaald aantal instructies bestaat. De planner voert elke instructieplak uit. Een instructieteller wordt gebruikt om spoor van het aantal uitgevoerde instructies te houden. De draad wordt toegelaten om de instructieplak in werking te stellen tot het vooraf bepaalde aantal instructies is uitgevoerd. Alternatief, houdt op de draad als het terwijl het wachten op een input, bijvoorbeeld wordt geblokkeerd. De volgende draad wordt dan uitgevoerd voor het zelfde aantal instructies. Dit proces laat voor het efficiënte zuiveren van software toe die het traditionele cyclische zuiveren gebruikt.