DOS, Anzahl laufender Prozesse abfragen

Hier dürfen auch unregistrierte Besucher posten.
Gast

DOS, Anzahl laufender Prozesse abfragen

Beitrag von Gast »

Hallo, schön dass ihr einen Empfangsbereich habt. Diesen Thread könnte man dann gleich verschieben.

Ich möchte x mal ein Programm starten, aber sicherstellen dass niemals mehr als i Instanzen laufen. Z.B. x=4, i=2

1te Instanz starten i=1
2te Instanz starten i=2
1te Instanz terminiert i=1
3te Instanz starten i=2
2te Instanz terminiert i=1
4te Instanz starten i=2
3te Instanz terminiert i=1
4te Instanz terminiert i=0

Ich denke an eine FOR-Schleife in welcher, befor eine Instanz gestartet wird, geprüft wird wieviele Prozesse von dem Programm bereits laufen. Aber wie bekommt man Informationen über die laufenden Prozesse unter DOS und wie kommt man zur Anzahl der momentan laufenden?
Benutzeravatar
Nilquader
CONFIG.SYS-Autor
Beiträge: 269
Registriert: Mo 26. Jan 2009, 23:00
Kontaktdaten:

Beitrag von Nilquader »

Das wird schwierig - DOS ist nämlich kein Multitasking-Betriebssystem und kann sowieso immer nur ein Programm gleichzeitig laufen lassen.

Da du von FOR-Schleifen sprichst, wäre es außerdem ganz nett zu wissen, mit welcher Programmiersprache du denn arbeitest. Ansonsten wird es ziemlich schwierig, dir hier weiterzuhelfen.

Oder hast du DOS mit der Eingabeaufforderung von Windows verwechselt? Dann sieht's nämlich schlecht aus - dafür sind wir hier nämlich nicht zuständig.

Mit besten Grüßen
Stonequader
Pentium II, 266MHz, 64 MB RAM, 3.2 GB HDD, Voodoo 3 2000, SB AWE64 Gold, 1GB SD mit NC100SDv2-Adapter
Gast

Beitrag von Gast »

Ich dachte das Forum hier wäre eben über die Eingabeaufforderung (MS-DOS) von Windows. Um welches DOS dreht es sich hier sonst?
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

Wenn es eine Subroutine (ein Unterprogramm) innerhalb eines Programms ist, geht das so:
Lege eine globale Variable an und setze sie auf 0.
Im Unterprogramm machst Du das:
Am Anfang des Unterprogramms erhöhst Du die Variable um 1, am Ende verringerst Du sie wieder um 1. (Und wenn Du das Unterprogramm irgendwo in der Mitte beendest, dann mußt Du auch dort diese Verringerung um 1 einbauen.)
Wenn Du das Problem genauer erläuterst (in welcher Umgebung, für welchen Zweck), könnte ich das noch genauer erklären. Und wenn Du schreiben würdest, in welcher Programmiersprache, könnte ich ein Programmbeispiel posten.

Falls sich jemand fragt, wofür man sowas braucht: Ja, sowas braucht man, z.B. wenn man iterativ oder rekursiv programmiert oder mehrere Programme sich gegenseitig immer wieder aufrufen. Ich habe so etwas öfter mal benutzt - es ist allerdings zu kompliziert, um jetzt ein einfaches Beispiel anzubringen. Und ja, ich habe auch diese Instanzen gezählt. (Bei mir diente es u.a. dazu, um zu verhindern, daß der künstliche Stack, den ich angelegt hatte, am Überlauf zu hindern.)
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

Anonymous hat geschrieben:Ich dachte das Forum hier wäre eben über die Eingabeaufforderung (MS-DOS) von Windows. Um welches DOS dreht es sich hier sonst?
Natürlich um das richtige, reine DOS. Alles DOS bis DOS v6.22
NICHT das "DOS", was da unter Windows läuft. (Weil Windows böse ist.)

