Hallo,
Was denkst Du warum es all diese tollen Projekt-Management-Tools gibt? Ich selber benutze die zwar nicht, weil ich bisher immer mit einer sauberen Text-Beschreibung ausgekommen bin, aber die haben durchaus ihre Daseinsberechtigung.
Grüße
Erik
Die Pages landen ziemlich "spät" bis gar nicht im Frei-Pool. Die sind auch gar nicht das Problem, sondern das eine andere CPU auf Page A zugreift, da es so im TLB steht, aber inzwischen Page B an der virtuellen Adresse steht.Richtig, genau das ist das Problem. Sorry, ich hatte mich in die physischen Pages verrannt. Du darfst den virtuellen Bereich erst dann als frei markieren wenn dieser sicher aus allen TLBs gelöscht ist! Erst danach ist es sicher das dieser virtuelle Bereich für was anderes benutzt wird.
Richtig, an Erfahrung mangelt es mir, besonders was das Programmieren von Anwendungen betrifft. Meine Programmiererfahrung beschränkt sich leider nur auf das OS Programmieren.Es wurde hier ja schon mehrmals geschrieben, OS-Dev ist wirklich nicht der ideale Bereich um allgemeine Programmier-Erfahrung zu sammeln.
Am Bsp. einer Deadlock wüsste ich nicht wie ich zur Laufzeit prüfen könnte das einer vorliegt. Das gemeine am Deadlock ist doch, du kannst ja nicht wissen ob der Lock halt gerade in Benutzung ist und bald wieder freigegeben wird oder ob der Besitzer des Lock gerade versucht den Lock zu bekommen den man selber inne hat!Du kannst für jede beteiligte Funktion ein enum bauen in dem der aktuelle Status (also der gerade ausgeführte Teil-Abschnitt der zugehörigen Funktion) drin ist, es dürfen nur bestimmte Kombinationen dieser Stati auftreten und alles andere ist ein Fehler. Diese Funktionen können bei einem SMP-System natürlich mehrmals parallel aus unterschiedlichen Kontexten aufgerufen werden so das Du diese enums dynamisch (inklusive der Call-History) erstellen musst (dafür könnte man einen statischen Pool nehmen der einfach nur groß genug sein muss um alle gültigen Kombinationen bei der gegebenen CPU-Anzahl aufzunehmen). Sowas zu implementieren macht zwar etwas Arbeit (und kostet in der Debug-Version auch einiges an Performance) aber es lohnt sich sehr wenn man einen Automatismus hat mit dem man die Korrektheit seiner Implementierung prüfen kann. Ich hab sowas mal gemacht und es hat mir sehr geholfen alle möglichen Fehler halb automatisiert zu finden.
Fairerweise muss man schon mal sagen, wer macht denn ne wirkliche Design-Phase (mal von dir und deiner Hardware abgesehen)?Also diejenigen die wirklich wollen das ihr Projekt ein Erfolg wird machen das tatsächlich. Ich hab sowas schon in einigen Firmen erlebt und weil ich gelernt hab das gut geplant == halb geschafft ist mach ich das in Hobby-Projekten auch immer so. Bei einem Kleinprojekt wo vielleicht 3 Tage Programmierarbeit drin steckt plane ich natürlich keine 2 Wochen lang aber erst mal in Ruhe überlegen und auch schriftlich fixieren was eigentlich das konkrete Ziel ist schadet definitiv nicht.
Ich behaupte mal das selbst bei größeren Softwareprojekten nicht so viel vorher designt wird, sondern das dann alle drauflos programmieren und deswegen kommt es oft zu Problemen.Wenn schlechte Programmierer und/oder dumme Manager an einem Projekt beteiligt sind kann das durchaus so enden, ich hab das leider auch schon im Berufsleben miterleben müssen.
Und ich als Hobbyprogrammieren/Anfänger werde mich bestimmt nicht vorher hinsetzen und ein Design anfertigen.Dann ist Dein Projekt wohl bereits jetzt schon zum Scheitern verurteilt.
Was denkst Du warum es all diese tollen Projekt-Management-Tools gibt? Ich selber benutze die zwar nicht, weil ich bisher immer mit einer sauberen Text-Beschreibung ausgekommen bin, aber die haben durchaus ihre Daseinsberechtigung.weil ich mich mit Dingen beschäftigen würde, von denen ich keine Ahnung habe und ohne Praxis auch nie haben werde.Deswegen sollte man ja auch erst mal mit kleinen Projekten anfangen und sich dann ordentlich hocharbeiten.
Auch weiß ich nicht ob man je die Möglichkeit braucht das man eine IPI Nachricht an genau eine CPU (und eine bestimme) schicken können muss.Selbst "alle außer die aktuelle" ist schon ein recht konkretes Ziel, aber selbst das kann ich auf meiner Plattform nicht umsetzen (zumindest hab ich bis jetzt keinen Mechanismus für derartiges vorgesehen).
Wenn du den Kernel mit einem GIANT_LOCK schützt brauchst du nichtmal dafür nen unterbrechbaren MikroKernel.Also dass das keine intelligente Option ist wissen wir doch bereits alle.
hat denn die NMI Variante irgendwelche Nachteile?Innerhalb eines NMI-Handlers kannst Du quasi keine Funktionen des restlichen Kernels nutzen, weil die ja alle durch einen NMI unterbrochen werden können und daher auch in kritischen Zuständen sein können.
Grüße
Erik

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
).