What kinds of things would you want in the GNU OS?

Frank Mayhar frank at ladc.bull.com
Thu May 25 04:00:43 AEST 1989


In article <106326 at sun.Eng.Sun.COM> bitbug (James Buster) writes:
}What kinds of things should be in the GNU Kernel?

Oh boy!  Now you've asked for it!  :-)

}What kinds of features or design rationale should it use?
}For instance:
}
}File system:	SysV vs Berkeley? Something better?
}		Embedded file types? >32-bit file offsets?

Something better, but compatible, at least at some level.  How about
embedding B-tree indexed file structure in the file system?  (This
would let you do things like use strings to lookup records in a file,
even from the kernel.  Might also let you have sorted (*gasp*)
directories.)  Some sort of symbolic link idea might be nice.  Use
a global directory concept for maintaining subdirectories, to speed
directory searches.  And let mounted file systems span devices!

}Security:	ACLs? Get rid of root? Security monitors? Auditing?
}		Provably secure(A1)?

Better security is always a good thing.  Security's not my forte, so
I'll leave it alone.

}Scheduler:	Real-time support? Task-driven? Event driven?
}		Direct brain hookups:-)?

How about scheduling processes on a per-login basis, rather than
per-process.  I.e. a user has a certain quantum that is divided
between all the processes he starts.  (It should be configurable,
and maybe even adjustable on the fly by a privileged user.)  This
would keep one user from starting sixteen compiles and bringing a
system to its knees.

}Virtual Memory:	Should GNU run on non-VM machines? Algorithm ideas?
}		How general (map *everything* into VM space, like Multics)?
}		Shared libraries?

I like the SunOS virtual memory concept (minus the current crop of bugs, of
course).  If you're writing a Real Operating System, why worry about machines
that won't support virtual memory.  Hell, by the time Gnu is ready, non-VM
machines will probably be a thing of the past anyway.  Shared libraries
are good.  Shared instruction space (text?) is another good idea, that can
help save on memory requirements for often-used programs.

}Networking:	NFS? RFS? Something better?
}		Interfaces: Streams? TLI? Something better?
}		TCP/IP? OSI? SAA/SNA:-)?
}		RPC Services? What kind?

Something better.  But don't ask me what.  NFS is OK, but it has problems.
You would want to support TCP/IP, at least at first (maybe using the BSD
code), but OSI is probably the way to go.  SNA makes me gag.  (Actually,
all of IBM makes me gag. :-)

}Overall Design:	What nice ideas from other OSes could we use?
}		Multics? VMS? VM? DG/OS?
}		Fault tolerance?

See above.  A lot of these ideas come from the way a particular mainframe
operating system was designed.  An OS which is going the way of the Dodo,
unfortunately.  Name withheld to protect the guilty.

}How about this? Make everything a user process which serves
}a resource to a client. Resources include the CPU (scheduler),
}memory (VM), disk (file system), network (sockets, etc),
}serial lines (terminal handlers), etc. Each server determines the access
}method and security criteria for its service. Make no arbitrary policy
}decisions regarding a service! Don't like the VM server? Replace it! You
}could have a security monitor provide a security policy on behalf of
}your file system or IPC mechanisms. If you have no need for security,
}don't run the monitor.

Excellent idea!  Promotes modularity, and allows flexibility.  Almost a
plug-and-play operating system.  One problem, though:  there would have
to be some sort of privilege level system, so that the resource handlers
can do things like write other user's memory, directly access devices,
re-map memory, etc.  And you would have to provide at least minimal
functions in each module in the initial release.  Not everybody is
an OS developer.

That's my $2.95 worth.  Next?
-- 
Frank Mayhar  ..!uunet!ladcgw!frank (frank at ladc.bull.com)
              Bull HN Los Angeles Development Center
              5250 W. Century Blvd., LA, CA  90045  Phone:  (213) 216-6241



More information about the Comp.unix.wizards mailing list