[Oberon] a module a page (keeps the mind sane)?

Frans-Pieter Vonck fp at vonck.nl
Tue Nov 6 17:45:42 CET 2018


Thanks,
F.P.

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


More information about the Oberon mailing list