Stark mehrbeanspruchender Computer

In der Computerwissenschaft ist das Mehrbeschäftigen eine Methode, wo vielfache Aufgaben, auch bekannt als Prozesse, während derselben Zeitspanne durchgeführt werden. Die Aufgaben teilen allgemeine in einer Prozession gehende Mittel, wie eine Zentraleinheit und Hauptgedächtnis. Im Fall von einem Computer mit einer einzelnen Zentraleinheit, wie man sagt, läuft nur eine Aufgabe an jedem Punkt rechtzeitig, bedeutend, dass die Zentraleinheit Instruktionen für diese Aufgabe aktiv durchführt.

Das Mehrbeschäftigen behebt das Problem durch die Terminplanung, welche Aufgabe diejenige sein kann, die zu jeder vorgegebenen Zeit läuft, und wenn eine andere wartende Aufgabe eine Umdrehung bekommt. Die Tat, eine Zentraleinheit von einer Aufgabe bis einen anderen wiederzuzuteilen, wird einen Zusammenhang-Schalter genannt.

Wenn Zusammenhang-Schalter oft genug vorkommen, wird das Trugbild des Parallelismus erreicht.

Sogar auf Computern mit mehr als einer Zentraleinheit (genannt Mehrverarbeiter-Maschinen) erlaubt das Mehrbeschäftigen noch vielen Aufgaben, geführt zu werden, als es gibt Zentraleinheiten. Der Begriff "Mehrbeschäftigen" ist ein internationaler Begriff, als dasselbe Wort auf vielen anderen Sprachen wie Deutsch, Italienisch, Niederländisch, Dänisch und Norwegisch geworden.

Betriebssysteme können eine von vielen verschiedenen Terminplanungsstrategien annehmen, die allgemein in die folgenden Kategorien fallen:

  • In der Mehrprogrammierung von Systemen setzt die laufende Aufgabe fort zu laufen, bis es eine Operation durchführt, die das Warten für ein Außenereignis verlangt (z.B von einem Band lesend), oder bis der Planer des Computers gewaltsam die laufende Aufgabe aus der Zentraleinheit tauscht. Mehrprogrammiersysteme werden entworfen, um Zentraleinheitsgebrauch zu maximieren.
  • In Time-Sharing-Systemen ist die laufende Aufgabe erforderlich, die Zentraleinheit entweder freiwillig oder durch ein Außenereignis wie eine Hardware-Unterbrechung aufzugeben. Time-Sharing-Systeme werden entworfen, um mehreren Programmen zu erlauben, anscheinend gleichzeitig durchzuführen. Der Ausdruck 'Time-Sharing' wurde gewöhnlich verwendet, um Computer zu benennen, die von interaktiven Benutzern an Terminals, wie TSO von IBM und VM/CMS geteilt sind
  • In Realtime Systeme, wie man versichert, werden einige Warten-Aufgaben die Zentraleinheit gegeben, wenn ein Außenereignis vorkommt. Echtzeitsysteme werden entworfen, um mechanische Geräte wie Industrieroboter zu kontrollieren, die rechtzeitige Verarbeitung verlangen.

Der Begriff Time-Sharing wird nicht mehr allgemein gebraucht, ersetzt, indem er einfach, und durch das Advent von Personalcomputern und Arbeitsplätzen stark mehrbeansprucht wird, aber nicht hat interaktive Systeme geteilt.

Mehrprogrammierung

In den frühen Tagen der Computerwissenschaft war Zentraleinheitszeit teuer, und Peripherie war sehr langsam. Als der Computer ein Programm geführt hat, das Zugang zu einem peripherischen gebraucht hat, würde die In einer Prozession gehende Haupteinheit (CPU) aufhören müssen, Programm-Instruktionen durchzuführen, während das peripherische die Daten bearbeitet hat. Das wurde sehr ineffizient gehalten.

Der erste Computer mit einem Mehrprogrammiersystem war die britische Löwe III besessen von J. Lyons and Co.. Mehrere verschiedene Programme in der Gruppe wurden im Computergedächtnis geladen, und der erste hat begonnen zu laufen. Als das erste Programm eine Instruktion erreicht hat, die auf einen peripherischen wartet, wurde der Zusammenhang dieses Programms weg versorgt, und das zweite Programm im Gedächtnis wurde eine Chance gegeben zu laufen. Der Prozess hat weitergegangen, bis alle Programme beendet haben zu laufen.

