[Mono-devel-list] Operating System in C# Project

Kornél Pál kornelpal at hotmail.com
Sat May 21 04:17:54 EDT 2005


This discussion seems to be a play with words.:)

>From: "Richard Matthias" <richardmatthias at gmail.com>
>They have a C# compiler that creates native code directly which helps of
>course.

If this is true then the operating system will not be implemented in managed
code it will be only in C#. An operating system can be written in BASIC as
well if you have good compiler (with some extra feautes:).

>From: "Elliot Paquette" <elbaami at gmail.com>
>At some level there will be some unmanaged code, sure, but I think
>that the environment which you just described, Kornél, could be
>considered an integral part of an operating system, if not for
>simplicity's sake the operating system itself.

.NET Framework is said to be an integral part of Windows Server 2003
altought I think it is a part and not an integral part of it.

But I'm sure that .NET Framework will be an itegral part of Windows Longhorn
as it is said to have functionality that will be available through managed
code only.

>From: "Elliot Paquette" <elbaami at gmail.com>
>If you add the extra contraint that only IL code will be executed (as in
>Singularity), then the unmanaged requirements are further reduced.

But saying that an operating system can be implemented using managed code
only in a nonsense.

Of course the answer depends on what do you mean on managed code. Usually it
means something that is based on the CLI and is in IL code. A less extensive
interpretation could be if you mean managed code on something that uses the
garbage collector. But in both situations the operating system cannot be
implemented in managed code as neither CLI nor GC can be based on itself.

The lowest level where the CLI can be implemented is the kernel. As a result
the kernel itself and the CLI cannot be based on themselves so they cannot
be in managed code.

And depends on what do you mean on an operating system. If you don't
consider the kernel to be part of the operating system then as all the user
mode code can be in managed code you can say that the operating system is
written entirely in managed code.

But the kernel is an important part of the operating system, for example if
you use an inefficient kernel the whole operating system will be
inefficient.

In the world of Unix/Linux it's normal that the kernel and other componets
are from different vendors but this doesn't mean that any of these comonets
alone are operating systems, this means that the system built from this
components is the operating system.

An operating system is a complex system that has the ability to run on a
computer without any other systems. This means that anything that is
required to run integral parts of the operating system has to be integral
part as well and if it's removed the operating system is not an operating
system anymore.

>From: "Richard Matthias" <richardmatthias at gmail.com>
>...just as skeptical as Kornél manages to take up
>pages and pages of posts with their complete failure to understand how
>an OS written in C# could be possible.

I am not sceptical. I belive and know that an operating system can be
written in C# as it is a language. I only said (because I know) that it
cannot be implemented entirely in managed code as it requires a CLI that
cannot be implemented in managed code. As of the CLI has to be part of the
operating system if you want to run it the operating system itself cannot be
implemented entirely in managed code even if it's only unmanaged part is the
CLI.

As a conclusion an operating system can be implemented entirely in managed
code if and only if the native code that the underlaying hardware
understands and can execute is IL in other words when the CLI is implemented
at hardware level.

Kornél




More information about the Mono-devel-list mailing list