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

Chris Burrows chris at cfbsoftware.com
Tue Nov 6 11:48:12 CET 2018


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
> >




More information about the Oberon mailing list