Mehrprogrammierung gibt keine Garantie, dass ein Programm auf eine rechtzeitige Weise laufen wird. Tatsächlich kann das allererste Programm sehr gut seit Stunden laufen, ohne Zugang zu einem peripherischen zu brauchen. Da es keine Benutzer gab, die an einem interaktiven Terminal warten, war das kein Problem: Benutzer haben in einem Deck von geschlagenen Karten einem Maschinenbediener gereicht, und sind ein paar Stunden später für gedruckte Ergebnisse zurückgekommen. Die Mehrprogrammierung von außerordentlich reduzierten Liegezeiten, als vielfache Gruppen bearbeitet wurden.

Kooperativ stark zu mehrzubeanspruchen/Time-Sharing

Als sich Computergebrauch von der Gruppe-Weise bis interaktive Weise entwickelt hat, war Mehrprogrammierung nicht mehr eine passende Annäherung. Jeder

Benutzer hat sein Programm sehen wollen laufen, als ob es das einzige Programm im Computer war. Der Gebrauch des Time-Sharings hat das möglich mit der Qualifikation gemacht, dass der Computer so schnell keinem Benutzer scheinen würde, wie es wirklich sein würde, wenn es nur dass das Programm des Benutzers liefe.

Früh das Mehrbeschäftigen von Systemen hat Anwendungen verwendet, die freiwillig Zeit einander abgetreten haben. Diese Annäherung, die schließlich durch vielen Computer Betriebssysteme unterstützt wurde, ist heute als das kooperative Mehrbeschäftigen bekannt. Obwohl es jetzt in größeren Systemen selten verwendet wird, war das kooperative Mehrbeschäftigen einmal das Terminplanungsschema, das durch Windows von Microsoft (vor Windows 95 und Windows NT) und Mac OS verwendet ist (vor Mac OS X), um vielfachen Anwendungen zu ermöglichen, gleichzeitig geführt zu werden. Windows 9x hat auch das kooperative Mehrbeschäftigen verwendet, aber nur für 16-Bit-Vermächtnis-Anwendungen ziemlich gleicher Weg als Vorleopard haben Versionen von PowerPC von Mac OS X es für Klassische Anwendungen verwendet. Das Netz Betriebssystem NetWare hat das kooperative Mehrbeschäftigen bis zu NetWare 6.5 verwendet. Das kooperative Mehrbeschäftigen wird noch heute auf RISC OS Systeme verwendet.

Weil sich ein kooperativ stark mehrbeanspruchtes System auf jeden Prozess verlässt, regelmäßig Zeit zu anderen Prozessen auf dem System aufgebend, kann ein schlecht bestimmtes Programm die ganze Zentraleinheitszeit für sich verbrauchen oder das ganze System veranlassen zu hängen. In einer Server-Umgebung ist das eine Gefahr, die das komplette Netz spröde und zerbrechlich macht. Die ganze Software muss bewertet und für den Gebrauch in einem Testumfeld geklärt werden, bevor sie auf dem Hauptserver installiert wird, oder ein sich schlecht benehmendes Programm auf dem Server verlangsamt sich oder friert das komplette Netz ein.

Trotz der Schwierigkeit, kooperativ stark mehrbeanspruchte Systeme zu entwickeln und durchzuführen, werden zeitgezwungene, schritthaltende eingebettete Systeme (wie Raumfahrzeug) häufig mit diesem Paradigma durchgeführt. Das erlaubt hoch zuverlässige, deterministische Kontrolle von komplizierten Echtzeitfolgen, zum Beispiel, der Zündung von Trägerraketen für tiefe Raumkurs-Korrekturen.

Präemptive Multitasking/time-sharing

Präemptive Multitasking erlaubt dem Computersystem, mehr zuverlässig jeden Prozess eine regelmäßige "Scheibe" der Betriebszeit zu versichern. Es erlaubt auch dem System, sich schnell mit wichtigen Außenereignissen wie eingehende Daten zu befassen, die die unmittelbare Aufmerksamkeit von einer oder einem anderen Prozess verlangen könnten.

Betriebssysteme wurden entwickelt, um diese Hardware-Fähigkeiten auszunutzen und vielfache Prozesse Vorkaufs-zu führen. Zum Beispiel wurde präemptive Multitasking in der frühsten Version von Unix 1969 durchgeführt, und ist in Unix und Unix-like Betriebssysteme, einschließlich Linux, Solaris und BSD mit seinen Ableitungen normal.

