# Java Betriebssystem



## zipwoo (5. Okt 2005)

Hallo Leute,
ich muss in der Uni ein Betriebssytem mit einer belibigen Programmiersprache implementiern.
Ich würde dies gern mit Java machen, konnte aber kaum hilfreiche Infos finden.
Hat vielleicht schonmal jemand von euch ein solches Projekt durchgeführt oder kann mir irgendwelche Tips geben.
Welche JVM könnte man dazu verwenden?
Gibt es einen geeigneten PC-Emulator zum testen?
Hat man mit java möglichkeiten in die Speicherverwaltung, einzugreifen?


mfg


----------



## messi (5. Okt 2005)

Ist das ein Witz? Wenn man ein BS schreiben soll, kommt man nicht mit solchen Fragen. Allein das nötige Vorwissen zu diesem Thema schließt schon Java aus. Bist du sicher, dass du im richtigen Hörsaal saßt?


----------



## m@nu (5. Okt 2005)

hehe, nimmst mir die worte aus dem mund messi :lol:


----------



## Sky (5. Okt 2005)

messi hat gesagt.:
			
		

> Ist das ein Witz? Wenn man ein BS schreiben soll, kommt man nicht mit solchen Fragen. Allein das nötige Vorwissen zu diesem Thema schließt schon Java aus. Bist du sicher, dass du im richtigen Hörsaal saßt?





			
				m@nu hat gesagt.:
			
		

> hehe, nimmst mir die worte aus dem mund messi :lol:



Habt ihr euch informiert !? Ohne, dass ich mich weiter informiert habe, so kann ich mich noch an den Ansatz von "JOS" erinnern: http://sourceforge.net/projects/jos/
Es gibt sicherlich auch noch weitere Beispiele...


----------



## Mag1c (5. Okt 2005)

Moin,



			
				Sky hat gesagt.:
			
		

> Habt ihr euch informiert !? Ohne, dass ich mich weiter informiert habe, so kann ich mich noch an den Ansatz von "JOS" erinnern: http://sourceforge.net/projects/jos/
> Es gibt sicherlich auch noch weitere Beispiele...



es bestreitet ja keiner, daß sowas machbar ist. Nur die Art der Fragen lassen doch Zweifel aufkommen, ob der OP sich über den Umfang dieser Aufgabe im Klaren ist.

Wenn man die Aufgabe ein wenig umdefiniert, ist da sicher eine ganz nette Belegaufgabe realisierbar. Je nachdem, wo man den Schwerpunkt setzen will, kann man z.B. ein JTextArea als Konsole nutzen oder ein JFrame für den Desktop. Man könnte Befehle für die Disk-Verwaltung realisieren und Java-Programme direkt von der eigenen "Befehlszeile" starten.

Gruß
Mag1c


----------



## TRunKX (5. Okt 2005)

... Jetzt mal ganz dumm in den Wald geschrien:

Also wenn er schon fragt welche Java VM er dazu nutzen könnte dann wäre doch in dem Moment die VM das Betriebssystem auf dem eine Java Anwendung läuft...

Und wenn man ein "echtes" Java Betriebssystem schreiben wollte brauchte man eine Java Hardware VM  also eine BlackBox die Java versteht oder? Denn ein CPP gecodetes  OS ist ja auch nur eine aus CPP in Maschinensprache umgesetzte Codezeile die dann auf der Hardware lauffähig ist oder?

Soll heissen wenn ich ein Bauelement habe das ich wie eine VM ansprechen kann das aber die Möglichkeit bietet den Java code in Maschinencode umzusetzen dann könnte man damit auch ein OS schreiben.


----------



## AlArenal (5. Okt 2005)

Es gibt Prozessoren, die Java Bytecode ausführen können, ich denke aber nicht, dass er ein Hardware-Projekt umsetzen soll. Im Grunde ist die VM ja ein Betriebssystem. Wir wissen ja auch nicht was für Spezifikationen sein BS erfüllen muss.

Ich kann mir nicht so recht vorstellen, dass ein Prof seinen Studis mal eben die Aufgabe stellt ein eigenes DOS oder Windows zu entwickeln, denn das ist nicht mal eben in zwei Wochen gemacht...


----------



## TRunKX (5. Okt 2005)

Naja ne Grundsätzliche Struktur um z.B.: Daten zu sichten ist in 3 Tagen möglich.... 

Was die Prozessoren angeht die den Bytecode verarbeiten können da sieht das so aus das er die garantiert nicht hat!

Achja und er muss ja nichts in Hardware umsetzen er würde nur gerne mit Java arbeiten und halt nicht mt C++ wie die Studies nunmal sind!


----------



## zipwoo (5. Okt 2005)

Mir wär auch lieber das wäre ein Witz. Ist es aber nicht. 
Ihr könnt euch ja gerne die Problemstellung ansehen: http://www.cs.uni-salzburg.at/~ck/teaching/OS-Winter-2005/
Leider könnt ihr mir anscheinend auch nicht weiterhelfen, trotzdem danke.

mfg


----------



## AlArenal (5. Okt 2005)

Das Ganze ist auch in Java lösbar. Es geht darum die Grundlagen von Betriebssystemen wie von Tanenbaum beschrieben zu implementieren.

Das bedeutet ja nicht, dass man es booten können muss, d.h. es kann auch on-top auf einem vorhandenen System laufen. Wie eine VM auch, würde es die Grundlagen implementieren, indem es Abstraktionen dessen schafft, was die jeweilige Programmiersprache und das darunterliegende System an Möglichkeiten mitbringen.

Da ich zu meiner Schande gestehen muss keinen Tanenbaum im Regal stehen zu haben, da ich kein Systeminformatiker bin, kann ich da gerade nicht mit Beispielen dienen. Da es in Java keine Möglichkeit gibt eine spzifische Menge physischen Speichers dynamisch zu belegen, ist beim Speichermanagement etwas mehr Abstraktion notwendig. 

Die Aufgabe als solches ist aber lösbar, egal ob in C, C++, Java oder Forth


----------



## AlArenal (5. Okt 2005)

Darum ja auch 





> Teams of 2-3 students will design and implement *(in user space)* their own operating system in a programming language of their choice.



Weitere Sachen, die man sich ansehen sollte:

http://www.gustavus.edu/+max/java-os-courses.html
http://sourceforge.net/projects/jos/ (s.o.)
http://he-cda.wiley.com/WileyCDA/HigherEdTitle/productCd-0471489050,courseCd-CX9000.html
http://www.ontko.com/moss/


----------



## Mag1c (5. Okt 2005)

Ja, denke auch, daß die Aufgabe auch in Java lösbar ist. Man darf nur etliche Features von Java (z.B. Threads) nicht nutzen, da das an der Aufgabe vorbei ginge (soll man ja selber realisieren, so mit eigenem Scheduler und so). Ferner müsste mal genauer definiert werden, was mit *"... each operating system will be demonstrated to execute a non-trivial concurrent application."* genau gemeint ist. Nicht daß hier schon das KO-Kriterium für Java daherkommt.

Gruß
Mag1c


----------



## AlArenal (5. Okt 2005)

Nun, das wäre dann ebenso eine Anwendung, die einzig das nutzt, was das "Betriebssystem" (also die eigenen Klassen und deren Instanzen) zur Verfügung stellt und das sollte ja laut Aufgabenstellung reichen, um ne einfache Anwendung zu entwickeln (und diese zu starten  ) die über die eigenen OS-Klamotten Daten von der Tastatur entgegennnimmt und in einer Datei speichert, bzw. aus ihr ausliest und anzeigt.


----------

