Diskussion:Prozess (Informatik)/Archiv

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 8 Jahren von Didia in Abschnitt Thread vs Prozess
Zur Navigation springen Zur Suche springen

Abkürzungen

Ich kam über eine Suchanfrage her und musste feststellen, dass die Abkürzung/ der Bergiff "DV" sogar in einer Überschrift verwendet, aber leider weder ausgeschrieben, erklärt oder verlinkt wird. Möglicherweise weiß ein Großteil der Leser dieses Eintrags was das bedeutet, aber dennoch sollte es imho allgemeinverständlich gemacht werden. --Stanly (Diskussion) 11:47, 2. Okt. 2012 (CEST)

Ersetzt durch "Informatik"; somit:
Archivierung dieses Abschnittes wurde gewünscht von: arilou (Diskussion) 12:54, 15. Sep. 2015 (CEST)

Task oder Prozess

Es gibt Probleme mit dem Begriff Task. Früher (80-ger Jahre, bis 1995) wurde das, was heute als Thread bezeichnet wird, als Task bezeichnet, daher auch Multitask-Betriebssysteme. Heute wird Task auch oft mit Prozess gleichgesetzt, wie es auch im Wiki-Artikel Task steht. Der Begriff Task ist also nicht mehr scharf umrissen, Thread dagegen ist etabliert sowohl bei Microsoft-Programmierungen als auch beim Konkurrenten Java-Sun, so dass man durchaus von Allgemeingültigkeit sprechen kann. Daher möchte ich hier Prozess und Thread gegenübergestellt wissen, das ist exakt. Der Verweis auf den Protected Mode ist daher wichtig, weil sich ein Prozess vom einem anderen Prozess auch insbesondere dadurch abgrenzt, dass er einen anderen Speicherbereich benutzt, Querzugriffe sind im Protected Mode nicht möglich. Das ist ein Themengebiet, ohne den Verweis fällt es auseinander.

Ich meine, es ist viel unwichtiger, wie ein Prozess auf UNIX gestartet wird (Fork), das ist UNIX-Spezialwissen, nicht Enzyklopädie. Ausserdem gibt es noch andere Möglichkeiten in Unix, die hier gar nicht alle genannt werden können. Aber lassen wir's aber drin stehen, in einem Satz, als Link. -- HartmutS 15:36, 12. Sep 2005 (CEST)

Noch eine Anmerkung, der Artikel ist sehr schieflastig: Die Zustände, die hier für den Prozess genannt sind, sind die Zustände eines Thread, früher als Zustände eines Task gelehrt. Bei der Beschreibung des Threads fehlen sie. Das ganze stimmt dann (und wird oft so verstanden), wenn der Prozess nur einen Thread hat. Das ist durchaus bei einigen Prozessen der Fall, ist aber nicht allgemeingültig. Ich habe nochmal nachgelesen. Auch im Artikel Thread wird Task so verwendet, wie ich es hier benannt habe (die Stelle ist nicht von mir geschrieben), Zitat von dort: Die Gesamtheit zusammengehöriger Threads inklusive ihrer Betriebsmittel bezeichnet man als Task. - Da Threads, die dem selben Prozess ... - Prozess und Task dort wieder unscharf. Eine weitere Überarbeitung ist wohl nötig. Wer sagt noch was dazu? -- HartmutS 15:50, 12. Sep 2005 (CEST)

Die Begriffsverwirrung um "Task" würde ich auch vermeiden. Aber es ist sogar noch komplizierter. Nicht nur, dass eine Prozess aus mehreren Threads bestehen kann, Programme können wiederum aus mehreren Prozessen bestehen. Habe die Stellen zunächst herausgenommen. Weitere Überarbeitung ist nötig. --Hades 19:01, 17. Sep 2005 (CEST)
Diskussion von 2005:
Archivierung dieses Abschnittes wurde gewünscht von: arilou (Diskussion) 12:54, 15. Sep. 2015 (CEST)

Einleitung

Die Einleitung kommt mir jetzt furchtbar kurz vor, aber der Mixmax, der vorher drinstand, ist nun wenigstens raus. OK, weiter so. Bezüglich Programm seien mehrere Prozesse: Man sollte es nicht so kompliziert machen! Freilich kann ich unter Unix ein Programm starten, dass macht fork(), und schon sind's 2 Prozesse. Aber: Betrachtungsweise: Das "Programm" dient doch nur beispielsweise dazu, einen Dämonprozess zu starten. Der gehört dann nicht mehr zu "dem Programm" sondern ist halt da und läuft. Bleibt man bei "Prozess" als größte Einheit, dann muss man eben sagen: Beim Aufruf dieses bestimmten Programmes werden zwei Prozesse gestartet, und wieder beendet,... usw. Dem Normal-Bediener dürften solche Details weniger interessieren und der Systemkenner kann mit Dingen wie Prozess umgehen. Die scharfe Trennung ist

  • Prozess - eigener Speicherraum, eigene Filehandles usw.
  • Thread - gemeinsamer Speicherraum usw. mit anderen Threads des selben Prozesses. (Wie ist das mit dem ProtectedMode. Da ich das für wichtig an dieser Stelle halte, Speicherraumabgrenzung, sollte der Link irgendwo drinbleiben!)

Programm? Was ist das? Laut Wikipedia vorgeschriebener Ablauf, das trifft tatsächlich allgemein zu, auch auf Computerprogramm. Das ist aber eine ruhende Ablaufvorschrift und hat überhaupt nichts mit Prozess zu tun. Es bestimmt, falls doch mal gestartet, den Ablauf von (möglicherweise mehreren) Prozessen. Das ist scharfe Sachsprache. OK? mit freundlichen Grüßen -- HartmutS 11:42, 19. Sep 2005 (CEST)

Grundsatzfrage Ich finde nicht, dass die Definition jetzt lesbarer/verständlicher geworden ist. Sollte Wikipedia nicht wenigstens ein wenig erklären, um was es sich handelt "Programm in Ausführung" ist so falsch nicht ... Learny 19:31, 19. Sept 2005 (CEST)

Programm in Ausführung ist genau richtig, meine ich auch. Laut Archiv hat Hades die Einleitung überarbeitet, und zu stark gekürzt. Ok ist, dass ein MixMax von Wiederholung kann auch als ... aufgefasst werden raus ist. Das ist stilistisch nicht gut, aber sachlich richtig. Ich habe mir eben in einem Parallelfenster die Version vom 17.Sept. angeschaut, so schlecht war die nicht! Außer der obengenannte Wiederholung. Der letzte Satz der Einleitung vom 17.Sept. ist auch nicht so prägnant, aber richtig falsch auch nicht. Hades, warum hast Du das rausgeschmissen??? Ich möchte gern folgendes machen: Wenn bis zum 23.Sept. morgens keine Antwort kommt, und nichts besseres drin ist, stelle ich die Version vom 17.Sept. in etwa wieder her. Wer sagt was dazu? -- HartmutS 12:58, 20. Sep 2005 (CEST)
Wie angekündigt habe ich die Einleitung überarbeitet, basierend auf dem Inhalt vom 13. september. Es ist inhaltlich alles vom 13. drin, ich habe versucht, es sprachlich besser zu formulieren. Zum vorigen Stand: Die Einleitung war zu kurz, und nichtssagend. dynamisches Objekt ist sehr unkonkret, sequenzielle Aktivitäten umschreibt den Begriff Thread unnötigerweise. Bezüglich des Begriffes Aktivitätsträger anstelle Thread: Ist das ein üblicher Begriff? Oder ist es ein Versuch, Anglismen zu vermeiden, der aber in der Informatik eher unnötig ist? Ich denke, wenn man von Aktivitätsträgern redet, sollte man wenigstens Thread in Klammern schreiben. Sonst muss mancher rätseln, was das ist. Anders herum, wenn jemand nicht weiß, was ein Thread ist, bekommt er im Link sofort die Erklärung. -- HartmutS 15:55, 23. Sep 2005 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: arilou (Diskussion) 12:54, 15. Sep. 2015 (CEST)

Prozesse bei WinNT

Was soll dieser Satz bedeuten? Ich werde daraus nicht schlau: "Auf einem 32Bit-System sind somit maximal 3G virtuellen Addressraums für einen Benutzerprozess bei knapp unter 1 Gigabyte Hauptspeicher verwendbar. Bei 2 Gigabyte RAM reduziert sich dieser Anteil auf knapp 2G virtuellen Addressraums." --Novox 23:48, 29. Jun 2006 (CEST)

Hab das jetzt nach 8 Jahren mal auskommentiert;
Rein logisch ist die Größe des virt. Adressraums gänzlich unabhängig von der Menge tatsächlich vorhandenen Rams.
--arilou (Diskussion) 14:09, 26. Nov. 2014 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: arilou (Diskussion) 12:54, 15. Sep. 2015 (CEST)

Prozesse unter Windows - Fragen

Welcher Nutzen hinsichtlich der Erklärung des Prozessbegriffs wird in der Beschreibung des virtuellen Adressraum gesehen?

Welche Limitierung der MIPS-Architektur (!) hat dazu geführt, dass Windows den linearen Adressraum in der 32-Bit Version in zwei jeweils 2 GB große Teile aufteilt?

Ist die Aufteilung wirklich durch Hardware bedingt oder ist es nicht eine Entwurfsentscheidung der Betriebssystementwickler? --AHagerer 14:39, 23. Jan. 2007 (CET)

Eher zweiteres. Es gibt zwei Beschränkungen. Eine ist, dass ein Teil des Adressraums von PCI-Geräten etc belegt wird und deshalb keine 4 GB "direkt" adressiert werden können. Diese Beschränkung teilt auch Linux, sie war hardwarebedingt. Allerdings (spätestens) seit PAE kein Thema mehr.
Die Aufteilung in zwei mal 2 GB ist ein "Feature" von Microsoft Windows. Man kann die Aufteilung umstellen, allerdings hat das erfahrungsgemäße ziemliche Stabilitätsprobleme zur Folge.
Das ist weitgehend Quatsch.
"ein Teil des Adressraums von PCI-Geräten etc belegt wird und deshalb keine 4 GB "direkt" adressiert werden können" - das gilt für die realen Adressen, nicht für den virtuellen Adressraum. Es sei denn, man will für manche Hardware-nahe Anwendung diese "Ram-Bereiche" in deren Adressraum einblenden und sich dafür "genügend Freiraum" erhalten.
Insgesamt waren es v.a. Performance-Gründe. Dadurch, dass bei allen Prozessen die oberen 2 GB garantiert frei sind, kann man dort Treiber und DLLs einblenden - damit kann eine "Betriebssystem-Funktion" "im Adressraum der Anwendung" ablaufen, und z.B. dort bereitgestellte Daten/Buffer einfach direkt verwenden, statt sie erst "in Kernel-Ram" kopieren zu müssen. Und man kann dieselbe DLL bei allen Prozessen an derselben Adresse einblenden - das braucht nur 1* Ram, und alle (DLL-internen) Pointer stimmen.
--arilou (Diskussion) 14:19, 26. Nov. 2014 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: arilou (Diskussion) 12:54, 15. Sep. 2015 (CEST)

Meinungsbild: Windows-Prozesse in WP erfassen?

Ich habe eben eine entsprechende Frage formuliert und ein wenig erläutert. Wen's interessiert, der schaue mal vorbei. --Delabarquera 14:58, 6. Sep. 2007 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: arilou (Diskussion) 12:54, 15. Sep. 2015 (CEST)

Threads

Ein eigener Abschnitt für Threads ist unnötig, da ein eigener Artikel zum Thema existiert. Ein kurze Erwähnung mit Verlinkung reicht daher völlig aus. -- Cristof 23:53, 11. Okt. 2008 (CEST)

Was stört dich daran, wenn die beiden Begriffe voneinander abgegrenzt werden? Die Definition ist ja immerhin nicht ganz so trivial. Und warum denkst du, dass der Begriff des „leichtgewichtigen Prozesses“ überhaupt nicht mehr erwähnt werden sollte? Denkst du nicht, dass jemand auf die Idee kommt, in einem Artikel namens „Prozess“ auch nach dessen leichtgewichtigem Gegenstück zu suchen. --j ?! 17:30, 13. Okt. 2008 (CEST)
Keine Antwort? Dann füge ich den Abschnitt wieder ein. --j ?! 18:55, 9. Nov. 2008 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: arilou (Diskussion) 12:54, 15. Sep. 2015 (CEST)

Meine Überarbeitung

Der alte Artikel basierte auf einer einzigen Quelle, nämlich dem „Duden Informatik“ aus dem Jahr 1993. Dazu gab es eine einzige Fussnote. In meiner Überarbeitung dagegen sind alle Aussagen belegt (oder entsprechend auf den Hauptartikel verwiesen). Als Hauptquelle wurde Tanenbaum, Moderne Betriebssysteme (3. Aufl. 2009) herangezogen, da dies das Standardwerk im Bereich der Betriebssysteme ist. Natürlich ist dieses teilweise wieder veraltet. Um die grundlegenden Konzepte zu vermitteln ist es aber immer noch gut genug. Es bietet auch eine gute Grundlage, um entsprechend aktuellere Ergänzungen vorzunehmen. Ich bitte deshalb, den Artikel „gesichtet“ zu lassen und entsprechend daran Verbesserungen/Aktualisierungen (mit entprechenden Belegen!) vorzunehmen. Siehe auch mein Kommentar hier. --Didia (Diskussion) 19:47, 10. Mai 2016 (CEST)

