{"id":32158,"date":"2019-10-31T21:45:27","date_gmt":"2019-10-31T18:45:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod\/"},"modified":"2019-10-31T21:45:27","modified_gmt":"2019-10-31T18:45:27","slug":"operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod","title":{"rendered":"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Einf\u00fchrung in Betriebssysteme<\/h1>\n<p>\nHallo, Habr! Ich m\u00f6chte euch eine Serie von \u00dcbersetzungen einer interessanten Literatur vorstellen \u2014 OSTEP. In diesem Material wird die Funktionsweise von unix\u00e4hnlichen Betriebssystemen recht tiefgehend behandelt, insbesondere die Arbeit mit Prozessen, verschiedenen Planern, Speicher und anderen \u00e4hnlichen Komponenten, die ein modernes Betriebssystem ausmachen. Das Original aller Materialien k\u00f6nnt ihr hier ansehen <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">hier<\/a><\/noindex>. Bitte beachtet, dass die \u00dcbersetzung nicht professionell (recht frei) durchgef\u00fchrt wurde, aber ich hoffe, dass ich die allgemeine Bedeutung erhalten habe.<\/p>\n<p>Die Laborarbeiten zu diesem Thema findet ihr hier:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">Original<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">Original<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">meine pers\u00f6nliche Anpassung<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nWeitere Teile:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Teil 1: Einf\u00fchrung<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446866\/\">Teil 2: Abstraktion: Prozess<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/447182\/\">Teil 3: Einf\u00fchrung in die API von Prozessen<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/449026\/\">Teil 4: Einf\u00fchrung in den Planer<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nIhr k\u00f6nnt auch mal auf meinen Kanal in <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">Telegram<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Einf\u00fchrung in den Scheduler<\/h2>\n<p>\n<u>Das Problem im Kern: Wie entwickelt man eine Scheduler-Politik?<br \/>\nWie sollten grundlegende Frameworks f\u00fcr Scheduler-Politiken entwickelt werden? Was sind die wesentlichen Annahmen? Welche Metriken sind wichtig? Welche grundlegenden Techniken wurden in fr\u00fcheren Rechensystemen verwendet?<\/u><\/p>\n<h3>Annahmen zur Arbeitslast<\/h3>\n<p>\n Bevor wir m\u00f6gliche Politiken diskutieren, lassen Sie uns zun\u00e4chst einige vereinfachende \u00dcberlegungen zu den Prozessen anstellen, die im System laufen und zusammen als <b>Arbeitslast<\/b>bezeichnet werden. Eine klare Definition der Arbeitslast ist entscheidend f\u00fcr die Entwicklung von Politiken, und je mehr Sie \u00fcber die Arbeitslast wissen, desto besser k\u00f6nnen Sie eine qualitativ hochwertige Politik formulieren.<\/p>\n<p>Lassen Sie uns folgende Annahmen \u00fcber die im System laufenden Prozesse treffen, die manchmal auch als <b>jobs<\/b> (Tasks) bezeichnet werden. Praktisch alle diese Annahmen sind unrealistisch, aber sie sind notwendig, um den Gedankengang zu f\u00f6rdern.<\/p>\n<ol>\n<li> Jeder Task l\u00e4uft die gleiche Zeit lang,<\/li>\n<li> Alle Tasks werden gleichzeitig gestartet,<\/li>\n<li> Ein gestarteter Task l\u00e4uft bis zu seinem Abschluss,<\/li>\n<li> Alle Tasks nutzen nur die CPU,<\/li>\n<li> Die Bearbeitungszeit jeder Aufgabe ist bekannt.<\/li>\n<\/ol>\n<h3>Scheduler-Metriken<\/h3>\n<p>\n Neben einigen Annahmen zur Last ben\u00f6tigen wir auch ein Werkzeug zum Vergleich verschiedener Scheduling-Politiken: die Scheduler-Metriken. Eine Metrik ist lediglich ein Ma\u00df f\u00fcr etwas. Es gibt eine Reihe von Metriken, die verwendet werden k\u00f6nnen, um Scheduler zu vergleichen.<\/p>\n<p>Als Beispiel verwenden wir eine Metrik, die genannt wird <b>Bearbeitungszeit<\/b> (turnaround time). Die Bearbeitungszeit einer Aufgabe wird als Differenz zwischen dem Abschlusszeitpunkt der Aufgabe und dem Zeitpunkt, an dem die Aufgabe im System ankommt, definiert.<\/p>\n<p><u>Tturnaround = Tcompletion \u2212 Tarrival<\/u><\/p>\n<p>Da wir angenommen haben, dass alle Aufgaben zur gleichen Zeit eingegangen sind, ist Ta = 0 und somit Tt = Tc. Dieser Wert wird sich nat\u00fcrlich \u00e4ndern, wenn wir die obigen Annahmen anpassen.<\/p>\n<p>Eine andere Metrik ist <b>Fairness<\/b> (Fairness, Gerechtigkeit). Leistung und Fairness sind oft gegens\u00e4tzliche Eigenschaften im Scheduling. Ein Scheduler kann die Leistung optimieren, jedoch auf Kosten der Wartezeit anderer Aufgaben, wodurch die Fairness verringert wird.<\/p>\n<h3>FIRST IN FIRST OUT (FIFO)<\/h3>\n<p>\n Der grundlegendste Algorithmus, den wir umsetzen k\u00f6nnen, wird FIFO oder <b>first come (in), first served (out)<\/b>. Dieser Algorithmus hat mehrere Vorteile: Er ist sehr einfach zu implementieren und erf\u00fcllt alle unsere Annahmen, w\u00e4hrend er die Aufgabe ziemlich gut erf\u00fcllt.<\/p>\n<p>Betrachten wir ein einfaches Beispiel. Angenommen, 3 Aufgaben wurden gleichzeitig eingereicht. Nehmen wir an, dass Aufgabe A etwas fr\u00fcher als die anderen eingetroffen ist, sodass sie im Ausf\u00fchrungsreihenfolge vor den anderen steht, genau wie B im Verh\u00e4ltnis zu C. Nehmen wir an, dass jede von ihnen 10 Sekunden ben\u00f6tigt. Wie w\u00e4re in diesem Fall die durchschnittliche Ausf\u00fchrungszeit dieser Aufgaben?<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/8c17c29e10ac8c2e15f5f9d865922e49.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn wir die Werte \u2014 10 + 20 + 30 zusammenz\u00e4hlen und durch 3 teilen, erhalten wir eine durchschnittliche Ausf\u00fchrungszeit des Programms von 20 Sekunden.<br \/>\n Jetzt versuchen wir, unsere Annahmen zu \u00e4ndern. Insbesondere Annahme 1, weshalb wir nicht mehr davon ausgehen, dass jede Aufgabe die gleiche Zeit ben\u00f6tigt. Wie wird sich FIFO diesmal schlagen?<\/p>\n<p>Es zeigt sich, dass unterschiedliche Ausf\u00fchrungszeiten von Aufgaben die Produktivit\u00e4t des FIFO-Algorithmus negativ beeinflussen. Angenommen, Aufgabe A ben\u00f6tigt 100 Sekunden, w\u00e4hrend B und C jeweils 10 Sekunden ben\u00f6tigen.<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/a375f3d1571f24df30f446b9bc7a9a9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Wie aus der Abbildung zu erkennen ist, ergibt sich f\u00fcr das System eine durchschnittliche Zeit von (100+110+120)\/3=110. Dieser Effekt wird genannt <b>Konvoieffekt<\/b>, wenn einige kurzzeitige Verbraucher einer Ressource hinter einem schweren Verbraucher in der Warteschlange stehen. Das ist vergleichbar mit einer Schlange im Supermarkt, wenn vor Ihnen ein Kunde mit einem vollen Einkaufswagen steht. Die beste L\u00f6sung f\u00fcr das Problem ist, an die n\u00e4chste Kasse zu wechseln oder einfach tief durchzuatmen und zu entspannen.<\/p>\n<h3>Shortest Job First<\/h3>\n<p>\n Kann man eine solche Situation mit schweren Prozessen irgendwie l\u00f6sen? Nat\u00fcrlich. Ein anderer Planungstyp wird genannt<b>Shortest Job First<\/b> (SJF). Sein Algorithmus ist ebenfalls recht primitiv \u2013 wie der Name schon sagt, werden zuerst die k\u00fcrzesten Aufgaben nacheinander ausgef\u00fchrt.<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/d0723e313adc9ce7367da611216bf3ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn diesem Beispiel f\u00fchrt das Starten der gleichen Prozesse zu einer Verbesserung der durchschnittlichen Bearbeitungszeit, die dann <b>50 anstelle von 110 betr\u00e4gt<\/b>, was praktisch doppelt so gut ist.<\/p>\n<p>F\u00fcr die Annahme, dass alle Aufgaben gleichzeitig ankommen, scheint der SJF-Algorithmus der optimalste zu sein. Unsere Annahmen scheinen jedoch immer noch unrealistisch. Diesmal \u00e4ndern wir Annahme 2 und stellen uns vor, dass Aufgaben zu beliebigen Zeiten eintreffen k\u00f6nnen und nicht alle gleichzeitig. Welche Probleme k\u00f6nnte dies verursachen?<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/2f0145551779f2733281d12bffad3a45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNehmen wir an, Aufgabe A (100s) kommt als erste und beginnt mit der Ausf\u00fchrung. Zu t=10 erreichen Aufgaben B und C, die jeweils 10 Sekunden in Anspruch nehmen. Daher betr\u00e4gt die durchschnittliche Bearbeitungszeit (100+(110-10)+(120-10))\/3 = 103. Was k\u00f6nnte der Scheduler tun, um die Situation zu verbessern?<\/p>\n<h3>Shortest Time-to-Completion First (STCF)<\/h3>\n<p>\n Um die Situation zu verbessern, lassen wir die Annahme 3 falleng, dass das Programm l\u00e4uft und bis zur Fertigstellung arbeitet. Au\u00dferdem ben\u00f6tigen wir Hardwareunterst\u00fctzung und wie Sie vielleicht erraten haben, werden wir <b>einen Timer<\/b> verwenden, um laufende Aufgaben zu unterbrechen und <b>Kontexte zu wechseln.<\/b>So kann der Scheduler bei Eintreffen der Aufgaben B und V die Ausf\u00fchrung von Aufgabe A unterbrechen und die Aufgaben B und V zur Bearbeitung annehmen, um danach die Ausf\u00fchrung von Prozess A fortzusetzen. Ein solcher Scheduler wird genannt <b>STCF<\/b>oder <b>Preemptive Job First<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/81644f82b7b1489f239ebbdc5d78000b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Ergebnis der Arbeit dieses Schedulers wird folgenderma\u00dfen sein: ((120-0)+(20-10)+(30-10))\/3=50. Somit wird dieser Scheduler noch optimaler f\u00fcr unsere Aufgaben.<\/p>\n<h3>Metrik Reaktionszeit (Response Time)<\/h3>\n<p>\n Daher, wenn wir die Laufzeit der Aufgaben kennen und wissen, dass diese Aufgaben nur die CPU nutzen, wird STCF die beste L\u00f6sung sein. In fr\u00fcheren Zeiten funktionierten diese Algorithmen ganz gut. Jetzt verbringt der Benutzer jedoch die meiste Zeit am Terminal und erwartet eine leistungsf\u00e4hige, interaktive Interaktion. So entstand die neue Metrik \u2014 <b>Reaktionszeit<\/b> (Response Time).<\/p>\n<p>Die Reaktionszeit wird folgenderma\u00dfen berechnet:<\/p>\n<p><u>Tresponse=Tfirstrun\u2212Tarrival<\/u><\/p>\n<p>Damit wird die Reaktionszeit f\u00fcr das vorherige Beispiel wie folgt sein: A=0, B=0, V=10 (abg=3,33).<\/p>\n<p>Es stellt sich heraus, dass der STCF-Algorithmus in Situationen, in denen drei Aufgaben gleichzeitig ankommen, nicht so gut abschneidet \u2013 er muss warten, bis die kleinen Aufgaben vollst\u00e4ndig abgeschlossen sind. Daher ist der Algorithmus zwar gut f\u00fcr die Durchlaufzeit-Metrik, jedoch nicht geeignet f\u00fcr die Interaktivit\u00e4tsmetrik. Stellen Sie sich vor, Sie sitzen an einem Terminal und versuchen, Zeichen in einen Editor einzugeben, und m\u00fcssen dabei mehr als 10 Sekunden warten, weil eine andere Aufgabe die CPU beansprucht. Das ist alles andere als angenehm.<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/f1412665826f845fdc685ec3c1a5bdad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSo stehen wir vor einem weiteren Problem: Wie k\u00f6nnen wir einen Scheduler entwickeln, der zeitempfindlich ist?<\/p>\n<h3>Round Robin<\/h3>\n<p>\n Zur L\u00f6sung dieses Problems wurde ein Algorithmus entwickelt <b>Round Robin<\/b> (RR). Die Grundidee ist ziemlich einfach: Anstatt Aufgaben bis zur vollst\u00e4ndigen Fertigstellung zu starten, f\u00fchren wir die Aufgabe f\u00fcr einen bestimmten Zeitraum (genannt Quantenzeit) aus und wechseln dann zur n\u00e4chsten Aufgabe in der Warteschlange. Der Algorithmus wiederholt diesen Vorgang, bis alle Aufgaben abgeschlossen sind. Dabei muss die Laufzeit des Programms ein Vielfaches der Zeit sein, nach der der Timer den Prozess unterbricht. Zum Beispiel, wenn der Timer den Prozess alle x=10 ms unterbricht, muss die Gr\u00f6\u00dfe des Ausf\u00fchrungsfensters ein Vielfaches von 10 sein und 10, 20 oder x*10 betragen.<\/p>\n<p>Betrachten wir ein Beispiel: Die Aufgaben A, B und C kommen gleichzeitig im System an, und jede m\u00f6chte 5 Sekunden lang arbeiten. Der SJF-Algorithmus wird jede Aufgabe bis zum Ende ausf\u00fchren, bevor er eine andere startet. Im Gegensatz dazu wird der RR-Algorithmus mit einem Zeitfenster von 1 Sekunde die Aufgaben folgenderma\u00dfen durchlaufen (Abb. 4.3):<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/a7790cb63c880b286db2a2e3782d59b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(SJF Wiederholung (Schlecht f\u00fcr die Reaktionszeit)<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/f7e82d68a6118828ea4561a4911744e2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(Round Robin (Gut f\u00fcr die Reaktionszeit)<\/p>\n<p>Die durchschnittliche Reaktionszeit f\u00fcr den RR-Algorithmus (0+1+2)\/3=1, w\u00e4hrend sie f\u00fcr den SJF (0+5+10)\/3=5 betr\u00e4gt.<\/p>\n<p>Es liegt nahe, dass das Zeitfenster ein sehr wichtiger Parameter f\u00fcr RR ist: je kleiner es ist, desto h\u00f6her ist die Antwortzeit. Allerdings sollte es nicht zu klein gew\u00e4hlt werden, da auch die Kontextwechselzeit eine Rolle bei der Gesamtleistung spielt. Somit wird die Wahl der Ausf\u00fchrungszeit durch den OS-Architekten festgelegt und h\u00e4ngt von den Aufgaben ab, die darin geplant sind. Der Kontextwechsel ist nicht die einzige operationale T\u00e4tigkeit, die Zeit beansprucht \u2013 ein laufendes Programm bearbeitet auch viele andere Aspekte, wie verschiedene Caches, und bei jedem Wechsel muss diese Umgebung gespeichert und wiederhergestellt werden, was ebenfalls viel Zeit in Anspruch nehmen kann.<\/p>\n<p>RR ist ein ausgezeichneter Scheduler, wenn es nur um die Antwortzeit-Metrik geht. Aber wie verh\u00e4lt sich die Metrik der Durchlaufzeit bei diesem Algorithmus? Betrachten wir das oben genannte Beispiel, bei dem die Ausf\u00fchrungszeiten A, B, C=5s sind und sie zur gleichen Zeit eintreffen. Aufgabe A wird um 13s abgeschlossen, B um 14s und C um 15s, was zu einer durchschnittlichen Durchlaufzeit von 14s f\u00fchrt. Daher ist RR der schlechteste Algorithmus f\u00fcr die Durchlaufzeiten-Metrik.<\/p>\n<p>Allgemeiner gesagt ist jeder RR-Algorithmus fair, da er die CPU-Zeit gleichm\u00e4\u00dfig auf alle Prozesse verteilt. Dadurch k\u00f6nnen diese Metriken st\u00e4ndig miteinander in Konflikt geraten.<\/p>\n<p>So haben wir mehrere gegens\u00e4tzliche Algorithmen und es bleiben zudem einige Annahmen, n\u00e4mlich dass die Zeit f\u00fcr die Aufgabe bekannt ist und dass die Aufgabe nur die CPU nutzt.<\/p>\n<h3>Mischung mit I\/O<\/h3>\n<p>\n Zun\u00e4chst entfernen wir die Annahme 4, dass der Prozess nur die CPU nutzt, was nat\u00fcrlich nicht der Fall ist, da Prozesse auch auf andere Hardware zugreifen k\u00f6nnen.<\/p>\n<p>In dem Moment, in dem ein Prozess eine Ein-\/Ausgabeoperation anfordert, wechselt der Prozess in den Blockierungszustand, w\u00e4hrend er auf den Abschluss der I\/O wartet. Wenn die I\/O an eine Festplatte gesendet wird, kann diese Operation mehrere Millisekunden oder l\u00e4nger in Anspruch nehmen, w\u00e4hrend die CPU zu diesem Zeitpunkt unt\u00e4tig bleibt. In dieser Zeit kann der Scheduler die CPU mit einem anderen Prozess belegen. Die n\u00e4chste Entscheidung, die der Scheduler treffen muss, ist, wann der Prozess seine I\/O abgeschlossen hat. Wenn dies passiert, erfolgt eine Unterbrechung, und das Betriebssystem versetzt den den I\/O anfordernden Prozess in den Bereitschaftszustand.<\/p>\n<p>Betrachten wir ein Beispiel mit mehreren Aufgaben. Jede ben\u00f6tigt 50 ms CPU-Zeit. Die erste Aufgabe greift jedoch alle 10 ms auf I\/O zu (was ebenfalls alle 10 ms ausgef\u00fchrt wird). Prozess B verwendet einfach die 50 ms CPU ohne I\/O.<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/a32f5346eda86042c18d6424c19ad6b9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn diesem Beispiel verwenden wir den STCF-Planer. Wie verh\u00e4lt sich der Planer, wenn wir einen Prozess wie A starten? Er wird folgenderma\u00dfen vorgehen \u2013 zun\u00e4chst wird Prozess A vollst\u00e4ndig bearbeitet, bevor Prozess B beginnt.<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/9fb709a822b9fc35871b8a342ac38c7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer traditionelle Ansatz zur L\u00f6sung dieses Problems besteht darin, jede 10-ms-Unteraufgabe von Prozess A als separate Aufgabe zu interpretieren. Daher ist bei Verwendung des STJF-Algorithmus die Wahl zwischen der 50-ms-Aufgabe und der 10-ms-Aufgabe offensichtlich. Wenn Unteraufgabe A abgeschlossen ist, wird Prozess B und I\/O gestartet. Nach dem Abschluss von I\/O wird entschieden, dass der 10-ms-Prozess A erneut gestartet wird, anstatt Prozess B auszuf\u00fchren. Auf diese Weise kann eine \u00dcberlappung realisiert werden, bei der die CPU von einem anderen Prozess verwendet wird, w\u00e4hrend der erste auf I\/O wartet. Das Ergebnis ist eine bessere Auslastung des Systems \u2013 in dem Moment, wenn interaktive Prozesse auf I\/O warten, k\u00f6nnen andere Prozesse auf der CPU ausgef\u00fchrt werden.<\/p>\n<h3>Der Oracle ist nicht mehr<\/h3>\n<p>\n Lassen Sie uns nun das Missverst\u00e4ndnis beseitigen, dass die Ausf\u00fchrungszeit einer Aufgabe bekannt ist. Dies ist im Grunde die schlechteste und unrealistischste Annahme auf der Liste. In der Tat wei\u00df das durchschnittliche Betriebssystem in der Regel sehr wenig \u00fcber die Ausf\u00fchrungszeit von Aufgaben. Wie kann man also einen Scheduler bauen, ohne zu wissen, wie lange eine Aufgabe ben\u00f6tigt? Vielleicht k\u00f6nnten wir einige Prinzipien des RR-Algorithmus nutzen, um dieses Problem zu l\u00f6sen?<\/p>\n<h3>Zusammenfassung<\/h3>\n<p>\n Wir haben die grundlegenden Ideen des Task-Schedulings betrachtet und uns zwei Gruppen von Schedulern angesehen. Der erste startet mit der k\u00fcrzesten Aufgabe und verbessert so die Bearbeitungszeit, w\u00e4hrend der zweite gleichm\u00e4\u00dfig zwischen allen Aufgaben aufschl\u00fcsselt und die Reaktionszeit erh\u00f6ht. Beide Algorithmen sind in den Situationen, in denen die jeweiligen anderen Algorithmen gut abschneiden, nicht optimal. Au\u00dferdem haben wir uns angeschaut, wie die parallele Nutzung von CPU und I\/O die Leistung verbessern kann, ohne jedoch das Problem der Vorhersagbarkeit des Betriebssystems zu l\u00f6sen. Im n\u00e4chsten Abschnitt werden wir einen Scheduler betrachten, der in die j\u00fcngste Vergangenheit schaut und versucht, die Zukunft vorherzusagen. Dieser wird als Multi-Level-Feedback-Warteschlange bezeichnet.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449026\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23990,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Operating Systems: Three Easy Pieces. Part 4: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a (\u043f\u0435\u0440\u0435\u0432\u043e\u0434) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:45:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:45:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Betriebssysteme: Drei einfache Teile. Teil 4: Einf\u00fchrung in den Scheduler (\u00dcbersetzung) | ProHoster","description":"Einf\u00fchrung in Betriebssysteme\nHallo, Habr! Ich m\u00f6chte Ihnen eine Serie von \u00dcbersetzungen einer interessanten Literatur vorstellen \u2013 OSTEP. In diesem Material wird die Funktionsweise von unix-\u00e4hnlichen Betriebssystemen ausf\u00fchrlich behandelt, insbesondere die Arbeit mit Prozessen, verschiedenen Scheduler, Speicher und anderen \u00e4hnlichen Komponenten, die ein modernes Betriebssystem ausmachen. Das Original aller Materialien k\u00f6nnen Sie hier ansehen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Operating Systems: Three Easy Pieces. Part 4: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a (\u043f\u0435\u0440\u0435\u0432\u043e\u0434) | ProHoster","og:description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:45:27+00:00","article:modified_time":"2019-10-31T18:45:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32158","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 09:34:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:03:25","updated":"2026-01-21 09:34:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=32158"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32158\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/23990"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=32158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=32158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=32158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}