Daß viele DOS-Programme auch unter Windows laufen (und ich selbst auch meine DOS-Programme teilweise manchmal für Windows aufbohre, z.B. für lange Dateinamen und so Zeugs), spielt hier keine Rolle.
Benutzeravatar
CptKlotz
Admin a.D.
Beiträge: 2946
Registriert: Mo 7. Mär 2005, 23:36
Wohnort: Dorsten
Kontaktdaten:

Beitrag von CptKlotz »

Hallo, schön dass ihr einen Empfangsbereich habt. Diesen Thread könnte man dann gleich verschieben.
Richtig, den Thread kann man verschieben, nämlich in den Gästebereich, wo er noch am ehesten hinpaßt (und wo wir Fragen zur Eingabeaufforderung von Windows tolerieren, die eigentlich in diesem Forum unerwünscht sind; siehe Forenregeln).

Wozu der Bereich "User-Anmeldungen" da ist, steht doch dran:

"Eine Vorstellung in diesem Bereich ist die Voraussetzung für die Freischaltung neuer User-Accounts."
“It is impossible to defeat an ignorant man in argument.” (William G. McAdoo)
PromptFreak

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von PromptFreak »

Es gab mal ein DOS das hatte Multitasking. Man mußte mit MEMMAX oder so ähnlich den Speicher vorbereiten. Ich weiß nicht mehr welches DOS. Ich glaube der Nachfolger von DRDOS.

Was mich eh wundert, schon seit ich Linux sah. Warum hat man kein Multitasking gebaut mit DOS-Befehlen? Stattdessen hat man Betriebsysteme neu erfunden. OS/2 hatte ein gutes Multitasking, aber das von Linux ist besser.
Der Renner sind RTOSe, Real Time Operating Systems. QNX zum Beispiel, leider nicht weiterentwickelt. Lief nur mit IDE nicht der ASPI oder so ähnlich, stellt man im BIOS um.

Auf so ein Multitasking fähiges DOS warte ich schon, seit ich OS/2 Warp installiert hatte.
Das oben erwähnte DOS kam leider viel zu spät, da war DOS schon Geschichte.
PromptFreak

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von PromptFreak »

[quote="PromptFreak"]Es gab mal ein DOS das hatte Multitasking. Man mußte mit MEMMAX oder so ähnlich den Speicher vorbereiten. Ich weiß nicht mehr welches DOS. Ich glaube der Nachfolger von DRDOS.

Was mich eh wundert, schon seit ich Linux sah. Warum hat man kein Multitasking gebaut mit DOS-Befehlen? Stattdessen hat man Betriebsysteme neu erfunden. OS/2 hatte ein gutes Multitasking, aber das von Linux ist besser.
Der Renner sind RTOSe, Real Time Operating Systems. QNX zum Beispiel, leider nicht weiterentwickelt. Lief nur mit IDE nicht der ASPI oder so ähnlich, stellt man im BIOS um.

Auf so ein Multitasking fähiges DOS warte ich schon, seit ich OS/2 Warp installiert hatte.
Das oben erwähnte DOS kam leider viel zu spät, da war DOS schon Geschichte.[/quote]

Ergänzung:

Desqview hieß der Multitasker.
Und QEMM der Speicher-Organisator

Novell DOS das mit Multitasking
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von matze79 »

Real/32 ist ein 32Bit MultiTask DOS.

Multitasking und DOS kam deshalb nie, weil es einfach nicht Möglich ist den grossenteil der Software der damals bereits existierte zu nutzen (MultiTasking ohne Speicherschutz ist Humbug... DOS braucht direkte Hardware Zugriffe),
in der Hochzeit von DOS war Ram einfach noch zu teuer, weshalb Microsofts und IBMs OS/2 (jetzt denk mal nach :)) sich nicht durchsetzen konnte.

Was früher OS/2 war kennst du heute unter den Namen Windows NT. (Schau mal unter NT 4.0 in folgenden Ordner c:\winnt\system\os2 oder wars c:\winnt\system32\os2 unter NT 4.0 laufen sogar ein paar alte OS/2 Programme)

