Warum liegt COMMAND.COM/MSDOS nicht im UMB?

  • Ich hätte gerne gewusst, warum MSDOS, HIMEM und COMMAND.COM nicht im UMB geladen werden (EMM386 geht nur LOW).
    Der COMMAND.COM-Schmäh mit SHELL= von z.B. hier sorgt bei mir nur dafür, dass zwei Instanzen (einmal low+high) geladen werden. Ergo, ich verschwende 3KB.

    DOS 6.22

    PHP
    // CONFIG.SYS
    DEVICEHIGH=C:\DOS\HIMEM.SYS /TESTMEM:OFF
    DEVICE=C:\DOS\EMM386.EXE NOEMS
    DEVICEHIGH=C:\DOS\SETVER.EXE   
    DEVICEHIGH=C:\WIN31\IFSHLP.SYS    
    DOS=HIGH,UMB
    BUFFERS=20                                            
    FILES=30
    STACKS=9,128
    LASTDRIVE=D

    Einmal editiert, zuletzt von freaked (20. August 2017 um 12:28)

  • MS-DOS kann die Shell nicht nativ hochladen, das kann und macht nur 7.x (SHELLHIGH). Alternative wäre nur, eine Shell mit eingebautem Speichermanagement wie 4DOS (kann UMBs, XMS und Swapping in Auslagerungsdatei auf ≤80286 nutzen) zu verwenden, diese braucht dann aber vermutlich schon ohne Weiteres deutlich mehr als 3 KB konventionellen Speicher.
    Außer mit Mikromanagement (alle Umgebungsvariablen, d.h. auch MTCPCFG, ans Ende der AUTOEXEC.BAT packen, da diese sonst von allen TSRs im Speicher gehalten werden) wird das wohl nicht besser.

  • Warum DOS weder UMBs noch die HMA (das Segment über 1 MB) nutzt, um Teile von sich hochzuladen, ist in der Tat eine gute Frage.
    HIMEM kann nicht hochgeladen werden, da EMM386 für die Freischaltung der UMBs zuständig ist, aber HIMEM als Vorbedingung bedarf. Nur wenn man diese auf andere Weise (z. B. mit UMBPCI) aktiviert bekommt, kann man HIMEM hochladen.

  • Es werden nur Teile aber eben nicht alles von HIMEM und MSDOS hochgeladen. Schaut euch mal die Speicherbelegung mit und ohne DOS=HIGH an, dann werdet ihr es sehen. Ein Teil der Strukturen von FILES,FCBS,BUFFERS, LASTDRIVE und STACKS bleiben ebenfalls im Low-Memory, da sonst Windows 3.X nicht damit klarkommt. Der hochladbare Teil von MSDOS muß nach Buffers noch komplett in die HMA passen, falls es also nicht geht, sollte man mal den BUFFERS-Eintrag veringern.

    "I think that computer viruses should count as life. I think it says something about human nature that the only form of life we have created so far is purely destructive. We've created life in our own image."
    (Stephen William Hawking)
    (Igor bevölkert das Winhistory-Forum seit dem 21.09.2006)
    (In the rpg commonly known as rl, Igor got an extra life on March 28, 2009)

  • Mit einer "richtigen" (eher in VirtualBox installierten und etwas feingetunten) MS-DOS-Installation kann ich das bestätigen: Wie schon in der Online-Hilfe (HELP DOS) beschrieben, lädt MS-DOS Teile von sich selbst ausschließlich in die HMA (sofern klein genug und DOS=HIGH gesetzt ist) – die Zeile DOS=UMB steuert lediglich den Zugriff auf die UMBs und somit die Möglichkeit, überhaupt hochzuladen. Wenn diese Möglichkeit genutzt wird, kommt der Kernel wie schon bei freaked bei etwa 14K verbleibendem konventionellen Speicher heraus. Verbessern kann man das nur mit einem älteren und damit kleineren bzw. alternativen DOS wie FreeDOS.

    Entgegen meiner Erwartungen ist 4DOS 8.0 eine gute Wahl, was den Speicherverbrauch als Shell angeht: Dieser liegt insgesamt nicht viel höher als COMMAND, und mit UMBLoad=Yes in der 4DOS.INI kann der Großteil davon hochgeladen werden.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!