OS Hilfe
-
bluecode schrieb:
Christoph K. schrieb:
Wie will der ein Betriebssystem schreiben bei den Fragen?
Jeder fängt mal klein an (ausser TGGC, der war schon immer Gott)
Oder gehst du so immer an neue Themengebiete ran: Ich hab keine Ahnung, also lass ichs lieber?Nein, aber ich würde kein Projekt in Angriff nehmen, das meinen Wissenshorizont bei weitem übersteigt, ohne mein Wissen den Anforderungen anzupassen.
In diesem Fall würde das bedeuten sehr lange zu recherchieren und nicht einen Kernel aus einem Tutorial abzutippen und danach dumme Fragen in einem Forum zu stellen, die nur zeigen, dass man unfähig ist google zu verwenden und keine Ahnung von der Thematik hat.
Ich habe mich selber im Zuge einer Fachbereicharbeit in das Thema Betriebsysteme eingelesen, unter anderen mit Werken wie Moderne Betriebssystem (ast) oder anderen "Standardwerken". Nach 10 Büchern, also über 10.000 Seiten traue ich mich zu behaupten, einen guten Überblick über die Thematik zu haben. Wenn man nun aber z.B. ein File System implementieren will, werden meiner Ansicht nach weitere 10.000 notwendig sein, selbiges bei Speicherverwaltung, Threadmanagment, ... .
Es wird nicht ausreichen, keine Ahnung von dem Thema zu haben und Fragen wie die obrigen in einem Forum zu stellen, das ist der Punkt.
-
Christoph K. schrieb:
Nein, aber ich würde kein Projekt in Angriff nehmen, das meinen Wissenshorizont bei weitem übersteigt, ohne mein Wissen den Anforderungen anzupassen.
Ich habe selbst mal so angefangen. Ihm wird mit Sicherheit klar sein, dass er nach 2 Monaten noch keine gui hat und wie gesagt jeder fängt mal klein
Christoph K. schrieb:
Ich habe mich selber im Zuge einer Fachbereicharbeit in das Thema Betriebsysteme eingelesen, unter anderen mit Werken wie Moderne Betriebssystem (ast) oder anderen "Standardwerken". Nach 10 Büchern, also über 10.000 Seiten traue ich mich zu behaupten, einen guten Überblick über die Thematik zu haben. Wenn man nun aber z.B. ein File System implementieren will, werden meiner Ansicht nach weitere 10.000 notwendig sein, selbiges bei Speicherverwaltung, Threadmanagment, ... .
Bitte folgendes nicht zu persönlich nehmen:
ROFLMAO, sry... aber des klingt ja nach nem richtigen Theoretiker. Weißt wahrscheinlich dann auswendig wie man mit den "sicheren Zuständen" (oder so), Deadlocks verhindert :p Aber mal ehrlich, wer braucht so nen Schmarn schon beim ProgrammierenLesen können ist nicht immer alles. Und die tollsten Theorien nutzen dir beim OSDev sowieso rel. wenig...
Nur so aus Interesse: Progs du nen Kernel, wenn ja, Homepage/Links?
Für meine Facharbeit (Mathe) hat das Internet und ein bisschen Zeit ausgereichtund es waren trotzdem genug Punkte :p Was war dein FA-Thema und darf man mal lesen?
Christoph K. schrieb:
Es wird nicht ausreichen, keine Ahnung von dem Thema zu haben und Fragen wie die obrigen in einem Forum zu stellen, das ist der Punkt.
Immer locker bleiben
Irgendwann fängt jeder mal ein neues thematisches Gebiet an und ich finde es dann beim Programmieren eigentlich immer besser ein bisschen Source zu produzieren bzw. zu fragen warum irgendwas nicht funktioniert. Ich könnt mich net durch 10k Seiten durchquälen ohne irgendwas praktisches zu machen. Da bleibt der Spass dann auf der Strecke und darum sind die meisten ja schließlich da.
-
bluecode schrieb:
Christoph K. schrieb:
Ich habe mich selber im Zuge einer Fachbereicharbeit in das Thema Betriebsysteme eingelesen, unter anderen mit Werken wie Moderne Betriebssystem (ast) oder anderen "Standardwerken". Nach 10 Büchern, also über 10.000 Seiten traue ich mich zu behaupten, einen guten Überblick über die Thematik zu haben. Wenn man nun aber z.B. ein File System implementieren will, werden meiner Ansicht nach weitere 10.000 notwendig sein, selbiges bei Speicherverwaltung, Threadmanagment, ... .
ROFLMAO, sry... aber des klingt ja nach nem richtigen Theoretiker. Weißt wahrscheinlich dann auswendig wie man mit den "sicheren Zuständen" (oder so), Deadlocks verhindert :p Aber mal ehrlich, wer braucht so nen Schmarn schon beim Programmieren
jeder dessen programm sich total komisch verhält, nach unverhersehbarer zeit abstürzt, zufällige ergebnisse ausspuckt usw...
-
net schrieb:
jeder dessen programm sich total komisch verhält, nach unverhersehbarer zeit abstürzt, zufällige ergebnisse ausspuckt usw...
Klar, der sollte wissen was Deadlocks sind und wo/wie sie entstehen können, aber das war nicht mit "sicheren Zuständen" gemeint. Das is ne spezielle Technik, welche in dem Buch "moderne Betriebssysteme" von ast erwähnt wird, und welche es theoretisch unmöglich macht Deadlocks überhaupt zu produzieren. Da jede Aktion einer Anwendung, welche mit Sicherheit zum Deadlock führt, verhindert (vorausgesetzt man hat dann auch den Scheduler, der das dann auch noch richtig umsetzt), Aber das geht logischerweise auf die Performance.
-
bluecode schrieb:
net schrieb:
jeder dessen programm sich total komisch verhält, nach unverhersehbarer zeit abstürzt, zufällige ergebnisse ausspuckt usw...
Klar, der sollte wissen was Deadlocks sind und wo/wie sie entstehen können, aber das war nicht mit "sicheren Zuständen" gemeint. Das is ne spezielle Technik, welche in dem Buch "moderne Betriebssysteme" von ast erwähnt wird, und welche es theoretisch unmöglich macht Deadlocks überhaupt zu produzieren.
um sowas gleich aus dem wege zu gehen baut man besser alles vollständig mit lock-free algorithmen. dafür braucht man atomare 'read-modify-write' instructions. hat der prozessor die nicht, dann braucht man nur einen lock um sich eine solche zu simulieren. viele betriebsysteme machen's leider anders (windows z.b.) und haben dann mit so fiesen sachen wie 'priority inversion' zu kämpfen weil tasks aufeinander warten müssen (sowas muss dann mit ausgeklügelten verfahren wieder ausgebügelt werden)...
-
Langsam wirds OT
Du kannst mit "read-modify-write" nicht alle Deadlocks vermeiden. Einfaches vllt. unrealistisches Beispiel: Wenn zwei Apps die gleiche Datei öffnen und die eine einen Lock von 0 bis byte x hat, die andere von x bis ende. Beide Apps wollen nun auch noch auf den jeweils anderen Teil zugreifen. Das geht wohl für beide Apps nicht -> Deadlock. Sowas zu verweiden ist a bisl schwieriger als die atomic operations der cpu.
-
bluecode schrieb:
Wenn zwei Apps die gleiche Datei öffnen und die eine einen Lock von 0 bis byte x hat, die andere von x bis ende. Beide Apps wollen nun auch noch auf den jeweils anderen Teil zugreifen. Das geht wohl für beide Apps nicht -> Deadlock. Sowas zu verweiden ist a bisl schwieriger als die atomic operations der cpu.
in einem lock-free system gibts keine deadlocks. wenn, wie in deinem beispiel, der zugriff auf teile einer datei nicht möglich ist, dann wird der abgebrochen (mit fehlercode z.b.). die tasks bleiben niemals hängen weil auf ressourcen nicht gewartet wird.
-
Es wird aber wohl eher kein OS ohne locks geben, nehm ich jetzt einfach mal an
Mir fällt aber leider grad kein Beispiel ein, wo es wirklich nicht ohne geht bzw. es vom Standpunkt des Programmierers eigentlich sinnvoll ist locks zu nehmen...
-
bluecode schrieb:
Mir fällt aber leider grad kein Beispiel ein, wo es wirklich nicht ohne geht bzw. es vom Standpunkt des Programmierers eigentlich sinnvoll ist locks zu nehmen...
guckst du:
http://www.nwcpp.org/Downloads/2005/Lock-Free.pdf
http://www.uni-koblenz.de/~zoebel/ws2004/Synchronisierung.pdf
http://www.cs.cmu.edu/~410/lectures/L31_LockFree.pdf
usw. das internet ist (mal wieder) voll davon
-
Bitte folgendes nicht zu persönlich nehmen:
ROFLMAO, sry... aber des klingt ja nach nem richtigen Theoretiker. Weißt wahrscheinlich dann auswendig wie man mit den "sicheren Zuständen" (oder so), Deadlocks verhindert :p Aber mal ehrlich, wer braucht so nen Schmarn schon beim ProgrammierenLesen können ist nicht immer alles. Und die tollsten Theorien nutzen dir beim OSDev sowieso rel. wenig...
Stimmt ich liebe die Theorie. Für mich stellt sie die Basis dar.
Wie soll ich eine Schleife schreiben wenn ich die Theorie, die Syntax, nicht kenne?
Woher soll ich wissen welcher Sortier-Algorithmus für meinen Container am schnellsten (oder wie es hier üblich ist: performantesten) ist, wenn ich die Theorie dahinter nicht kenne?
Wie soll ich ein Betriebsystem planen, wenn ich mir über die theoretische Funktionsweise nicht bewusst bin?
Und meine Vorgehensweise ist zunächst wirklich immer theoretisch: ich lese mich ein, sammle Informationen, plane mein Programm um es einfach auszudrücken. Was daran verwerflich sein soll würde mich echt interessieren, oder stehst du auf nächtelange Debug-Sessions?