<div dir="ltr"><div dir="ltr">I have found a copy here: <a href="http://norayr.am/papers/WirthTasksVersusThreads.pdf">http://norayr.am/papers/WirthTasksVersusThreads.pdf</a> </div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 6, 2018 at 5:00 AM Frans-Pieter Vonck <<a href="mailto:fp@vonck.nl">fp@vonck.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Chris,<br>
<br>
do you have by any chance a link for the article "Tasks versus Threads <br>
[..]"<br>
I cannot find it on the net.<br>
<br>
 From Wirth: "Embedded Systems and Real-Time Programming"<br>
<br>
" The next decision was to eliminate the RT-OS, as it seemed possible<br>
to  do  essentially  without  concurrent  processes  in  the  form  of  <br>
threads.  The  third<br>
decision was to program the entire software in Oberon [2], which is very <br>
suitable for<br>
programming close to the hardware."<br>
So he probably used Tasks vs Threads concept for the helicopter.<br>
<br>
> "Tasks, called commands, are a conceptual pillar of the Oberon<br>
> operating environment. Making them interruptible adds significant<br>
> power to the concept<br>
In the oberon loop the commands are already interrupted by input events: <br>
keyboard, mouse, network communication. Does he mean, tat a task can <br>
interrupt another task?<br>
Explanation must be found in his article.<br>
<br>
Greets,<br>
F.P.<br>
<br>
<br>
<br>
Chris Burrows schreef op 2018-11-06 11:48:<br>
> I recommend that you read Wirth's 1996 paper titled "Tasks versus<br>
> Threads: An Alternative Multiprocessing Paradigm". The relative merits<br>
> of tasks, processes, coroutines and threads are discussed.<br>
> <br>
> "An alternative to threads is presented as a paradigm for<br>
> single-processor multi-tasking systems. It avoids complex and hidden<br>
> mechanisms for process scheduling, and is therefore particularly<br>
> suitable for realtime systems requiring fast response times, and for<br>
> small systems in general."<br>
> <br>
> "Tasks, called commands, are a conceptual pillar of the Oberon<br>
> operating environment. Making them interruptible adds significant<br>
> power to the concept and is shown to require surprisingly few changes<br>
> and additions to the existing system, hence retaining its basic<br>
> compactness and efficiency."<br>
> <br>
> An implementation of these ideas (called System7) on Native Oberon can<br>
> be downloaded from the ETH Oberon site:<br>
> <br>
> <a href="ftp://ftp.ethoberon.ethz.ch" rel="noreferrer" target="_blank">ftp://ftp.ethoberon.ethz.ch</a><br>
> <br>
> by following the path:<br>
> <br>
> ETHOberon/Contrib/System7/<br>
> <br>
> Now that interrupts are working on Project Oberon 2013 it would be an<br>
> interesting exercise to try out these concepts there as well,<br>
> <br>
> Regards,<br>
> Chris<br>
> <br>
> Chris Burrows<br>
> CFB Software<br>
> <a href="http://www.astrobe.com/RISC5" rel="noreferrer" target="_blank">http://www.astrobe.com/RISC5</a><br>
> <br>
>> -----Original Message-----<br>
>> From: Oberon [mailto:<a href="mailto:oberon-bounces@lists.inf.ethz.ch" target="_blank">oberon-bounces@lists.inf.ethz.ch</a>] On Behalf Of<br>
>> Frans-Pieter Vonck<br>
>> Sent: Tuesday, 6 November 2018 6:39 PM<br>
>> To: Jörg Straube<br>
>> Cc: ETH Oberon and related systems; <a href="mailto:paulreed@paddedcell.com" target="_blank">paulreed@paddedcell.com</a><br>
>> Subject: Re: [Oberon] a module a page (keeps the mind sane)?<br>
>> <br>
>> Hi J rg,<br>
>> <br>
>> I saw the coroutine module is not yet written for project oberon.<br>
>> But that does not keep me from trying out the concept of cooperatieve<br>
>> multitasking.<br>
>> I will look into that,<br>
>> <br>
>> Thanks.<br>
>> F.P.<br>
>> <br>
>> J rg Straube schreef op 2018-11-05 23:22:<br>
>> > F.P.<br>
>> ><br>
>> > Installing tasks in the Oberon loop is THE way to enable multi<br>
>> tasking<br>
>> > in Oberon.<br>
>> ><br>
>> > T := Oberon.NewTask(myHandler, 1000);<br>
>> > Oberon.Install(T);<br>
>> ><br>
>> > Every 1000 ms the procedure  myHandler  will be called.<br>
>> ><br>
>> > Another way to have cooperative multitasking is to implement module<br>
>> >  Coroutines .<br>
>> ><br>
>> > br<br>
>> > J rg<br>
>> ><br>
> <br>
> <br>
> --<br>
> <a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related <br>
> systems<br>
> <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div>