Hallo zusammen,
wilfried » Mo 1. Dez 2014, 10:57 hat geschrieben:Roderick hat darauf hingewiesen, das in diesem Thema viel "trial and error" steckt, d.h. von den unmodifizierten Dateien vorher Sicherheitskopien erstellen.
Als heisse Kandidaten für diese Umstellung nennt er:
- XUL.DLL aus dem Mozilla-Bereich
- alle DLLs aus dem OpenOffice-Bereich
Diese Möglichkeit besteht schon länger, wurde aber bisher kaum angewendet. Problem: Nicht alle Programme können damit umgehen. D.h. hier darf noch Forschungsarbeit geleistet werden.

nur, um Frust vorzubeugen hier nochmal die Info (für diejenigen, die es nicht mitbekommen haben):
- es geht nur mit 32-Bit Code/Daten
- es geht (derzeit) nur mit dem SMP-Kernel, der bei der ECS 2.2 Beta II oder neuer dabei ist
Der Grund für letzteres liegt darin, dass die anderen Kernelversionen einen Bug haben, der beim "unload" einer entsprechend markierten dll zu einem Trap im Kernel führen kann.
Problemlos hochladbar sind:
SOFTDRAW (nur Code, Daten lohnt nicht),
NETAPI32 (beides)
MMPM (Code)
PROCL (Code)
SCENTER (Code)
TCPIP32 (Code)
LIBC065 (nur Daten)
VPCWIN (nur Code)
Z! (beides)
ZDART (beides)
Aktuell teste ich die XFLDR mit hochgeladenem Code.
Apropos Shared Memory noch eine Empfehlung:
In der config.sys sollte folgendes stehen (OHNE SET):
MEMMAN=SWAP,NOPROTECT,NOPACK
DLLBASING=OFF
Die erste Anweisung (das NOPACK) verhindert, dass der Kernel Speicher für (kleine) 16-bit Dll's reserviert, um diese dort in einem speziellen gepackten Format ablegen zu können. Da es davon heute nicht mehr so viele gibt ist es besser, diese Dll's ganz normal laden zu lassen und keinen Speicher zu reservieren.
Die zweite Anweisung verhindert, dass bestimmte Dll's an vordefinierten Stellen im Speicher geladen werden. Das verlängert zwar (theoretisch) die Ladezeit (merkt man bei den heutigen Systemen nicht), vermeidet aber "Löcher" in der Speicherbelegung beim Systemstart (was viel entscheidender ist!).
Es nutzt überhaupt nichts, wenn 100 MB im Shared Memory frei sind, wenn dieser freie Speicher auf 100 einzelne Fragmente aufgeteilt ist. Damit eine weitere Dll geladen werden kann braucht der Kernel mindestens so viel Platz, dass er für alle Objekte in der Datei ein passendes freies Stück findet. Die einzelnen Objekte der Datei (Ressourcen, Code oder Datensegment) können vom Loader nicht geteilt werden.
Ich hoffe, meine Experimente mit den PM-Semaphoren bald abschließen zu können, dann gibt es einen neuen PM-Fixpack.
Grüße Holger