Hallo,Von daher halte ich die Aussage "Windows taugt nichts" für nicht ganz angemessen: Es gibt wieviele Anwender? Wieviele haben keine Ahnung und klicken alles an, was nicht bei drei auf den Bäumen ist? Wieviel komische Hardware (auch China-Billig) ist im Einsatz? Da ein Betriebssystem einigermaßen hinzukriegen ist m.M.n. eine ordentliche Leistung.Full ACK!
Ich bin selber absolut kein Freund von Windows aber das schmälert in keinster Weise die Leistung ein OS zu bauen das milliardenfach täglich benutzt wird und dabei meistens recht gut funktioniert. Wenn Windows wirklich so instabil wäre wie immer alle jammern dann würde es auch kaum einer benutzen.
Windows 7 ist so instabil, das eine Anwendung immer noch den Kernel zum Absturz bringen kann und trotzdem nutzen Windows sehr viele Anwender, wohl auch weil es für diverse Anwendungen inklusive Spiele keine Alternative für Windows gibt und millardenschwere Werbekampagnen eine Wirkung haben, so das man gestützt dadurch auch Produkte verkaufen kann, die sonst kaum einer kaufen würde und durch diese Manipulation bei der Kaufentscheidung durch eine ausgeklügelte Werbestrategie selbst einem König unsichtbare Kleider verkauft werden können. Die Entwicklung ist seit Till Eulenspiegel nicht stehen geblieben und der hat es ja allen gezeigt wie einfache es ist die Ahnungslosigkeit einfältiger Menschen auszuloten und mit immer absurderen Spielchen sie alle zu tolpatschigen Narren zu machen. Vergleichsweise läuft die Werbung ebenso nur nicht ganz so offensichtlich und dabei geht es schon lange nicht mehr darum nur ein Produkt bekannt zu machen, sondern es wird immer mit fantastischen Fähigkeiten präsentiert, wobei wir doch nur zu gut wissen, das dabei sehr viel heisse Luft abgelassen wird und hier nur ein erdachtes Image aufpoliert wird, den das Produkt niemals hatte und auch nie haben wird.
Zitat
Ich gehe davon aus das dieser Zustand ebenfalls zur Laufzeit herstellbar ist. Nur ohne Dokumentation wird es schwer.Ich hab selber schon ein paar mal Schaltungen entwickelt die durchs Reset in einen Zustand gebracht wurden der zur Laufzeit nicht erreichbar ist. Das ist ein absolut übliches Vorgehen in der Entwicklung von Schaltungen. Man kann in Hardware durchaus eine State-Maschine entwickeln die durchs Reset in einen State gebracht wird der später nie wieder erreichbar ist (wenn er denn einmal verlassen wurde).
Ok, möglich ist das auch beim x86er.
Zitat
Ich hab mir mal die ersten 2 Google-Treffer zu "x86 loadall" angesehen:
http://www.rcollins.org/articles/loadall/tspec_a3_doc.html: da steht z.B.ZitatAccording to Intel, each time the CPU loads a segment register in real mode, the base address is 16 times the segment value, while the access rights and size limit attributes are given fixed, "real-mode compatible" values. This is not true. In fact, only the CS descriptor cache access rights get loaded with fixed values each time the segment register is 1oaded - and even then only when a far jump is encountered. Loading any other segment register in real mode does not change the access rights or the segment size limit attributes stored in the descriptor cache registers. For these segments, the access rights and segment size limit attributes are honored from any previous setting.So wie es der erste Satz meint kenne ich die Funktionsweise der Schattenregister auch aus den Intel-Manuals, daraus lässt sich IMHO schlussfolgern das der UnReal-Mode eigentlich ein Bug ist.
Ich habe es noch niemals erlebt das ein Laden eines Segmentregisters im RM die Einträge im Schattenregister überschreibt. Wie kann man denn daraus schlussfolgern das es ein Bug ist wenn Intel hierbei Fehlinformationen verbreitet?
Zitat
Normalerweise wird bei einem Schreibzugriff auf eines der Segment-Register immer auch das komplette zugehörige Schattenregister neu geladen.
Offensichtlich ist das nicht so und ich kenne auch keinen einzigen 80386+ bei dem das so ist.
Zitat
Damit da nur im Real-Mode und nur für einen Teil der Schattenregister eine Ausname gemacht wird sind sicher ein paar Transistoren extra notwendig,
Könnte es nicht auch anders herum sein, weil im RM beim Laden der Segmentregister die Schattenregister unberührt bleiben fehlen ein paar Transistoren?
Zitat
wenn die morgen weg gelassen werden wäre die CPU immer noch so funktionsfähig wie laut Datenblatt zugesichert aber der UnReal-Mode würde nur noch so lange funktionieren bis das betreffende Segment-Register neu geladen wird
Vieleicht müssten auch damit die CPU laut Datenblatt funktioniert extra Transitoren eingebaut werden die jetzt überall fehlen und so den Unrrealmofde ermöglichen?Zitat(deswegen haben wir uns damals bewusst für FS und GS entschieden, in der Hoffnung das die möglichst selten von irgendwelchem anderen Code überschrieben werden und somit den UnReal-Mode möglichst lange ganz bleibt).
Ich erweitere für den Unrealmode gewöhnlich nur "DS", da man für FS und GS jeweils ein zusätzliches Segment overide Prefix benötigt, welches man bei Speicherzugriffen über DS nicht benötigt.
http://en.wikipedia.org/wiki/LOADALL: da stehen ein paar Beispiele wie der LOADALL-Befehl benutzt wurde, aber das sind im wesentlichen Beispiele für den 286 (inklusive Deiner HIMEM.SYS), auf dem 286 macht dieser Befehl auch richtig Sinn da es dort keinen offiziellen Weg gab um aus dem Protected-Mode wieder zurück in den Real-Mode zu kommen.
Es gab aber den inoffiziellen Weg der vom PM in den RM zurückschaltet.
Zitat
Für den 286 hat Intel wohl auch mal eine Dokumentation für den LOADALL-Befehl verteilt damit der auch richtig benutzt werden kann. Ich vermute mal Intel hat den LOADALL im 386 vorsichtshalber neu aufgelegt weil die sich nicht sicher waren ob es dazu noch Bedarf gibt, schließlich hatte der 386 ja einen Virtual-8086-Mode und konnte auch wieder offiziell den Protected-Mode verlassen so das LOADALL eigentlich nicht mehr benötigt wird. Auch inoffiziell gab es von Intel nie eine Dokumentation zu dem 386-LOADALL-Befehl (Microsoft hat unter der Hand vermutlich trotzdem ein paar Infos bekommen und zwischen AMD und Intel gibt es schon seit vielen Jahren Patent-Austausch-Abkommen die sicher auch solche internen Infos beinhalten).
Das wirkt schon lustig wie dort mit offiziellen und inoffiziellen Dingen herumschlawienert wird. Wenn man so etwas glauben möchte, bitte schön, Ich halte mich lieber an die Dinge die ich selber ausprobiert habe, egal ob es offiziel bekantgegeben wird, oder auch nicht.
Zitat
Ob der UnReal-Mode wirklich beabsichtigt war (und falls ja ob das auch vom Management abgesegnet war) oder ob der eher aus Zufall entstanden ist werden wir wohl nie erfahren. Fakt ist das dafür zusätzliche Transistoren erforderlich sind und es niemand garantiert das die nicht doch mal irgendwann raus fliegen, würde ja auch niemand vermissen.
Bis du dir sicher das für den Unrealmode keine Transitoren weggelassen wurden damit die Schattenregister im RM nicht durch das Laden eines Segmentregisters überschreiben werden?
Zitat
Eine andere Bedienung als jene welche ich vorgesehen habe ist in meinen Anwendungen gar nicht möglich.Das müssen aber sehr simple Programme sein, oder?
Na klar.
Zitat
Sorry, aber bei Programmen in der Größenordnung eines kompletten OS (wie z.B. Windows aber auch Linux) ist eine Fehlbedienung grundsätzlich nicht auszuschließen.
Es ist ganz gewiss handwerklich möglich nur solche Funktionen in eine Anwendung zu integrieren die man nicht fehlbedienen kann.
Am einfachsten kann man eine Fehlbedienung ausschliessen wenn man keine Closed-Source-Anwendung und kein Windows benutzt.
Zitat
Selbst bei kleinen Mini-OSen, wie z.B. tyndur, gibt es sicher unzählige Möglichkeiten diese fehl zu bedienen. Solange der Computer nicht erahnen kann was der User wirklich will kann der User auch immer den Computer mit falschen Informationen füttern.
Ich kenne den Funktionsumfang von tyndur noch gar nicht, so kann ich darüber auch nichts sagen. Nun müsste man eine Fehlbedienung auch erst mal genauer definieren, um einzugrenzen was damit bei welcher Funktion gemeint ist.
Zitat
Nur weil nicht jede Hardware/Firmware zusammen mit dem Unrealmode getestet wurde, bedeutet das noch lange nicht das es hierbei potentiell mehr Bugs damit zu erwarten sind.Doch, genau das bedeutet das!
Solche rein mutmaßlichen Bugs konnte ich aber bisher nicht festellen. Mit dieser Definition stimmt also offenbar etwas nicht.
Zitat
Wenn man Bugs mit möglichst hoher Wahrscheinlichkeit ausschließen möchte muss man viel Testen und wenn man bestimmte Aspekte nicht oder nur wenig testet dann ist einfach die Wahrscheinlichkeit für übersehene Bugs höher.
Nein, denn nur wenn tatsächlich Bugs bekannt werden ist die Wahrscheinlichkeit höher das man eine Hardware verwendet die beim Unrealmode nicht zuverlässig arbeitet. Wenn man nichts testet, dann ist die Warscheinlichkeit eher unbestimmbar. Nur weil etwas unbekannt ist kann man davon eben nicht ableiten das ein bestimmtes Verhalten hierbei vorliegt.
Zitat
Jeder erfahrene Entwickler, egal ob Software oder Hardware oder irgendwas anderes, kennt diesen Zusammenhang aus seiner real erlebten Praxis.
Testen tut man deswegen weil das Resultat noch ungewiss ist, denn wenn das Resultat schon vorliegt, warum sollte man denn überhaupt noch testen?
Für mich sind das nur rein vermutete Bugs die im weiten Umfeld noch nicht angetroffen wurden, von wenigen Einzelfällen mal abgesehen.
Zitat
Offiziell darf man auch nicht bei roter Ampel die Strasse überqueren, aber das bedeutet nicht das man es nicht kann.Richtig, das bedeutet auch nicht das sofort ein Unfall passiert wenn man es doch tut.
Aber das bedeutet das dieses Verhalten auf Grund von rationalen Gründen unerwünscht ist und auch bestraft wird wenn man sich erwischen lässt.
Über den Sinn von Verkehrsregeln besteht also kein Zweifel.
Zitat
Für den UnReal-Mode wird man zwar nicht bestraft aber die Gründe die gegen seine Benutzung sprechen sind im wesentlichen die selben.
Hier muss ich widersprechen, Verkehrsunfälle bzw. ein Fehlverhalten durch die Verwendung des Unrealmode sind nach meiner Meinung nach eine eher seltene Ausnahme die nur durch wenige Hardware und deren Bios verursacht wird. Auch gibt es kaum einen triftigen Grund den Unrealmode nicht zu verwenden. Denn anders als im Strassenverkehr und/oder bei Windows gibt es dort keine Kreuzung wo sich zwei Anwendungen in die Quere kommen können und hier gibt es auch keine roten Ampeln wie bei Windows und man bewegt sich auf der gesamten Strasse völlig alleine.
Zitat
noch die GraKa-Treiber von Nvidia/ATI-AMD.Was denkst Du warum Nvidia und AMD für ihre teureren (besseren) GraKas extra zertifizierte Treiber anbieten? Diese zertifizierten Treiber enhalten auch nicht unbedingt weniger Bugs aber sie wurden zumindest deutlich gründlicher getestet und Nvidia bzw. AMD sichern zu das bei gefundenen Fehler so schnell als möglich ein Fix geliefert wird (und die rufen dafür die entsprechenden Programmierer auch mal zu einer Nachtschicht an den Arbeitsplatz wenn der Kunde wichtig genug ist).
Weil hier trotz Zertifikat weniger auf Stabilität gesetzt wird und man eine Produktpallette nach der anderen auf den Markt werfen möchte, darum sind solche Bugs überhaupt erst möglich. Ohne die Last des Wettbewerbs wären langelebigere Produkte häufiger anzutreffen die man auch in aller Ruhe noch eher bugfrei bekomen könnte noch bevor sie verbreitet werden.
Zitat
Meine Kenntnisse über Pointer-Arithmetik in C scheinen wohl doch ein paar Lücken aufzuweisen aber meine Kenntnisse bei der Schuld-Pointer-Arithmetik sind recht gut, ich hab es sogar mal geschafft das der Schuld-Pointer auf jemand anderes zeigt obwohl ich was verbockt hab. Genau deswegen gibt es in der Welt des Geldes so erquickende Gesetze wie die der Produkt-Haftung und wer in diesem Feld dauerhaft bestehen will muss sich mit der Schuld-Pointer-Arithmetik sehr gut auskennen. Eine wichtige Regel sagt das man immer jemanden benötigt auf den man diesen Pointer zeigen lassen kann und das geht nur wenn man sich streng an die "zugesicherten Eigenschaften" hält wenn man fremde Komponenten einsetzt. Wenn ich ein Bauteil einsetze dessen Funktionsfähigkeit nur von 0°C bis +70°C zugesichert wird und das Produkt wird aber bei anderen Temperaturen eingesetzt dann bleibt der Schuld-Pointer auf mir stehen egal ob dieses Bauteil nun wirklich die Ursache für einen Ausfall war oder nicht. Sachgutachter von Versicherungen finden solche Dinge garantiert immer.
Grüße
Erik
Ok danke für die Info, aber solche Probleme interessieren mich als privaten Programmieren eigentlich sehr wenig und sie sollten auch keinen privaten Programmierer davon abhalten können den Unrealmode zu verwenden. Hierbei geht es nicht darum etwas zu vermarkten, sondern darum eine weit verbreitete Möglichkeit zu verwenden die neben dem RM es erlaubt den gesamten 4 GiB Adressraum einer 32 Bit-x86-CPU zu adressieren, wobei alle gewöhnlichen Bios-Routinen die für den RM entwickelt wurden auch weiterhin benutzbar bleiben. So ist es für eine Anwendung nicht zwingend nötig den gesamten freien Speicher nur über den PM, oder einen Memmorymanager zu benutzen.
Dirk

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert


