Aufgabe (Computing) - Task (computing)

Ein Beispiel- Thread-Pool (grüne Kästchen) mit Aufgabenwarteschlangen für wartende Aufgaben (blau) und abgeschlossene Aufgaben (gelb) im Sinne der Aufgabe als "Arbeitseinheit".

Beim Rechnen ist eine Aufgabe eine Ausführungseinheit oder eine Arbeitseinheit. Der Begriff ist mehrdeutig; Zu den genauen alternativen Begriffen gehören Prozess , leichter Prozess , Thread (zur Ausführung), Schritt , Anforderung oder Abfrage (zur Arbeit). Im nebenstehenden Diagramm gibt es Warteschlangen für eingehende und ausgehende abgeschlossene Arbeiten sowie einen Thread-Pool von Threads, um diese Arbeiten auszuführen. Entweder die Arbeitseinheiten selbst oder die Threads, die die Arbeit ausführen, können als "Aufgaben" bezeichnet werden, und diese können jeweils als Anforderungen / Antworten / Threads, eingehende Aufgaben / abgeschlossene Aufgaben / Threads (wie dargestellt) oder Anforderungen / bezeichnet werden. Antworten / Aufgaben.

Terminologie

Im Sinne von "Ausführungseinheit" ist eine Aufgabe in einigen Betriebssystemen gleichbedeutend mit einem Prozess und in anderen mit einem Thread . Bei der nicht interaktiven Ausführung ( Stapelverarbeitung ) ist eine Aufgabe eine Ausführungseinheit innerhalb eines Jobs , wobei die Aufgabe selbst normalerweise ein Prozess ist. Der Begriff „ Multitasking “ bezieht sich in erster Linie auf die Verarbeitung Sense - mehrere Aufgaben ausführt zugleich - hat aber Nuancen der Arbeit Sinn mehrerer Aufgaben wird durchgeführt in der gleichen Zeit.

Im Sinne von "Arbeitseinheit" kann eine Aufgabe in einem Job (dh "einmalige Arbeit") einem einzelnen Schritt entsprechen (dem Schritt selbst, nicht dessen Ausführung), während dies bei der Stapelverarbeitung einzelne Aufgaben können entsprechen einem einzelnen Schritt der Verarbeitung eines einzelnen Artikels in einer Charge oder einem einzelnen Schritt der Verarbeitung aller Artikel in der Charge. In Online-Systemen entsprechen Aufgaben am häufigsten einer einzelnen Anforderung (in Anforderungs-Antwort- Architekturen) oder einer Abfrage (beim Abrufen von Informationen ), entweder einer einzelnen Bearbeitungsstufe oder der gesamten systemweiten Verarbeitung.

Beispiele

In der Programmiersprache Java werden diese beiden Konzepte (Arbeitseinheit und Ausführungseinheit) bei der direkten Arbeit mit Threads zusammengeführt, im Executors- Framework jedoch klar voneinander unterschieden :

Wenn Sie direkt mit Threads arbeiten, Threaddient a sowohl als Arbeitseinheit als auch als Mechanismus für deren Ausführung. Im Executor-Framework sind die Arbeitseinheit und der Ausführungsmechanismus getrennt. Die Schlüsselabstraktion ist die Arbeitseinheit, die als Aufgabe bezeichnet wird .

IBM Terminologie

Die Verwendung des Begriffs durch IBM war einflussreich, unterstreicht jedoch die Mehrdeutigkeit des Begriffs. In der IBM-Terminologie hat "Aufgabe" Dutzende spezifischer Bedeutungen, darunter:

  • Eine Arbeitseinheit, die einen der Schritte in einem Prozess darstellt.
  • Eine Arbeitseinheit, die von einem Gerät oder Prozess ausgeführt werden soll.
  • Ein Prozess und die Prozeduren, mit denen der Prozess ausgeführt wird.
  • Eine Reihe von Maßnahmen, mit denen ein bestimmtes Ergebnis erzielt werden soll. Eine Aufgabe wird an einer Reihe von Zielen nach einem bestimmten Zeitplan ausgeführt.
  • Eine Recheneinheit. In einem parallelen Job arbeiten zwei oder mehr gleichzeitige Aufgaben durch Nachrichtenübermittlung und gemeinsam genutzten Speicher zusammen. Obwohl es üblich ist, eine Aufgabe pro physischem oder logischem Prozessor zuzuweisen, sind die Begriffe "Aufgabe" und "Prozessor" nicht austauschbar.
  • Eine Aktivität mit geschäftlichem Wert wird von einem Benutzer initiiert und von der Software ausgeführt.

In z / OS ist es genau definiert als:

  • "In einer Multiprogrammier- oder Multiprozessor-Umgebung werden eine oder mehrere Folgen von Anweisungen von einem Steuerprogramm als ein Element der Arbeit behandelt, das von einem Computer ausgeführt werden muss."

Der Begriff Aufgabe in OS / 360 bis z / OS entspricht in etwa dem Prozess mit geringem Gewicht. Die Aufgaben in einem Jobschritt teilen sich einen Adressraum. In MVS / ESA über z / OS kann eine Aufgabe oder ein Service Request Block (SRB) über ihre Zugriffsliste Zugriff auf andere Adressräume haben.

Linux Kernel

Der Begriff Aufgabe wird im Linux-Kernel (mindestens seit Version 2.6.13 bis einschließlich Version 4.8) verwendet, um sich auf eine Ausführungseinheit zu beziehen, die verschiedene Systemressourcen mit anderen Aufgaben auf dem System gemeinsam nutzen kann. Abhängig von der Freigabeebene kann die Aufgabe als herkömmlicher Thread oder Prozess betrachtet werden . Aufgaben werden mithilfe des clone()Systemaufrufs eingerichtet, bei dem ein Benutzer die gewünschte Ebene für die gemeinsame Nutzung von Ressourcen angeben kann.

Geschichte

Der Begriff Aufgabe für einen Teil eines Jobs stammt aus der Multiprogrammierung in den frühen 1960er Jahren, wie in diesem Beispiel aus dem Jahr 1961:

Das serielle Modell bietet die Möglichkeit, Aufgaben eines Jobs auf unabhängige Weise zu verarbeiten, ähnlich wie bei IBM 709 .

Der Begriff wurde mit der Einführung von OS / 360 (angekündigt 1964) populär , das Multiprogrammieren mit einer festen Anzahl von Aufgaben (MFT) und Multiprogrammieren mit einer variablen Anzahl von Aufgaben (MVT) beinhaltete. In diesem Fall wurden Aufgaben mit leichten Prozessen identifiziert, ein Job bestand aus einer Reihe von Aufgaben, und später konnten Aufgaben Unteraufgaben haben (in der modernen Terminologie untergeordnete Prozesse ).

Der Begriff "Aufgabe" wird heute sehr vieldeutig verwendet. Beispielsweise verwaltet der Windows Task-Manager Prozesse (während er ausgeführt wird) , während der Windows Task-Scheduler die zukünftige Ausführung von Programmen plant , die traditionell als Job Scheduler bezeichnet werden , und die .jobErweiterung verwendet. Im Gegensatz dazu wird der Begriff " Aufgabenwarteschlange " üblicherweise im Sinne von "Arbeitseinheiten" verwendet.

Siehe auch

Verweise