In jeder spezifischen Zeit können Prozesse in zwei Kategorien gruppiert werden: Diejenigen, die auf den Eingang oder die Produktion (genannt "Eingabe/Ausgabe gebunden"), und diejenigen warten, die die Zentraleinheit ("Zentraleinheit gebunden") völlig verwerten. In primitiven Systemen würde die Software häufig, oder "busywait" "abstimmen", während sie auf den gebetenen Eingang (wie Platte, Tastatur oder Netzeingang) wartet. Während dieser Zeit führte das System nützliche Arbeit nicht durch. Mit dem Advent von Unterbrechungen und präemptiver Multitasking hat Eingabe/Ausgabe gebunden Prozesse konnten "blockiert" oder angezogen werden halten während der Ankunft der notwendigen Daten, anderen Prozessen erlaubend, die Zentraleinheit zu verwerten. Da die Ankunft der gebetenen Daten eine Unterbrechung erzeugen würde, konnten blockierte Prozesse eine rechtzeitige Rückkehr zur Ausführung versichert werden.

Der frühste für Hausbenutzer verfügbare OS der präemptiven Multitasking war Sinclair QDOS auf dem Sinclair QL, befreit 1984, aber sehr wenige Menschen haben die Maschine gekauft. Mächtiger Amiga des Kommodores, befreit im nächsten Jahr, war der erste gewerblich erfolgreiche Hauscomputer, um die Technologie zu verwenden, und seine multimedialen geistigen Anlagen machen es einen klaren Vorfahren von zeitgenössischen stark mehrbeanspruchenden Personalcomputern. Microsoft hat präemptive Multitasking eine Kerneigenschaft ihres Flaggschiffs Betriebssystem am Anfang der 1990er Jahre gemacht, als es Windows NT 3.1 und dann Windows 95 entwickelt hat. Es wurde später auf dem Apple Macintosh von Mac OS 9.x als eine zusätzliche API angenommen, d. h. die Anwendung konnte programmiert werden, um das kooperative oder Vorkaufsmodell zu verwenden, und alle Vermächtnis-Anwendungen wurden kooperativ innerhalb eines einzelnen Prozesses stark mehrbeansprucht. Mac OS X, ein Unix ähnliches System seiend, verwendet präemptive Multitasking für alle heimischen Anwendungen, obwohl Klassische Anwendungen kooperativ in einem Mac OS 9 Umgebung stark mehrbeansprucht werden, die selbst als ein OS X Prozess läuft (und dem Vorkaufsrecht wie jeder andere OS X Prozess unterworfen ist).

Ein ähnliches Modell wird in Windows 9x und der Familie des Windows NT verwendet, wo heimische 32-Bit-Anwendungen Vorkaufs-stark mehrbeansprucht werden, und Vermächtnis-16-Bit-Programme des Windows 3.x kooperativ innerhalb eines einzelnen Prozesses stark mehrbeansprucht werden, obwohl in der NT Familie es möglich ist, eine 16-Bit-Anwendung zu zwingen, als ein getrennter Vorkaufs-stark mehrbeanspruchter Prozess zu laufen. 64-Bit-Ausgaben von Windows, sowohl für den x86-64 als auch für die Architekturen von Itanium, stellen nicht mehr Unterstützung für Vermächtnis-16-Bit-Anwendungen zur Verfügung, und stellen so präemptive Multitasking für alle unterstützten Anwendungen zur Verfügung.

Echtzeit

Ein anderer Grund für das Mehrbeschäftigen war im Design von Echtzeitrechensystemen, wo es mehrere vielleicht Außentätigkeiten ohne Beziehung gibt, musste von einem einzelnen Verarbeiter-System kontrolliert werden. In solchen Systemen wird ein hierarchisches Unterbrechungssystem mit der Prozess-Priorisierung verbunden, um sicherzustellen, dass Schlüsseltätigkeiten ein größerer Anteil der verfügbaren Bearbeitungszeit gegeben wurden.

Nebenläufigkeit

So das Mehrbeschäftigen hat außerordentlich den Durchfluss von Computern verbessert, Programmierer haben angefangen, Anwendungen durchzuführen, wie Sätze von zusammenarbeitenden Prozessen (zum Beispiel, ein Prozess, der Eingangsdaten, ein Prozess sammelt, der Eingangsdaten, ein Prozess bearbeitet, der Ergebnisse auf der Platte ausschreibt). Das hat jedoch verlangt, dass einige Werkzeuge Prozessen erlaubt haben, Daten effizient auszutauschen.

