Forum: PC-Programmierung Festplattenzugriffe unter Win98 "verhindern"


von Dierk (Gast)


Lesenswert?

Hallo,

einfache Frage: gibt es einen Harddisk-Monitor für Win 98? (Betonung
liegt auf "Win 98"?

Problem:

auf dem Zielsystem für mein Parallelport-Programm sind alle möglichen
(unnützen) Sachen installiert.

Nun ist es so daß Windows grundsätzlich Hintergrund-Progrämmchen,
welche Festplattenzugriffe durchführen, unglaublich viel Rechenzeit
gibt, egal wie hoch die Priorität meines Programmes eingestellt ist (ja
genau, wieder einmal das bekannte "Windows ist kein
Realtime-OS-Problem") damit diese ihre "schmutzigen
Hintergrund-Spionageaktionen" zu Ende zu führen können.

Das nervt, weil eigentlich außer meinem Programm auf dem Zielsystem gar
nix und überhaupt nix laufen braucht und die Auslagerungsdatei kann ich
notfalls auch abschalten genügend Speicher ist eigentlich vorhanden.

Bei jedem Festplattenzugriff sind jedenfalls 5-8 ms weg.

Konkret führt das dazu, daß mein Schrittmotor kurz anhält und dann in
einer Art kurzem "Burst" die verlorene Zeit wiederaufholt (bei
Steuerung über MMT-Callbacks).

Wenn ich nun aber weiß welche Hintergrundanwendungen für unnütze
Festplattenzugriffe verantwortlich sind kann ich die (manuell) gezielt
abschießen bzw. in der Registry nach suchen und dort entfernen
(meistens ist es eh irgendwelcher unnötiger Kram der nichts mit der
eigentlichen Aufgabe des Rechners zu tun hat).

Auf einem anderen Rechner ist es schon so schlimm, daß nicht einmal
mehr Scandisk läuft, weil es wegen Festplattenzugriffen ständig neu
starten muß... Nach 10 * Neustart bricht es ab.

Also muß eine schnelle Lösung her.

Tipps? (die mit dem µC kenne ich schon - ist wegen der Entwicklungszeit
der Software keine schnelle Lösung und daher momentan nicht angedacht)

Grüße,
Dierk

von Tobi (Gast)


Lesenswert?

schau doch einfach mal in den autostart ordnern (auch in der reg) und
deaktivier alles was da so drin steht

von Dierk (Gast)


Lesenswert?

HI,

danke habe mir ein Autostart-Managing Tool runtergeladen.

Aber eigentlich möchte ich nur die deaktivieren welche periodisch auf
die Festplatte zugreifen.

Wenn ich einen API-Monitor auf die laufenden Prozeße und Threads
anwerfe, nach welchen APIs muß ich schauen (man kann die APIs
bekanntlich filtern macht sonst ja keinen Sinn) also ich meine welches
sind die APIs die den Scheduler regelmäßig veranlaßen dem jeweiligen
Programm einen längerdauernden (mehrere ms) Priority-Boost zu geben...?
Programme mit diesen würden dann rausfliegen, die anderen dürfen
drinbleiben.

Es sind nämlich tatsächlich periodische Zugriffe, die da stören.

Grüße,
Dierk

von WinAPI-Programmierer (Gast)


Lesenswert?

> Es sind nämlich tatsächlich periodische Zugriffe, die da stören.

Auch wenn du es nicht hören willst:
Windows ist kein Echtzeit-Betriebssystem!

Das, was du versuchst, ist aussichtslos. Mach's entweder korrekt (mit
einem Treiber auf Ring0) oder verpass deiner Schaltung etwas
Intelligenz (etwa ein Mikrocontroller).
Der Scheduler von Windows kann dir keine Antwortzeiten garantieren.
Niemals.
Selbst wenn du alle anderen Prozesse beendet hast, kann er deinem
Programm die CPU (für eine beliebige Zeit) wegnehmen.

von Thorsten (Gast)


Lesenswert?

Haste es mal im abgesicherten Modus probiert?

von Flo (Gast)


Lesenswert?

Hi Dierk,

ich denke du suchst etwas in der art:

http://www.sysinternals.com/ntw2k/source/filemon.shtml

Gruß

Flo

von Dierk (Gast)


Lesenswert?

Ja genau, danke!

Werde es mal damit versuchen.

Grüße,
Dierk

von Fred35 (Gast)


Lesenswert?

Hast du schon mal MSCONFIG laufen lassen? Da kannst du alle möglichen
Programme deaktivieren, die dein OS verlangsamen. aber vorsicht. Nur
die unnützen deaktivieren, sonst hast du ein Problem

START-Ausführen- MSCONFIG eingeb, OK

von Gerhard Humer (Gast)


Lesenswert?

Hi Dierk,

Stehe genau vor dem gleichen Problem.
Hatest du schon Erfolg ?

Gruss Gerhard

von Dierk (Gast)


Lesenswert?

Hi,

also mit FileMon ging das ganz super.

Ich konnte ein Programm im Autostartordner identifizieren, welches etwa
30 mal pro Sekunde eine vxd-Datei von der Festplatte dynamisch geladen
hat, danach offenbar einen einzigen Befehl aufgerief (nämlich zu
schauen ob am USB-Port ein Wireless-Lan-Stick hängt) und sich dann
wieder verabschiedete.

Das hab ich komplett rausgeworfen (benutze den Stick sowieso nur am
Laptop), notfalls starte ich das "Wireless Lan Utility" manuell.
Sogar die Mausbewegungen gehen jetzt schneller! Unglaublich, wie
schlechte Programmierung einer Hintergrundanwendung den Rechner
ausbremsen kann. Tja, so ist das mit der Globalisierung und dem
billigen Zeugs aus Fernost ;-))