Für Leute die Multiple TTYs brauchten gabs damals schon andere Systeme, schon seit den 70ern.
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
Gast

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von Gast »

Naja, Multitasking ohne Speicherschutz geht aber trotzdem recht gut - sieht man ja am Amiga. Ok, da gibts einen Supervisor-Mode vom 68000er, aber das als Speicherschutz zu benennen - soweit würde ich jetzt nicht gehen. Eigentlich ging das am Amiga sogar richtig gut. Das einzige Feature, was ich da wirklich vermisst habe, war die fehlende "Ressourcen-Verwaltung" im Fehlerfall. Wenn ein Programm abstürzt, dann bleibt es im RAM, belegt diesen also weiter, belegt Audio-Kanäle usw. weiter und frisst sogar Rechenzeit (z. T. mehr als im normalbetrieb). Dieses STRG+ALT+ENT->Task kicken habe ich wirklich immer vermisst :-)

Rein theoretisch ist ein Multitasking im reinen Real-Mode schon möglich. Aber die andere Frage ist, ob es sinn macht. Die gängigsten Anwendungen sind sicher auch so geschrieben, dass sie sich verhalten wie der einzige "Herr im Haus" :-) Die Ressourcen-Verwaltung und der Task-Switch sind aber sicher recht aufwendig. Und 1 MB sind auch schnell voll.

Das war ein Vorteil des 68000er - viel RAM "am Stück". Vorallem konnten Programme dank des fehlenden Schutzes auch ganz einfach miteinander kommunizieren, indem einfach ein Pointer "geschickt" wird, und das Programm dann selbstständig auf den Speicherbereich des Senders zugreift.

Ehrlich gesagt: Früher unter DOS habe ich Multitasking nie vermisst - und an meinen alten DOSen vermisse ich es auch nicht. Die Aufgabenstellungen waren ja andere als heute. Heute hört man MP3s, schaut in Paint Shop Pro bilder an und hat ein Browser-Fenster offen. Damals hat man Musik von CD/Kassette gehört, während man ein offenes Fotoalbum auf dem Tisch liegen hatte und am Rechner Pascal oder ein spiel lief :-D Ich würde sogar soweit gehen und behaupte einfach mal: Wenn man sich auf das wesentliche (z. B. das Schreiben eines Textes) konzentriert, braucht man kein Multitasking.
PromptFreak-Reload

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von PromptFreak-Reload »

Multitasking war damals für Mailboxen interessant. Ein fernsteuerbares Programm über Telefon. Man konnte sogar auf den Prompt, hieß DOORWAY das Programm.
So konnte man arbeiten während man auf einen Connect wartete. Oder man konnte mit dem Programm ''start'' ein Programm auf einem anderen Task starten bei OS/2. Start sah ich bei Windows und Freedos hats auch. Desqiew hatte ein gutes Multitasking.

Aber um Verzeichnisse zu verwalten, Dateien packen und entpacken, dafür war Multitasking gut. ''start'' aufgerufen und wichtigere Aufgabe wieder gestartet.

Unter Linux zeigt sich auch das man mit Multitasking kaum einen abgestürzten Rechner hat. Sich den Prozess suchen und mit kill löschen. Schwupp ist der Task zu.

DOS müßte auch Multitasking können. Ich würde mir das Multitasking von Linux wünschen mit einem System-Verzeichnis. Dateien schreibschützen und fertig. Ein abschließbares System. Aber heute gibts die Registry. Warum gibts -keine- RegistryII? Warum muß bei kaputter Registry das ganze System nicht mehr laufen? Was hat eine Anwendung 0815 mit dem Betriebsystem zu tun? Nichts und trotzdem gefährdet es das System. Ist mir schleierhaft das man das zu ließ.

Multitasking braucht niemand, es würde aber vieles erleichtern.
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von matze79 »

Wer ernsthaft auf einer 486/386 DOSe MultiTasking brauchen sollte, sollte sich Fragen welchen Sinn es macht auf einen Rechner der für DOS konzipiert wurde eine Datei zu entpacken und nebenbei Briefe zuschreiben wenn der Rechner überhaupt nicht die Resourcen dafür hat.
Man sollte vieleicht auch den Geist der Zeit auf sich wirken lassen.

