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
|