|
The Perfection of the OS and the Purpose of Generic
Design
Posted By: Beholder, March 8th, 1999
Is a perfect OS possible? In a word: No. The reason some of us
take on the challenge of designing, and implementing a new OS, is to try
to make something that is currently not perfect, into something that IS
perfect. Perfect, however, is a relative measurement. A perfect OS
would need to be designed from the ground up, knowing the user (notice
no pluralization), and the hardware it will be running on. It would have
to know both of these elements quite intimately. This as, we can
guess, would not be feasible, or of much use to anyone but the target user.
The whole point of designing an operating SYSTEM, is to create something
that is usable by a group of people. The more generic the design,
the larger the possible group can be. This is why one of the principles
of UniOS, is a simple, generic design.
Making something that is generic and simple is not an easy task. Imagine
your target market being single and multi-purpose servers, gaming machines,
office productivity machines, and industrial control machines. Each of
these types of computing tasks are very different, and therefore require
different methods as to how the computer processes. Some would say,
that changing how a computer processes, usually requires a change in the
OS, and probably a change in the software design. This is a correct
assumption about our current set of operating systems, because they were
designed to work that way. No OS is truly generic enough to change HOW
it processes. Processing is not just the number crunching (that is
pretty much optimized for any platform), but it's how the system functions
as a whole. For example, things like task scheduling, memory swapping,
inter-process communications, and I/O. All of these elements, and
how they function, comprise the systems processing method.
Adaptive Processing will be a keystone to the design of UniOS.
Each element of the system will be designed with platform independence
in mind, and therefore must be generic enough to be able to recompile on
the target system, with the processing needs of the target in mind.
In essence, a program(object) should be more of a description of how it
should work, rather than the nitty-gritty details. The only way for
an Operating System to make any headway into a saturated market is to design
it to do anything, do it well, and do it on all kinds of machine architectures.
How this is to come about is still not decided. If UniOS is to have
a kernel, then it must be able to support multiple kernel types, to allow
for this level of flexibility. If it is to be a simple collection of code
objects in memory, then they must have multiple ways of processing programmed
in.
binEng's Reply to this document
As you yourself mention, perfection is relative. Not only that; often
perfection even is subjective. But no matter how personal the judgement
of perfection is, there is one thing that is objective; that of the object's
properties related to the individual's idea of perfection. We can be assured
that the idea of perfection differs from person to person. This leads to
the conclusion that no single piece of software can ever be perfect, if
we define (universally) perfect as perfect for every person. So, to maximize
the "perfection rating", the object - software system in this case - needs
to be adaptive. This is just along the lines with what you wrote. However,
you makes it sound somewhat misleading, the point is not to make the OS
so generic it can be used for every purpose and by everyone, to get as
large user-base as possible. Windows does that. Therein lies not the solution,
as MS painfully clearly has shown with their costly (but widely used) experiments.
The system should not be basic to be able to cover a lot of uses. That
is the wrong way to go, and only creates the "master of none" syndrome.
Without specialization, such systems become pointless. Without an edge,
they become blunt. A different approach is preferred. The system shouldn't
delibrately describe generic ways - it should describe /no ways at all/,
but build a consistent and logic - almost axiomatic - system. In that way,
there is nothing to stop specialization of single systems in any desired
direction. That includes a generic system, if that's what's wanted.
Of course, that's an exaggeration and simplification. Designing something
for nothingness - or rather /leave out/ parts of the design, isn't
something that lets itself be done just like that. The answer is more
complex.
The answer is abstraction, platform-independence and consistence in
the design (no context-specific compromises). To get sufficient abstraction
and consistence, object-orientation should prove useful, if not necessary.
This is what I try to do with mOS. Simple rules, context-free features,
yet capable of advanced tasks. |