Spätestens ab dem Pentium hatten eh fast alle Windows 95 vorinstalliert.
Ich glaub den letzten Win 3.11 Büro Computer hab ich 2003 gesehen :)

Wenn man MultiTasking DOS will sollte man sich Real/32 besorgen und damit leben das Vieles nicht mehr geht.
Oder eben Linux und Dosemu/Dosbox..
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
Benutzeravatar
Oliver
Solitärspieler
Beiträge: 17
Registriert: Mo 10. Jun 2013, 23:04
Wohnort: Gelsenkirchen
Kontaktdaten:

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von Oliver »

IIRC war das Task-Switching bzw. das Multitasking von Novell DOS 7 (das spätere Caldera DOS) ganz passabel. Habe Novell DOS eine Weile benutzt bevor ich auf OS/2 gewechselt bin. DESQview von Quarterdeck (die mit dem QEMM386) kommt mir auch noch in den Sinn. Habe es selbst jedoch nie eingesetzt.

Allerdings sehe ich hier dafür auch keine reale Anwendung mehr. Wenn es denn unbedingt mehrere parallele DOS Anwendungen sein müssen, würde ich zu DOSemu unter Linux greifen bzw. habe es in meiner Mailbox getan. DOSbox kommt für mich eher nicht in Frage, da es AFAIK die SHARE.EXE nicht unterstützt und somit die gemeinsame Nutzung von Dateien über die verschiedenen DOS Instanzen hinweg problematisch macht.

Oliver
BLUP BBS - Eine der letzten ihrer Art. | des-OR-mad - mein Portfolio / Blog
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von matze79 »

Unter DOSBox geht noch nichtmal djgpp astrein, das ist rein für Spiele optimiert.. Hat auch Probleme mit Dateinamen.

DOSBox ist kein Ersatz, ich nutze QEMU mit Dos mittlerweile, da Dosemu nicht mehr weiterentwickelt wird und unter aktuellen Systemen teils gar nicht mehr funktioniert/nicht mehr richtig funktioniert.

Real/32 bietet z.B. Geschützte Speicherbereiche an, das macht Novell Dos denke ich nicht :)
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
Benutzeravatar
Oliver
Solitärspieler
Beiträge: 17
Registriert: Mo 10. Jun 2013, 23:04
Wohnort: Gelsenkirchen
Kontaktdaten:

Re: DOS, Anzahl laufender Prozesse abfragen

Beitrag von Oliver »

matze79 hat geschrieben: DOSBox ist kein Ersatz, ich nutze QEMU mit Dos mittlerweile, da Dosemu nicht mehr weiterentwickelt wird und unter aktuellen Systemen teils gar nicht mehr funktioniert/nicht mehr richtig funktioniert.
Kann ich hier nicht ganz bestätigen. Hängt aber sicherlich vom Anwendungsfall ab. Der letzte Bugfix von DOSemu erfolgte im März 2013. Allerdings werden auf der Website und auf Sourceforge noch immer Dateien aus 2007 bereitgestellt. Zumindest unter Debian gibt es relativ aktuelle Pakete.

Der Vorteil für mich von DOSemu gegenüber QEMU und anderen Virtualisierungslösungen, ist der, dass ich direkt Verzeichnisse aus dem Linux Filesystem in das DOS System mounten kann und auch auch über verschiedene DOSemu Instanzen hinweg. Das macht z.B. die Datensicherung und den Multi Node Betrieb deutlich einfacher. Ich muss dann nicht mehr unter DOS mit dem Netzwerk Stack rumhampeln. Habe vor meiner Umstellung von echtem DOS Metal auf die DOSemu lange den Novell Client und die Netware Emulation MARS_NWE eingesetzt.


Oliver
BLUP BBS - Eine der letzten ihrer Art. | des-OR-mad - mein Portfolio / Blog
Antworten