Der Artikel wurde von unzähligen WP-Autoren verfasst und wieder und wieder überarbeitet, korrigiert und besser formuliert. Daher kann man wohl erst einmal davon ausgehen, dass die Informationen und Formulierungen darin weitgehend korrekt waren.
Das ändert natürlich nichts daran, dass der Artikel nur schwach mit Belegen versehen ist/war.
In der WP gibt es übrigens keinen Belegzwang, sondern nur ein Beleggebot. Unstrittige Inhalte sollen, müssen aber nicht belegt werden. (Theoretisch könnte ich jetzt von dir verlangen, im Detail aufzuführen, welche Aussagen (im alten Artikel) du als strittig auffasst, und nur diese müssen dann belegt werden.)
Ich denke, dass deine Neu-Ausarbeitung evtl. durchaus -hm- Basis für einen komplett neuen Artikel werden kann. Deshalb habe ich sie auch nicht reverted. Ich hätte sie auch gesichtet gelassen, wenn nicht schon die ersten 2-3 Abschnitte einige deutlich falsche Aussagen beinhalten würden. (Jetzt geht's also in die Details:)
  1. Als "Prozessor" bezeichnete man früher sowohl die logische Baugruppe als auch den physikalischen Chip mit seinen Beinchen. Solange in dem Chip nur 1 Kern und keine Grafikeinheit integriert waren, war das ok. Heute muss man viele Aussagen aber auf einen Prozessorkern umbiegen, damit sie stimmen.
  2. "Multiprogrammierung" ist schlichtweg falsch, du (oder deine Quelle) verwechselst das mit Multitasking.
  3. Da ein Prozessor heute fast immer mehrere Kerne hat, kann er sehrwohl mehrere Prozesse echt-gleichzeitig verarbeiten.
  4. Ein Prozess ist kein Konzept, sondern ein {Datensatz + zugeteilteRessourcen}. Analog: Ein Objekt ist was anderes als eine Klasse.
  5. "Das Prozessmodell vermittelt dem Benutzer die Illusion, dass verschiedene Programme gleichzeitig ausgeführt werden" ist schlichtweg fasch, das ist eine Wirkung von Multitasking. Ein Prozessmodell ist zwar eine Grundlage des Multitasking, aber es ist nicht dasselbe. Schon DOS hat ein Prozessmodell, und da gibt's keine solche 'Illusion'.
Soweit erst einmal zur Einleitung. (Die ich durchaus besser finde als die alte(!!!) - mit Ausnahme der genannten Fehler.)
Ich hatte bisher nicht die Zeit, deinen neuen Artikel ganz durchzulesen. Aber wenn die ersten 4 Sätze schon solche Kracher enthalten, dann sehe bitte davon ab, ihn zu sichten, bis nicht das gröbste korrigiert ist. (Achtung - beim Editieren sichtet man mitunter automatisch, wenn man das zugehörige Häkchen nicht abwählt!)
--arilou (Diskussion) 09:45, 11. Mai 2016 (CEST)
Die Ausführungen von Arilou sind nicht korrekt. Das ist Stand von 2006 oder so, aber mittlerweile hat man eingesehen, dass eine Enzyklopädie ohne Belege keine Sinn macht. Mittlerweile gilt der Grundsatz: "Alle nicht-trivialen Aussagen eines Artikels müssen belegt und auf diese Weise nachprüfbar sein.". Müssen. Nicht sollen. Daher ist es doch schön, wenn sich jemand mal um Belege kümmert, auch wenn er sich nicht mit allen Aspekten des Thema so gut auskennt. Wenn sich die Experten zu fein für Quellen sind, kann halt so etwas dabei rauskommen. Deshalb unterstütze ich die Aktion von Didia voll und ganz. Wer Fehler findet, kann das ja gerne auf Basis der vorhandenen oder seinen eigenen Quellen korrigieren. Das ist Teil des Wikipedia-Konzepts. Einen Artikel ohne Quellen zu schreiben, sodass ihn niemand außer den Experten auf inhaltliche Korrektheit prüfen kann, ist gegen das Wikipedia-Konzept (Grundsatz der Überprüfbarkeit). --TheRandomIP (Diskussion) 21:54, 11. Mai 2016 (CEST)

Ich habe mal die Einleitung überarbeitet und mich mit der Begrifflichkeit an Peter Mandl: Grundkurs Betriebssysteme Springer-Verlag, 2014 orientiert, damit hier jüngere Quellen zum tragen kommen. Dies scheint sich momentan weitgehend mit dem Artikel zu decken (also insbesondere auch mit der älteren Auflage von Mandl und mit Tanenbaum). Natürlich werden manche Begriffe in der Literatur unterschiedlich (breit) gebraucht. Siehe dazu hier. Wennschon wäre also hier entsprechende Quellenkritik angebracht bzw. es sollte auf weitere/bessere/aktuellere Quellen verwiesen werden, die die Begrifflichkeit evt. noch mehr präzisieren. --Didia (Diskussion) 16:22, 13. Mai 2016 (CEST)

Zur Ergänzung Andrew S. Tanenbaum, Moderne Betriebssysteme, 2009:

„Ein Prozess ist nichts anderes als die Instanz eines Programms in Ausführung, inklusive des aktuellen Wertes des Befehlszählers, der Registerinhalte und der Belegungen der Variablen. Konzeptionell besitzt jeder Prozess seine eigene virtuelle CPU. In der Realität schaltet natürlich die CPU zwischen den Prozessen hin und her. Zum Verständnis ist es jedoch viel einfacher, sich eine Menge von (quasi-)parallel laufenden Prozessen vorzustellen, als zu versuchen, die Übersicht darüber zu behalten, wie die CPU zwischen den Programmen wechselt. Dieses schnelle Hin- und Herschalten wird als Multiprogrammierung bezeichnet, wie schon in Kapitel 1 erwähnt.“ (S. 125)

„In einem Multiprogrammiersystem wechselt die CPU schnell von Programm zu Programm, wobei jedes Programm im Bereich von ungefähr zehn bis hundert Millisekunden rechnet. [] Manchmal spricht man in diesem Zusammenhang von Quasiparallelität (pseudoparallelism), um den Gegensatz zur echten Hardware-Parallelität von Multiprozessorsystemen (in denen sich zwei oder mehr CPUs den gleichen physischen Speicher teilen) hervorzuheben. Für einen Menschen ist es schwierig, den Überblick über mehrere parallele Vorgänge zu behalten. Deshalb erarbeiteten Betriebssystementwickler im Laufe der Jahre ein konzeptionelles Modell (sequenzielle Prozesse), das den Umgang mit Parallelität vereinfacht.[...]“ (S. 124-125) siehe hier --Didia (Diskussion) 16:54, 13. Mai 2016 (CEST)

Zur Information: Ich habe mittlerweile die Terminologie im Grossen und Ganzen an Mandl, Grundkurs Betriebssysteme, 2014 angepasst. Damit ist der Artikel hoffentlich relativ aktuell. Die Definitionen orientieren sich auch sehr eng daran. Die Thematik Multiprogramming und Multitasking habe ich in einem entsprechenden noch weiter ausgebaut, dabei beziehe ich mich ebenfalls mehr auf Mandl und weniger auf Tanenbaum. Tanenbaum ist zwar ein Standardwerk und sehr gut, wenn es um das Erklären von Konzepten geht, dafür ist er manchman etwas ungenau. Mandl ist dagegen sicher präziser, manchmal aber etwas auf Kosten der Verständlichkeit. Ich habe deshalb versucht, einen guten „Mix“ zu finden.

Zur Terminologie „Prozessor“ verweise ich an dieser Stelle ebenfalls auf Mandl:

  • Rechnerwerk und Leitwerk werden heute in der Regel in einem Prozessor, der als Zentraleinheit (CPU, Central Processing Unit) oder Rechnerkern bezeichnet wird, zusammengefasst. (S. 4)
  • Multicore-Prozessoren (auch: Mehrkernprozessoren) sind Mikroprozessoren mit mehreren vollständigen CPUs. Viele Ressourcen mit Ausnahmen des Busses und ggf. der Caches sind repliziert. Als Dualcore-Prozessor (Doppelkernprozessor) bezeichnet man einen Multicore-Prozessor mit zwei CPUs. Mikroprozessoren mit einem Hauptprozessor bezeichnet man zur Abgrenzung als Singlecore-Prozessoren (Einzelkernprozessor). Bei vier Kernen spricht man von einem Quadcore-Prozessor, usw. (S. 9)

Soweit ich sehe, sollte also die Terminologie relativ gut durch Fachliteratur belegt sein. Sollte es dazu abweichende Meinungen geben, bitte ich, dies hier mit Verweis auf reputable Quellen zu diskutieren. --Didia (Diskussion) 13:09, 14. Mai 2016 (CEST)

Quellen liefer' ich noch, aber das Buch gehört - zumindest begrifflich - auf den Müll.
  1. I.A. wird "Prozess" == "Task" verwendet. Das muss getrennt von den "Threads" betrachtet werden.
    Z.B. wird niemals einer Tast ein Prozessor zugeteilt, sondern einem ihrer Threads. Hat eine Task nur 1 Thread, mag das scheinbar auch mal zusammenfallen.
  2. "CPU" oder "Prozessor" nennt man (heute) das komplette Bauteil - ein Plastikgehäuse mit Die drin und Beinchen.
    Die logische Verarbeitungseinheit heißt "ProzessorKERN".
    Hier weicht übrigens der US-Sprachgebrauch vom deutschen ab: 'CPU' in engl. Literatur meint fast immer "Kern", in dt. jedoch das Bauteil.
    Deutsch: "Mehrkern-CPU". US-Englisch: "multi-CPU processor".
Soweit erst mal 2 Beispiele. Fazit: Deine Quelle ist (vom Begriffsgebrauch) Schrott.
--arilou (Diskussion) 09:57, 19. Mai 2016 (CEST)
Nachtrag: Didia schein viel Zeit zu haben. Ich muss - so ganz nebenbei - noch einen 40h-Job bewältigen. Eine Artikel-Komplettneufassung ~25k Text~ mal eben schnell mit Quellen zu redigieren, ist 'ne Heidenarbeit für mich.
Und als studierter Informatiker erkenn' ich Schrott leider zu schnell, um Didias Artikel ohne Bauchkrämpfe auf die Menschheit/den WP-Leser loslassen zu können. Da ist einfach zu viel echt falsche Information drin.
--arilou (Diskussion) 10:04, 19. Mai 2016 (CEST)
Sorry, aber so geht das nicht! Wennschon musst du zuerst die Quellen liefern und kannst danach auf dieser Basis Änderungen im Artikel vornehmen. Ich habe mit den Büchern von Andrew S. Tanenbaum und Peter Mandl als Quellen zwei Professoren auf dem Gebiet der Betriebssysteme als Hauptquellen verwendet. Wenn das für dich Schrott ist, dann ist das deine persönliche Meinung, tut hier aber nicht viel zur Sache. Wenn andere Quellen eine andere Terminologie oder andere Definitionen verwenden, kann das gerne ergänzt werden, wenn es sich mit reputablen Quellen belegen lässt. Alles andere ist WP:TF und Vandalismus. Da genügt die Begründung, dass du für genauere Recherche keine Zeit hast, leider nicht. --Didia (Diskussion) 11:15, 19. Mai 2016 (CEST)
Anmerkung: Ich habe deine Änderungen vorerst rückgängig gemacht, bis sie mit Quellen belegt sind. --Didia (Diskussion) 11:18, 19. Mai 2016 (CEST)
http://www.hs-weingarten.de/~keller/Downloads/syso/vorlesung/skript2005.pdf , S.35ff , von Prof.Dr. Keller
2.7  Prozesse in [Windows] NT
* Ein Prozess wird in NT als Systemobjekt mit Eigenschaften ( Objektattribute ) und Methoden, die
von der Objektklasse „Process“ geerbt werden, realisiert. Zugriffe des Systems auf einen Prozess
erfolgt damit nur über die implementierten Methoden der Objektklasse.
* Das Scheduling erfolgt nur über Threads. Damit muss ein Prozess mindestens einen Thread besitzen,
damit er lauffähig ist.
* Ein Prozess kann über die Systemfunktion CreateProcess() dynamische zur Laufzeit mehrere
Threads erzeugen.
* Zwischen Prozessen besteht keine Vater/Sohn-Beziehung wie in UNIX. Für jeden Prozess wird
ein Systemobjekt angelegt, in dem die Eigenschaften des aktuellen Prozesses gespeichert sind.
* Jeder Prozess besitzt einen eigenen geschützten virtuellen Adreßraum von 4 GByte.
Gilt weitgehend für alle nachfolgenden Windows-Versionen (2000, XP, Vista, 7, 8, 10).
--arilou (Diskussion) 11:29, 19. Mai 2016 (CEST)
Nach allem kommst du jetzt mit Verlesungsnotizen von einer Fachhochschule aus dem Jahr 2005?! Das kann jetzt nicht dein Ernst sein...
Ich zitiere mal einige wichtige Punkte aus WP:Belege:
  • In Wikipedia-Artikeln sollen Belege angegeben werden (Belegpflicht).
  • Wikipedia-Artikel sollen sich nur auf zuverlässige Publikationen stützen (Glaubwürdigkeit).
  • Belege in Wikipedia-Artikeln sollen die Nachprüfbarkeit von Informationen gewährleisten.
  • Artikel sollen nur überprüfbare Informationen aus zuverlässiger Literatur enthalten.
  • Wikipedia-Artikel sollen gut gesichertes, etabliertes Wissen enthalten, mit dem Ziel, den aktuellen Kenntnisstand darzustellen. Grundsätzlich sind daher wissenschaftliche Publikationen, insbesondere Standardwerke, begutachtete Veröffentlichungen und systematische Übersichtsarbeiten, die für das Fachgebiet des jeweiligen Lemmas relevant sind, zu bevorzugen.
  • Damit keine veralteten oder überholten Informationen in Wikipedia eingearbeitet werden, sollten möglichst aktuelle Ausgaben Verwendung finden.
Ich habe mit Tanenbaum DAS Standardwerk im Bereich Betriebssysteme verwendet und die aktuelle Ausgabe von Mandls Buch eingearbeitet. Ersteres ist zwar schon etwas veraltet (2009), letzteres aber ziemlich aktuell (2014). Ausserdem sind das Bucher, die von anerkannten Wissenschaftsverlagen herausgegeben wurden, also auch eine intensive redaktionelle Bearbeitung erfuhren. Die Kriterien sind also damit erfüllt. Und jetzt kommst du mit Vorlesungsnotizen aus dem Jahr 2005...
--Didia (Diskussion) 12:03, 19. Mai 2016 (CEST)

Ich finde die Einleitung zu kompliziert und nicht allgemeinverständlich. Gemäß dem Konsens in der Wikipedia ist es erstrebenswert, dass zumindest die Einleitung von einem durchschnittlich gebildeten Erwachsenen ohne Fachkenntnis verstanden wird. Vor allem der Abschnitt "Im Multiprogramming weist das Betriebssystem jedem Prozess einen virtuellen Prozessor zu. ..." wirft mit so vielen Begriffen um sich, dass der nicht Fachkundige erstmal nur Bahnhof versteht. z.B. Der Begriff "virtueller Prozessor" ist nicht erklärt. Die Wikilinks verweisen nur auf die allgemeinen Bedeutungen von "Virtualität" und "Prozessor", usw. Generell muss man beachten, dass man Formulierungen aus Fachbüchern nicht 1:1 für die Wikipedia taugen, denn Fachbücher haben eine andere Zielgruppe als eine Enzyklopädie. Es ist empfehlenswert, den Inhalt in eigenen Worten wiederzugeben, anstatt nur die Formulierungen aus den Fachbüchern etwas umzustellen und ansonsten unverändert in die Wikipedia zu schreiben. So kann es schnell passieren, dass der Artikel mehr wie Flickenteppich aus unterschiedlichen Formulierungen wirkt. Ich würde die Einleitung etwas kürzen und auf das wesentliche herunterbrechen. --TheRandomIP (Diskussion) 13:06, 19. Mai 2016 (CEST)

Habe die Einleitung einmal stark ausgedünnt. Zusätzlich ist mir noch aufgefallen, dass das Kapitel "Scheduling" stark mit dem Kapitel "Multiprogramming und Multitasking" verwandt ist, da ein unterbrechendes Scheduling ja automatisch zu Multitasking führt. Das sind ja nur unterschiedliche Betrachtungsweisen desselben Konzeptes. In der enWP ist das z.B. in einem Kapitel "Multitasking and process management" zusammengefasst. Das wäre noch ein Hinweis zur Vereinfachung des Artikels. --TheRandomIP (Diskussion) 13:36, 19. Mai 2016 (CEST)
Das ist sicher schon besser so. Ich persönlich würde in der Einleitung ja noch mehr vereinfachen. Aber dann würde natürlich wieder die übliche Kritik hereinbrechen (auch wenn die nachfolgenden Abschnitte dann Ausführlicher und belegt darauf eingehen).
Ich verstehe jetzt nur nicht, warum in der Einleitung Windows so explizit hervorgehoben werden muss. Ich würde nur schreiben Letzteres ist die vorherrschende Scheduling-Strategie heutiger Betriebssysteme. Ich halte es grundsätzlich für wichtig, dass die Erklärung bis zu einem gewissen Grad allgemein gehalten ist, und nicht, dass man versucht, Windows-Standards hier in der WP als allgemeine OS-Standards durchzubringen.
Der Abschnitt „Multiprogramming und Multitasking“ ist ja ebenfalls auf Arilous Kritik hin entstanden, um auch hier die Unterschiede noch besser zu verdeutlichen. Allerdings fällt dieser nun tatsächlich etwas stark ins Gewicht und könnte m.E. wieder gekürzt werden bzw. mit Scheduling zusammengeführt werden. Der Abschnitt richtet sich ja ebenfalls sehr eng an Mandl, um sich auch hier möglicher Kritik zu entziehen.
Wahrscheinlich habe ich mich aber einfach zu sehr auf Arilous Kritik eingelassen, die ich aber nach dessen letztem Post ganz sicher nicht mehr ernst nehmen kann. Das nächste Mal werde ich aber einfach eine Vandalismusmeldung machen, wenn der wieder mit seinen unbelegten Änderungen daherkommt. Mit konstruktiver Artikeltätigkeit hat das ja nichts mehr zu tun...
--Didia (Diskussion) 14:11, 19. Mai 2016 (CEST)
Stimmt, in der Einleitung kann das auch noch allgemein gehalten werden. --TheRandomIP (Diskussion) 14:54, 19. Mai 2016 (CEST)
Gefällt mir im Wesentlichen. Ich habe noch versucht, ein paar unrunde Stellen zu polieren. Ein Abschnitt zu Prozesseigentümern und deren Prozessrechten fehlt jetzt noch, oder? --H3xc0d3r (Diskussion) 16:12, 27. Mai 2016 (CEST)
Danke. Ja, das müsste mal noch ergänzt werden. Ausserdem fehlt noch ein Verweis auf die Interprozesskommunikation. Allredings ist der Artikel dort nur bedingt brauchbar... --Didia (Diskussion) 12:54, 29. Mai 2016 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Didia (Diskussion) 16:45, 25. Nov. 2016 (CET)

Forkbomb

Die Erzeugung neuer Kindprozesse erfolgt im Beispielcode iterativ mit einer while()-Schleife, daher sollte rekursiv in der Beschreibung m.E. besser begründet bzw. erläutert, oder durch iterativ ersetzt werden. Die Rekursion kommt ja nur dadurch zustande, dass das Betriebssystem die iterativ erzeugten Kindprozesse anschließend startet. Wenn der Mechanismus nicht vollständig beschrieben wird, schafft es wohl mehr Verwirrung als das es nützt.--H3xc0d3r (Diskussion) 14:16, 17. Aug. 2016 (CEST)

Danke für den Hinweis. Ich habe die Formulierung mal überarbeitet. Ich hoffe, es passt so... --Didia (Diskussion) 17:54, 10. Okt. 2016 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Didia (Diskussion) 16:45, 25. Nov. 2016 (CET)

Thread vs Prozess

Hier wurde es so geschrieben als wären Threads und Prozesse klar trennbar. Aber ist in der Praxis nicht so. Sowohl können Threads eigene Speicherbereiche haben als auch verschiedene Prozesse gewissen gemeinsamen Speicher haben, oder gemeinsam genutzte Dateizugriffe. Auf Kernelebene wird oft nicht gross zwischen Thread und Prozess unterschieden, z.b. auf Linux haben verschiedene Threads die selbe PID wenn sie zu einem Prozess gehören, während jeder Prozess seine eigene PID hat, sonst unterscheidet sich da nichts zwischen einem thread und einem Prozess. Auch kann ich die Aussage "In vielen Systemen läuft die Erstellung eines Threads 10-100-mal schneller ab als die Erstellung eines Prozesses." nicht bestätigen, auf den meisten mir bekannten Systeme dauert die Erstellung eines neuen Threads fast genau so lange wie die eines neuen Prozess, eine populäre Ausnahme stellt Windows dar. 84.55.243.164 (16:02, 25. Aug. 2016 (CEST), Datum/Uhrzeit nachträglich eingefügt, siehe Hilfe:Signatur)

Das sehe ich anders: Der wesentliche Unterschied besteht eben darin, dass Prozess über einen eigenen Speicherbereich verfügen, während sich alle (zum gleichen Prozess gehörenden) Threads den (Prozess-)Speicherbereich teilen. Jeder Prozess hat seinen eigenen Programmcode im Hauptspeicher und einen einzigen Ausführungspfad. Wenn wir uns nun vorstellen, dass mehrere Prozesse desselben Programmcodes zusammengelegt werden, so dass sie über einen gemeinsamen Adressraum, aber über jeweils einen eigenen Ausführungspfad verfügen, dann haben wir das Konzept der Threads. Wenn ein Prozess also aus mehreren Ausführungspfaden besteht, dann besteht er aus mehreren Threads.
Bei der Erstellung eines neuen Prozesses wird intern ein erheblicher Aufwand betrieben mit der Duplizierung des gesamten Namespace (etwa bei dem Systemaufruf fork()). Auch die Kommunikation der Prozesse untereinander stellt einen erheblichen Aufwand dar. Im Gegensatz zu den Prozessen laufen aber die Threads im gleichen Adressraum ab und daher steht jedem Thread Codesegment, Heap, usw. des Prozesses zur Verfügung. Dadurch entsteht beispielsweise weniger Aufwand beim Kommunizieren untereinander.
Des Weiteren gilt es zwei Arten von Thread-Realisierungen zu unterscheiden: Bei Benutzer-Threads verwaltet jeder Prozess einen eigenen privaten Thread-Kontrollblock (analog zum PCB). Der Kern hat keinerlei Kenntnis davon, ob ein Prozess mehrere Threads verwendet oder nicht. Bei Kernel-Threads dagegen verwaltet der Kern die Threads ähnlich wie schon die Prozesse. Der Kern ist hier also an der Erzeugung und Umschaltung von Threads beteiligt.
Sollten hier Ansichten vertreten werden, die von den üblichen Definitionen in der Standardliteratur abweichen, so bitte ich um Aussagen mit entsprechenden Quellenangaben. Alles andere ist wertlos und hilft bei der weiteren Artikeltätigkeit nicht weiter. Die bisherigen Aussagen sind gut belegt. --Didia (Diskussion) 17:44, 10. Okt. 2016 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Didia (Diskussion) 16:45, 25. Nov. 2016 (CET)