home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
APP
/
TOBIG100
/
LIESMICH.TXT
next >
Wrap
Text File
|
2000-05-17
|
8KB
|
177 lines
TO_BIG V1.00 vom 17.5.2000
Dieses Programm manipuliert die Dfree Routine des Betriebssystems. Dies ist nötig auf Systemen
mit Partitionen >2GB (4GB) und Programmen die damit nicht zurechtkommen. Die Ursache dieses
Problems ist ganz einfach. Dfree gibt 4 ganze Zahlen zurück (32 Bit Integer) um daraus den
Gesammtspeicherplatz einer Partition bzw. den noch freien Speicher zu ermitteln müssen jeweils
3 dieser 4 Zahlen miteinander multipliziert werden. Macht man dies wiederum mit einem 32Bit-Integer
so kann es passieren, da₧ das Ergebnis da nicht mehr hereinpa₧t (ein sog. Überlauf). Hier gibt es
2 Varianten:
1) das Programm benutzt einen Vorzeichenlosen Integer, dann liegt die Grenze bei 4GB
2) das Programm benutzt einen vorzeichenbehafteten Integer, dann liegt die Grenze bei 2GB
Sind z.B. 7GB frei, so ergibt die o.g. Multiplikation im ersten Fall 3GB, im zweiten -1GB. Wird
dieses Ergebnis jetzt benutzt um festzustellen, ob noch genug Platz auf der Partition für eine
anstehende Kopieraktion vorhanden ist, so schlägt das im 2. Fall sicher fehl. Im ersten Fall
ist die Gefahr zwar geringer, da das Resultat zumindest immer positiv ist, aber aus 4.0001GB würden 100kB,
und das reicht auch oft nicht.
Lösungsmöglichkeiten:
1) Den Programmierer darauf aufmerksam machen und auf eine Korrektur warten. Es ist einfach, man
mu₧
nur einen anderen Datentyp nehmen.
2) Wenn das Programm nicht mehr weiterentwickelt wird, oder man nicht warten will hat man mit diesem Programm die Möglichkeit die Symptome zu beheben.
Methode
-------
Es gibt 2 Hauptgründe Dfree aufzurufen, entweder um die Information anzuzeigen, oder um wie
oben beschrieben zu wissen, ob genug Platz vorhanden ist. Im ersten Fall bleibt nur eine Korrektur
des Programms. Im 2. Fall kann man bei 99% der Fälle etwas von au₧en machen. Und zwar, wenn ich
Dfree so manipuliere, da₧ es nie mehr als 2GB zurückgibt. Genau dies macht TO_BIG. Im Falle, das
der Platz angezeigt werden soll gibt es natürlich eine falsche Anzeige. Das ganze mal am Bsp. von
Kobold (V. 3.51) Kobold zeigt mir mit installiertem TO_BIG an, das auf meiner Partition H 2GB von
2GB frei wären und nichts belegt ist. In Wirklichkeit hat die Partition 4GB wovon ~275MB belegt sind.
Aber ohne TO_BIG weigert sich Kobold standhaft etwas auf diese Partition zu kopieren. Da bevorzuge
ich eine falsche Anzeige. Da ich sonst mit Kobold zufrieden bin und es vor allem brauche um
Kopierjobs durchzuführen habe ich ursprünglich TO_BIG geschrieben.
Ich gehe allerdings davon aus, da₧ es in absehbarer Zeit eine neue Version von Kobold geben wird.
Weiterhin weigern wird sich Kobold natürlich wenn ich über 2GB kopieren will, aber mal ehrlich wie
oft passiert das?
Kobold hatte hier das Pech als Bsp. herangezogen zu werden, nicht weil es besonders schlecht
ist, sondern eher umgekehrt, weil ich es zu gut fand um es wegen eines so kleinen Fehlers in
den Mülleimer zu schmei₧en.
Ich vermute, das der überwiegende Teil aller Programme die Dfree benutzen diesen Fehler haben.
Bekannt ist er mir mir in älteren Versionen von CAT (bis 4.14). In der Version 4.15 habe ich es
behoben. Und in CAB, hier gibt es Probleme mit dem CACHE.
Beschreibung des Programms:
***************************
Mode 0
------
Dfree wird immer korrigiert (auf knapp 2GB)
Mode 1
------
TO_BIG liest eine Liste von Programmen ein und korrigiert Dfree nur bei diesen. Leider ist es im
TOS nirgends vorgesehen, zu fragen wie das aktuelle Programm hei₧t. Eine Methode gibt es aber,
die allerdings nur auf neueren TOS-Varianten läuft. Bei anderen kann also nur Mode 0 verwendet werden.
Da meine Doku hier nicht eindeutig ist kann es sein, da₧ TO_BIG versucht den Programmnamen zu ermitteln
obwohl es nicht geht. Deshalb habe ich einen Testmodus eingefügt. Man könnte jetzt meinen, diesen
Test könne man doch bei jedem Start durchführen. Doch sollte TO_BIG im Autoordner installierbar sein,
und dort sind keine AES-Aufrufe möglich, und genau die werden verwendet.
Mode 2
------
wie Mode 1, zusätzlich wird aber ein Logfile geführt, in dem alle Programme aufgelistet werden,
die Dfree benutzt haben, au₧erdem wird jeweils angegeben ob dieses Programm bekannt ist, also ob es
korrigiert werden soll.
Testmodus
---------
Ruft man TO_BIG mit dem Parameter -t auf, so wird nur das inf-File analysiert und geprüft ob die
Ermittlung des Programmnamens funktioniert. Letzteres vergleicht den gefundenen Namen mit "TO_BIG ".
Dies schlägt natürlich fehl wenn man das Programm umbenennt. Für den Normalbetrieb ist der Name
unwichtig.
Da -t derzeit der einzige Parameter ist wird garnicht geprüft ob es wirklich -t ist, sondern jeder
Parameter startet den Test, das kann sich aber ändern.
Installation
************
TO_Big.TOS und TO_Big.INF entweder in den Auto Ordner kopieren oder in die Autoexec.BAT ein-
tragen. Bei Eintragung in Autoexec.BAT gehört das INF-File in das Rootverzeichnis der
Bootpartition, also normalerweise nach C:\. Es kann aber auch per Hand gestartet werden. Wird
es gestartet wenn es bereits installiert war, so deinstalliert es sich. In beiden Fällen wird
eine Meldung ausgegeben, beim Deinstallieren wird au₧erdem auf einen Tastendruck gewartet.
Darauf habe ich beim Installieren verzichtet um den Ablauf im Autoordner nicht zu behindern.
TO_Big.inf mit einem Editor editieren. Ein Bsp. File ist beigefügt
Ein Kommentar beginnt mit ';' und wird ignoriert.
Von den Schlüsselwörtern (Mode, Logfile und Programme) wird nur der 1. Buchstabe geprüft
(Gro₧-/Kleinschreibung wird ignoriert), Ob man also:
mode=1
oder
Methode=1
oder M=1
schreibt ist gleich.
Zwischen den verschiedenen Teilen mu₧ ein (oder mehrere) Trennzeichen sein, dies kann eine
Leerstelle, ein Tabulator oder das '=' Zeichen sein. Gültig ist also z.B.:
Mode=1
Mode 1
Mode 1
aber nicht
Mode1
Mode:1
Schreibt man einen Kommentar ans Zeilenende, so mu₧ also auch vor dem ';' ein Trennzeichen
sein, also:
Logfile g:\to_big.log ;das Logfile
und nicht
Logfile g:\to_big.log;das Logfile
Nach dem Vorgeplänkel jetzt zu den einzelnen Einträgen
1) Mode
kann zu 0,1 oder 2 gesetzt werden (s.o.)
Bsp.:
Mode=1
Dfree wird nur bei den unten angegebenen Programmen korrigiert
2) Logfile
Für Mode=2 wird ein Logfile benötigt, ist keines angegeben wird C:\to_big.LOG benutzt.
Bsp.:
Logfile=G:\TMP\to_big.LOG
Falls Mode=2 wird das Logfile in G:\TMP\to_big.LOG geführt
3) Programme
Ab diesem Schlüsselwort wird alles als Liste von Programmen interpretiert, bei denen Dfree
korrigiert werden soll.
Bsp.:
Programme:
C:\KOBOLD_3.ACC
KOBOLD_3
Benutzt wird im Endeffekt nur der eigentliche Name des Programms, also z.B. KOBOLD_3, ohne
Pfad und ohne Endung. Und au₧erdem auf 8 Zeichen gekürzt. Dies ist im Betriebssystem begründet.
Gibt man hier den kompletten Pfad an wird er entsprechend gekürzt.
Die Punkte 1-2 können in beliebiger Reihenfolge aufgeführt sein, aber nach Programme wird kein
Schlüsselwort mehr gesucht. Nur Kommentare sind noch erlaubt.
TO_BIG einmal im Testmodus starten s.o.. Ggf kann nur Modus 0 benutzt werden. Dieser Test mu₧ unter
jedem Betriebssystem wiederholt werden unter dem man TO_BIG benutzen will.
Es sollte unter MagiC und Multitos in allen Modi funktionieren.
Programmtechnisches
*******************
Das Programm verbiegt den Gemdos Vektor. Es benutzt den XBRA Standard mit der ID 'DYJT'.
Rechtliches
***********
Das Programm ist Fairware, d.h. es kann beliebig benutzt und weitergegeben werden. Es kann auch
in PD Sammlungen aufgenommen werden oder kommerziellen Programmen beigefügt werden. Wer es re-
gelmä₧ig benutzt sollte sich allerdings überlegen ob es ihm nicht ein paar Mark wert ist. Er
bekommt dann auch Bescheid, wenn es eine neue Version gibt (per Email).
Kobold, MagiC und Cab sind Warenzeichen von Application Systems Heidelberg.
Autor
*****
Dimitri Junker
Adenauerallee 30
52066 Aachen
BRD
Email:
Dimitri.Junker@Popmail.Oche.de
Bankverbindung
Konto Nr.: 24006074
bei der Sparkasse Aachen BLZ: 390 500 00