Jetzt ist Ruhe, und es dauert mehrere Minuten, bis überhaupt ein
Festplattenzugrif erfolgt - in der Regel extrem kurz vom Memory-Manager
- notfalls könnte ich den auch noch ausschalten, hat bis jetzt aber
nicht weiter gestört.


Der Motor läuft stotterfrei mit max. 1000 Schritten pro Sekunde (das
Anfahren der beiden 67,5 mm entfernten Endpositionen dauert damit
weniger als 30 s bei 400 Schritten / Umdrehung und einem Hub von 2,5 µm
pro Schritt - Direktantrieb ohne Getriebe)

Läuft der Motor und scrollt man nebenher in einem großen PDF merkt man
allerdings eine Verzögerung - das Steuerprogramm sollte möglichst
alleine laufen, bzw. wenn andere Anwendungen laufen sollten die nicht
auf die Festplatte zugreifen oder aber man läßt den Motor langsamer
laufen (in meinem Fall läuft er normalerweise extrem langsam, und nur
zum schnellen "Rück- und Vorspulen" brauche ich die Auflösung von 1
ms.

Danke für alle Tipps,
Grüße,
Dierk

PS: für ernsthafte kommerzielle Sachen ist natürlich ein µC oder ein
echter Treiber "Pflicht" - die oben genannten Einschränkungen kann
man den Leuten ja nicht zumuten.

von Dierk (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

während die 1 ms - Auflösung daheim auf meinem VIA C3 Nehmedia Board (1
Ghz, WIN98SE) mit OnBoard-Grafik und Onboard-Ethernet problemlos und
stabil funktioniert, funktioniert sie auf dem Institutsrechner mit
einem AMD Board (1 GHZ, WIN98SE) mit ATI Rage 128 und PCI 10base
Ethernet-Karte leider überhaupt nicht - nicht mal im abgesicherten
Modus. Ich frage mich auch, ob das Mainboard bzw. eine der Karten eine
Fehlfunktion hat, da das Ethernet sehr oft um den Faktor 50 langsamer
ist als es sein sollte, und das einfache Umbenennen einer Datei mit REN
dauert unter DOS etwa 2 Sekunden! Da kann irgendwas nicht stimmen.

Laut MSINFO werden sogar im abgesicherten Modus noch eine ganze Menge
Treiber geladen...

Eine Analyse mit Filemon und ApiMon hat keine Ergebnisse mehr gebracht,
weil ich inzwischen alles rausgeworfen habe, was da hätte stören können.
Das hat auch was gebracht, manchmal erhalte ich kurzzeitig 1 ms
Auflösung (was vorher nie der Fall war).

Einen Event-Poller (pollt auf "externe Events" der ATI Grafikkarte)
habe ich z.B. inzwischen entfernt da außer dem Anschluß des
Monitorkabels an die Buchse keinerlei "externe Events" möglich sind.

Jetzt suche ich ein Tool/Programm, mit dem ich die jeweils beanspruchte
Rechenzeit von den installierten Gerätetreibern oder Interrupts
ermitteln kann, die noch so im System laufen.

Grüße,
Dierk

PS:
===
Ich habe ein kleines (und schlechtes) Tool geschrieben - im Anhang -,
welches den LPT1-Port jede ms toggeln kann - schließt man ein
Osziloskop an oder auch nur 8 LEDs, sieht man schon ob der Rechner
tatsächlich 1 ms Intervalle anbieten kann oder nicht - kann er es
werden die LEDs ganz gleichmäßig auf die Hälfte der Leuchtkraft
gedimmt, kann er es nicht so "flackern" sie wie Kerzen im Wind. Man
kann so auch Festplattenzugriffe und andere zeitauwendige Abläufe auf
Gerätetreiberebene beobachten... das Tool benötigt die INPOUT32.DLL von
http://www.logix4u.net. Außerdem ist eine freeware-Komponente drin,
"PILED" (findet man auf einschlägigen delphi-Seiten). Für
Standard-Timer klickt man "Timer" für Multimedia-Timer klickt man
MMT. Der MMT schaltet im Gegensatz zum Standard-Timer nur den Port um
und nicht auch die virtuellen Leds. Die Zeit welche der Standard-Timer
tatsächlich braucht wird gemessen (unter WIN98 geht es anscheinend
grundsätzlich nicht besser als 55 ms es sei denn man würde versuchen
die Granularität zu verändern).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.