Fäden sind von der Idee geboren gewesen, dass der effizienteste Weg für zusammenarbeitende Prozesse, um Daten auszutauschen, ihren kompletten Speicherraum würde teilen sollen. So sind Fäden grundsätzlich Prozesse, die in demselben Speicherzusammenhang laufen. Fäden werden als Leichtgewichtler beschrieben, weil die Schaltung zwischen Fäden mit dem Ändern des Speicherzusammenhangs nicht verbunden ist.

Während Fäden Vorkaufs-auf dem Plan stehen, stellen einige Betriebssysteme eine Variante Fäden, genannt Fasern zur Verfügung, die kooperativ auf dem Plan stehen. Auf Betriebssystemen, die Fasern nicht zur Verfügung stellen, kann eine Anwendung seine eigenen Fasern mit wiederholten Anrufen zu Arbeiter-Funktionen durchführen. Fasern sind noch leichter als Fäden, und zum Programm damit etwas leichter, obwohl sie dazu neigen, einige oder alle Vorteile von Fäden auf Maschinen mit vielfachen Verarbeitern zu verlieren.

Einige Systeme unterstützen direkt Nebenläufigkeit in der Hardware.

Speicherschutz

Wenn vielfache Programme im Gedächtnis da sind, kann ein unartiges Programm (unachtsam, oder absichtlich) überschreiben Gedächtnis, das einem anderen Programm, oder sogar dem Betriebssystem selbst gehört.

Das Betriebssystem schränkt deshalb das für das laufende Programm zugängliche Gedächtnis ein. Ein Programm, das versucht, auf Gedächtnis außerhalb seiner erlaubten Reihe zuzugreifen, wird sofort angehalten, bevor es Gedächtnis ändern kann, das einem anderen Prozess gehört.

Eine andere Schlüsselneuerung war die Idee von Vorzug-Niveaus. Niedrigen Vorzug-Aufgaben werden einige Arten des Speicherzugangs nicht erlaubt und wird nicht erlaubt, bestimmte Instruktionen durchzuführen. Wenn eine Aufgabe versucht, eine privilegierte Operation durchzuführen, kommt eine Falle vor, und einem Aufsichtsprogramm, das an einem höheren Niveau läuft, wird erlaubt zu entscheiden, wie man antwortet.

Tauschendes Gedächtnis

Gebrauch einer Tausch-Datei oder Tausch-Teilung sind ein Weg für das Betriebssystem, um mehr Gedächtnis zur Verfügung zu stellen, als durch das Halten von Teilen des primären Gedächtnisses in der sekundären Lagerung physisch verfügbar ist. Während stark mehrzubeanspruchen, und tauschendes Gedächtnis zwei Techniken völlig ohne Beziehung ist, werden sie sehr häufig zusammen verwendet, weil tauschendes Gedächtnis mehr Aufgaben erlaubt, zur gleichen Zeit geladen zu werden. Gewöhnlich erlaubt ein stark mehrbeanspruchendes System einem anderen Prozess zu laufen, wenn der laufende Prozess einen Punkt schlägt, wo es auf einen Teil des von der sekundären Lagerung umzuladenden Gedächtnisses warten muss.

Die Programmierung in einer stark mehrbeanspruchenden Umgebung

Prozesse, die völlig unabhängig sind, sind nicht viel Schwierigkeiten zum Programm. Der grösste Teil der Kompliziertheit im Mehrbeschäftigen von Systemen kommt aus dem Bedürfnis, Computermittel zwischen Aufgaben zu teilen und die Operation von zusammenarbeitenden Aufgaben zu synchronisieren.

Verschiedene gleichzeitige Rechentechniken werden verwendet, um potenzielle Probleme zu vermeiden, die durch vielfache Aufgaben verursacht sind, die versuchen, auf dieselbe Quelle zuzugreifen.

Größere Systeme wurden manchmal mit einem zentralen Verarbeiter (N) und einer Zahl von Eingabe/Ausgabe-Verarbeitern, einer Art asymmetrischer Mehrverarbeitung gebaut.

Im Laufe der Jahre sind stark mehrbeanspruchende Systeme raffiniert worden. Moderne Betriebssysteme schließen allgemein ausführlich berichtete Mechanismen für Prioritizing-Prozesse ein, während symmetrische Mehrverarbeitung neue Kompliziertheiten und Fähigkeiten eingeführt hat.

Siehe auch

  • Prozess
  • Prozess setzt fest
  • Bearbeitungszeit
  • Aufgabe

Zeichen


Chomsky (Nachname) / Chiang Kai-Shek
Impressum & Datenschutz