Bases [far34]

Gary D. Duzan duzan@udel.edu
Thu, 20 May 93 20:09:55 -0400


In Message <9305172238.AA23280@clipper.ens.fr> ,
   Francois-Rene Rideau <rideau@clipper.ens.fr> wrote:

=> Well, here is I think the main points we MUST agree before we can
=>begin coding what we call MOOSE (but we already can begin coding
=>IO drivers and suches).
=>
   Not necessarily, if drivers are implemented like normal objects.

=>SPECS
=>~~~~~
=>
=>agreements
=>~~~~~~~~~~
=>a) MOOSE is "OO" (see Unknown, a))

   Yeah, whatever that means.

=>b) we'll develop a generic UI (user interface), that will
=>specialize/extend into a TUI (Text UI) and a GUI (Graphical).

   Fair enough.

=>Unknown
=>~~~~~~~
=>
=>Questions:
=>@) What will we do that will be the same as or different from
=>other systems, currently existing or being developped ?

   I think it is fair to say that there will be no single feature
that won't have been implemented in some other system. The only
real innovation I think we can expect is in our particular
combination of features and overall system structure.

=>a) What does OO means for an OS ; i.e. what do we mean by "object" ?

   An object is a combination of state, code, and interface. Threads
execute the code, and there may be more that one thread executing on
one or more method. Objects are medium to large-sized from the system
level, though larger objects may manage smaller objects, which can
be addressed like the larger ones.

=>b) How light will our basic objects/threads/tasks/processes be ?

   As light as they can be without giving up inter-object
protection.

=>c) What kind of typing/checking will the kernel/base system include,
=>if any ?

   As I've said in the past, types are a mess. We might want to
attach type information with each call and have the called object
(or the kernel) check the information. We could limit passed
types to a set of standard types, building up more complex ones
from there, or maybe have a complex type server. This adds a lot
of additional overhead to building a message. Alternatively, we
could provide a system for callers to determine the type of
object method interfaces and rely on sanity checks in the
destination object. I would suggest the latter, since for the
most part data is data, and nonsense calls would generate
nonsense results, and sanity checks could handle most devistating
cases.

=>d) Must we include a standard LLL in the base system

   No. It might be a good idea on some systems, and there should
be nothing hindering its implementation, but high-level languages
should suffice for the most part. I don't believe the primary
target systems require LLL support.

=>e) Must we prepare for future distributedness (i.e. refuse solutions
=>that won't adapt to a distributed OS).

   Yes. The more flexibility the better.

=>FIRST IMPLEMENTATION
=>~~~~~~~~~~~~~~~~~~~~
=>agreements
=>~~~~~~~~~
=>a) Moose will run on 386 PC compatible machines.
=>
   The 386 version, yeah. :-) I'm thinking that I may get a
SPARC Classic or something and build my code there. The further
I can get from DOS machines, the better.

=>Unknown
=>~~~~~~~
=>
=>Questions:
=>
=>
=>a) Kernel Requirements:
=> - That's just a policy question, and there is a priori no rational
=> arguments about it, but what machines we work on.

   Whatever we can't implement in objects.

=>b) Object ID's.

   A large binary number, possibly arranged to allow addressing
smaller objects within system objects.

=>c) Objects Classes.

   I prefer the Ellie-object model of grouping objects by interface
rather than by inheritance classes. An object's class is its
interface.

=>Solutions proposed:
=>Fare:
=>a) a 386 with extended memory (even 384KB suffice for just booting
=>with a console ?).

   We should focus on making it small, but I don't think it
makes much sense trying to predict the size of the final product
before it is started.

=>b) use DT:Seg identifiers, or DT:Seg:Offset when needed. (when needed,
=>the offset may be considered as an argument to DT:Seg as a function
=>represented by the array of its values).

   Non-portable. The 386 implementation may map object ids to
segment, though.

=>c)  [ ... stuff about object disk images ... ]

   Object code is straightforward enough. I've not been completely
sold on the idea of persistant object state, but it is a good
possibility.  If inter-object references aren't tied to hardware
addresses, restoring them would be easier, assuming the kernel can
rebuild its list of objects.

=>Please state your mind.

   You really don't want to know what is in there. :-)

=>Please recall forgotten points.

   There are plenty of things I would rather forget. :-)

=>Please add your comments.

   _The Simpsons_ is a cool show. :-)

=>Please correct mistype/broken english, or mistakes.

   All English is broken. :-)

                                        Gary Duzan
                                        Time  Lord
                                    Third Regeneration
                         Humble Practitioner of the Computer Arts