Copyright © 2001-2024 All rights reserved. Woodgrove Digital Engineering P⁄L. Last revised: 23rd July 2024
CREDITS
LINKS
Home

Multitasking

I developed a small multitasking executive for my work with microprocessors in the early 1980s. That executive enabled tasks to relinquish control, allowing the next in line to take control. There was no interrupting of one task by another and no prioritorising of one task over another. Hence there was no need for mutexes, semaphores, and what-have-you. A task could be interrupted by an interrupt, but the interrupt procedures were designed so that they could not disrupt the operation of the tasks. For example, there would be an interrupt task that received input from a serial device. That interrupt would add a byte to a circular buffer (so long as the task had taken the byte that had been there, which would always be the case), then advance the pointer allowing the task to obtain that new byte.

There was no need for a critical task to interrupt a less critical task. Instead, care was taken to ensure that no task would hog the processor. So long as the microprocessor had the speed handle the job and each task relinquished control of the microprocessor when it had completed its work (and not looping waiting for some state to change whilst in control), then there was no need for a task to interrupt another. If the microprocessor was not fast enough, then it was the job of the programmer to improve the code so that it would be.

The earliest implementation of the “Movement Controller” was for Mobil Oil in Yarraville, Victoria. This was back in 1985, and it was implemented on an IBM-XT personal computer, running MS-DOS. So I copied the executive that I had written for microprocessors to the personal computer (converting the 8085 code into 8086). This proved quite adequate. The proof was its success in many similar applications.

Then, I was finally dragged, kicking and screaming, into the so-called world of graphical user interfaces, in 1999. I say “so-called” because my MS-DOS package already was very graphical, it just did not use a mouse nor did it allow multiple windows to be open (in the wake of converting to GUI, I found that all regular operators tended to use the keyboard, rather than the mouse). The first stage was porting the software to Linux, and implementing the project for Joyce Foam in Sydney and then having to port it to Microsoft Windows at the behest of New Limited. In both the Linux and Windows environments, I continued with the underlying philosphy of my original multitasking executive, using only a single mutex, which the running task would hold. For the reasons noted above, this continued to work well in the GUI environment as well.

Back to top