{"id":30992,"date":"2019-10-31T21:38:47","date_gmt":"2019-10-31T18:38:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod\/"},"modified":"2019-10-31T21:38:47","modified_gmt":"2019-10-31T18:38:47","slug":"operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Operating Systems: Three Easy Pieces. Teil 2: Abstraktion: Prozess (\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>Original: <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html<\/a><\/noindex><\/li>\n<li>Original: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>Meine pers\u00f6nliche Anpassung: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">github.com\/bykvaadm\/OS\/tree\/master\/ostep<\/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<\/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<p>Lassen Sie uns die grundlegendste Abstraktion betrachten, die ein Betriebssystem den Benutzern bietet: den Prozess. Die Definition eines Prozesses ist recht einfach \u2013 es handelt sich um <b>ein aktives Programm<\/b>. Ein Programm ist f\u00fcr sich genommen eine leblose Entit\u00e4t, die sich auf der Festplatte befindet \u2013 es ist eine Reihe von Anweisungen und m\u00f6glicherweise einige statische Daten, die auf den Moment der Ausf\u00fchrung warten. Das Betriebssystem nimmt diese Bytes und f\u00fchrt sie aus, verwandelt das Programm in etwas N\u00fctzliches.<br \/>\n H\u00e4ufig m\u00f6chten Benutzer mehrere Programme gleichzeitig ausf\u00fchren; zum Beispiel k\u00f6nnen Sie auf Ihrem Laptop einen Browser, ein Spiel, einen Media Player, einen Texteditor usw. starten. Tats\u00e4chlich kann ein typisches System Dutzende oder Hunderte von Prozessen gleichzeitig ausf\u00fchren. Diese Tatsache macht das System benutzerfreundlicher; Sie m\u00fcssen sich nie fragen, ob die CPU frei ist, sondern k\u00f6nnen einfach die Programme starten.<\/p>\n<p><i>Hieraus ergibt sich das Problem: Wie schafft man die Illusion von mehreren CPUs? Wie kann das Betriebssystem die Illusion von praktisch unbegrenzten CPUs erzeugen, selbst wenn Sie nur eine physische CPU haben?<\/i><\/p>\n<p>Das Betriebssystem schafft diese Illusion durch die Virtualisierung der CPU. Indem es einen Prozess startet, dann stoppt, einen anderen Prozess startet und so weiter, kann das Betriebssystem den Anschein erwecken, dass es mehrere virtuelle CPUs gibt, obwohl tats\u00e4chlich nur ein oder mehrere physische Prozessoren vorhanden sind. Diese Technik wird genannt <b>zeitliche CPU-Ressourcenteilung<\/b>. Diese Technik erm\u00f6glicht es den Nutzern, so viele gleichzeitige Prozesse auszuf\u00fchren, wie sie m\u00f6chten. Der Preis f\u00fcr diese L\u00f6sung ist die Leistung \u2013 da, wenn die CPU von mehreren Prozessen geteilt wird, jeder Prozess langsamer bearbeitet wird.<br \/>\n Um die CPU-Virtualisierung zu verwirklichen, insbesondere um dies gut zu machen, ben\u00f6tigt das Betriebssystem sowohl eine niedrig- als auch hochrangige Unterst\u00fctzung. Die niedrig-rangige Unterst\u00fctzung wird genannt <b>Mechanismen<\/b> \u2014 das sind Low-Level-Methoden oder Protokolle, die den ben\u00f6tigten Teil der Funktionalit\u00e4t umsetzen. Ein Beispiel f\u00fcr eine solche Funktionalit\u00e4t ist das Kontexthandling, das dem Betriebssystem erm\u00f6glicht, ein Programm zu stoppen und ein anderes Programm auf dem Prozessor zu starten. Diese zeitliche Trennung wird in allen modernen Betriebssystemen realisiert.<br \/>\n Auf diesen Mechanismen basiert eine gewisse Logik, die im Betriebssystem in Form von \"Richtlinien\" implementiert ist. <b>Richtlinie<\/b> \u2014 das ist ein Algorithmus zur Entscheidungsfindung im Betriebssystem. Solche Richtlinien bestimmen beispielsweise, welches Programm (aus einer Befehlsliste) zuerst gestartet werden soll. Diese Aufgabe wird von der sogenannten <b>Planungsrichtlinie (scheduling policy)<\/b> gel\u00f6st, die bei der Entscheidungsfindung auf Daten wie die Laufhistorie (welches Programm in der letzten Minute am l\u00e4ngsten lief), die Arbeitslast dieses Prozesses (welche Programmtypen gestartet wurden), Leistungskennzahlen (ob das System f\u00fcr interaktive Interaktion oder f\u00fcr Durchsatz optimiert ist) und so weiter zur\u00fcckgreift.<\/p>\n<h3>Abstraktion: Prozess<\/h3>\n<p>\n Die Abstraktion eines laufenden Programms, das vom Betriebssystem ausgef\u00fchrt wird, ist das, was wir nennen <b>ein Prozess.<\/b>. Wie bereits erw\u00e4hnt, ist ein Prozess einfach ein laufendes Programm zu jedem gegebenen Zeitpunkt. Es handelt sich um das Programm, mit dem wir aggregierte Informationen aus verschiedenen Ressourcen des Systems erhalten k\u00f6nnen, auf die das Programm w\u00e4hrend seiner Ausf\u00fchrung zugreift oder die es beeinflusst.<br \/>\n Um die Bestandteile eines Prozesses zu verstehen, muss man die Zust\u00e4nde des Systems verstehen: Welche Informationen kann das Programm w\u00e4hrend seiner Ausf\u00fchrung lesen oder \u00e4ndern? Zu jeder Zeit muss man verstehen, welche Systemelemente f\u00fcr die Ausf\u00fchrung des Programms wichtig sind.<br \/>\n Eines der offensichtlichen Elemente des Systemzustands, die durch den Prozess eingeschlossen sind, ist <b>2 GB SO-DIMM DDR4 (erweiterbar auf 8 GB)<\/b>. Die Anweisungen werden im Speicher abgelegt. Die Daten, die das Programm liest oder schreibt, befinden sich ebenfalls im Speicher. Somit ist der Speicher, den der Prozess adressieren kann (der sogenannte Adressraum), ein Teil des Prozesses.<br \/>\n Ein weiterer wesentlicher Bestandteil des Systemstatus sind die Register. Viele Befehle sind darauf ausgerichtet, den Inhalt von Registern zu ver\u00e4ndern oder ihren aktuellen Wert auszulesen, was sie zu einem wichtigen Element der Prozessverarbeitung macht. <br \/>\nEs ist wichtig zu erw\u00e4hnen, dass der Maschinenstatus auch von speziellen Registern gepr\u00e4gt wird. Beispielsweise,<b> IP \u2014 der Befehlszeiger<\/b> \u2014 der auf den aktuellen Befehl verweist, den das Programm gerade ausf\u00fchrt. Zudem gibt es <b>Stack-Zeiger<\/b> und den damit verbundenen <b>Frame-Zeiger<\/b>, die zur Verwaltung von: Funktionsparametern, lokalen Variablen und R\u00fccksprungadressen verwendet werden.<br \/>\nSchlie\u00dflich greifen Programme h\u00e4ufig auf den ROM (Nichtfl\u00fcchtigen Speicher) zu. Solche Informationen \u00fcber \u201eI\/O\u201c (Ein- und Ausgabe) sollten eine Liste von Dateien enthalten, die der Prozess gerade ge\u00f6ffnet hat.<\/p>\n<h3>Prozess-API<\/h3>\n<p>\n Um das Verst\u00e4ndnis der Funktionsweise eines Prozesses zu vertiefen, betrachten wir Beispiele f\u00fcr Systemaufrufe, die in jede Benutzeroberfl\u00e4che eines Betriebssystems integriert sein m\u00fcssen. Diese APIs sind in irgendeiner Form auf jedem Betriebssystem verf\u00fcgbar.<\/p>\n<p>\u25cf <b>Erstellen<\/b> (Erstellung): Das Betriebssystem muss eine Methode zur Verf\u00fcgung stellen, um neue Prozesse zu erstellen. Wenn Sie einen Befehl im Terminal eingeben oder eine Anwendung durch Doppelklick auf das Symbol starten, wird eine Anfrage an das Betriebssystem gesendet, um einen neuen Prozess zu erstellen und das angegebene Programm zu starten.<br \/>\n\u25cf <b>Entfernen<\/b>: Wenn es eine Schnittstelle zur Erstellung eines Prozesses gibt, sollte das Betriebssystem auch die M\u00f6glichkeit bieten, einen Prozess zwangsweise zu beenden. Die meisten Programme werden in der Regel von selbst gestartet und beendet, w\u00e4hrend sie ausgef\u00fchrt werden. Andernfalls m\u00f6chte der Benutzer sie m\u00f6glicherweise beenden, weshalb eine Schnittstelle zum Stoppen von Prozessen n\u00fctzlich w\u00e4re.<br \/>\n\u25cf <b>Warten <\/b>(Warten): Manchmal ist es sinnvoll, auf die Beendigung eines Prozesses zu warten, daher werden einige Schnittstellen bereitgestellt, die diese M\u00f6glichkeit bieten.<br \/>\n\u25cf <b>Sonstiges Steuerung<\/b> (Sonstiges Management): Neben dem Beenden und Warten auf Prozesse gibt es noch andere verschiedene Kontrollmethoden. Beispielsweise bieten die meisten Betriebssysteme die M\u00f6glichkeit, einen Prozess einzufrieren (seine Ausf\u00fchrung f\u00fcr einen bestimmten Zeitraum anzuhalten) und ihn dann wieder fortzusetzen (die Ausf\u00fchrung fortzusetzen).<br \/>\n\u25cf <b>Status <\/b>(Status): Es gibt verschiedene Schnittstellen, um Informationen \u00fcber den Status eines Prozesses zu erhalten, wie z. B. die Dauer seiner Ausf\u00fchrung oder in welchem Zustand er sich derzeit befindet.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Teil 2: Abstraktion: Prozess (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Prozess erstellen: Details<\/h3>\n<p>Eine der interessanten Fragen ist, wie Programme in Prozesse umgewandelt werden. Besonders spannend ist, wie das Betriebssystem eine Anwendung startet und ausf\u00fchrt. Wie wird ein Prozess konkret erstellt?<br \/>\nZun\u00e4chst muss das Betriebssystem den Programmkode und die statischen Daten in den Speicher (in den Adressraum des Prozesses) laden. Programme befinden sich normalerweise auf einer Festplatte oder einem Solid-State-Laufwerk in einem ausf\u00fchrbaren Format. Somit erfordert der Ladevorgang des Programms und der statischen Daten in den Speicher, dass das Betriebssystem die Bytes von der Festplatte lesen und sie irgendwo im Speicher ablegen kann.<\/p>\n<p>In fr\u00fchen Betriebssystemen wurde der Ladevorgang ungeduldig (eagerly) durchgef\u00fchrt, was bedeutet, dass der Code vollst\u00e4ndig in den Speicher geladen wurde, bevor das Programm ausgef\u00fchrt wurde. Moderne Betriebssysteme tun dies faul (lazily), indem sie Teile des Codes oder Daten nur dann laden, wenn sie w\u00e4hrend der Ausf\u00fchrung des Programms ben\u00f6tigt werden.<\/p>\n<p>Nachdem der Code und die statischen Daten in den Arbeitsspeicher des Betriebssystems geladen wurden, sind noch einige Schritte erforderlich, bevor der Prozess gestartet werden kann. Ein gewisser Speicher muss f\u00fcr den Stack reserviert werden. <b>Programme nutzen den Stack f\u00fcr lokale Variablen, Funktionsparameter und R\u00fccksprungadressen.<\/b>. Das Betriebssystem reserviert diesen Speicher und stellt ihn dem Prozess zur Verf\u00fcgung. Der Stack kann auch mit bestimmten Argumenten angelegt werden, insbesondere werden die Parameter der Funktion main(), wie das Array argc und argv, gef\u00fcllt.<\/p>\n<p>Das Betriebssystem kann auch eine gewisse Menge an Speicher f\u00fcr den Heap (freier Speicher) der Programme reservieren. <b>Der Heap wird von Programmen f\u00fcr ausdr\u00fccklich angeforderte dynamisch zugewiesene Daten genutzt.<\/b>. Programme fordern diesen Speicher an, indem sie eine Funktion aufrufen, <b>malloc()<\/b> und sie reinigen ausdr\u00fccklich, indem sie die Funktion aufrufen, <b>free()<\/b>. Ein Heap ist f\u00fcr Datenstrukturen wie verkettete Listen, Hash-Tabellen, B\u00e4ume und andere erforderlich. Zu Beginn wird eine kleine Menge Speicher f\u00fcr den Heap reserviert, aber im Laufe der Programmausf\u00fchrung kann der Heap mehr Speicher anfordern, indem er den Bibliotheks-API-Aufruf malloc() verwendet. Das Betriebssystem ist in den Prozess der Zuweisung zus\u00e4tzlichen Speichers integriert, um diese Anforderungen zu erf\u00fcllen.<\/p>\n<p>Das Betriebssystem f\u00fchrt auch Initialisierungsaufgaben aus, insbesondere solche, die mit Ein-\/Ausgabe zu tun haben. Zum Beispiel hat in UNIX-Systemen jeder Prozess standardm\u00e4\u00dfig 3 ge\u00f6ffnete Dateideskriptoren f\u00fcr den Standard-Eingabe-, Ausgabe- und Fehlerstrom. Diese Deskriptoren erm\u00f6glichen es Programmen, Eingaben vom Terminal zu lesen und Informationen auf den Bildschirm auszugeben. <\/p>\n<p>Durch das Laden von Code und statischen Daten in den Speicher, das Erstellen und Initialisieren des Stacks sowie das Ausf\u00fchren anderer Aufgaben im Zusammenhang mit der Eingabe- und Ausgabeoperation bereitet das Betriebssystem die Grundlage f\u00fcr die Ausf\u00fchrung des Prozesses vor. Schlie\u00dflich bleibt die letzte Aufgabe: das Programm \u00fcber seinen Einstiegspunkt, der als Funktion main() bekannt ist, zur Ausf\u00fchrung zu bringen. Wenn die Ausf\u00fchrung der Funktion main() beginnt, \u00fcbergibt das Betriebssystem die Kontrolle an die neu erstellte Prozessinstanz, sodass das Programm ausgef\u00fchrt wird. <\/p>\n<h3>Zustand des Prozesses<\/h3>\n<p>\n Jetzt, da wir ein gewisses Verst\u00e4ndnis daf\u00fcr haben, was ein Prozess ist und wie er erstellt wird, lassen Sie uns die Zust\u00e4nde auflisten, in denen sich ein Prozess befinden kann. In der einfachsten Form kann sich der Prozess in einem dieser Zust\u00e4nde befinden:<br \/>\n\u25cf <b>Running<\/b>. Im laufenden Zustand wird der Prozess auf dem Prozessor ausgef\u00fchrt. Das bedeutet, dass Instruktionen ausgef\u00fchrt werden.<br \/>\n\u25cf <b>Bereit<\/b>. Im bereiten Zustand ist der Prozess bereit zur Ausf\u00fchrung, wird jedoch aus bestimmten Gr\u00fcnden nicht zum angegebenen Zeitpunkt vom Betriebssystem ausgef\u00fchrt.<br \/>\n\u25cf <b>Blockiert<\/b>. Im blockierten Zustand f\u00fchrt der Prozess bestimmte Operationen aus, die ihn daran hindern, f\u00fcr die Ausf\u00fchrung bereit zu sein, bis ein bestimmtes Ereignis eintritt. Ein h\u00e4ufiges Beispiel hierf\u00fcr ist, wenn ein Prozess eine IO-Operation initiiert, wird er blockiert und erm\u00f6glicht es so einem anderen Prozess, die CPU zu nutzen.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Teil 2: Abstraktion: Prozess (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMan kann sich diese Zust\u00e4nde als Graphen vorstellen. Wie auf dem Bild zu sehen ist, kann der Zustand eines Prozesses zwischen RUNNING und READY nach Ermessen des Betriebssystems wechseln. Wenn der Zustand eines Prozesses von READY nach RUNNING wechselt, bedeutet das, dass der Prozess geplant wurde. Umgekehrt wird er von der Planung genommen. In dem Moment, in dem der Prozess BLOCKED wird, beispielsweise durch die Initialisierung einer IO-Operation, h\u00e4lt das Betriebssystem ihn in diesem Zustand bis zum Eintreten eines bestimmten Ereignisses, wie dem Abschluss der IO. In diesem Moment wechselt er in den Zustand READY und m\u00f6glicherweise sofort in den Zustand RUNNING, wenn das das Betriebssystem entscheidet. <br \/>\nLassen Sie uns ein Beispiel betrachten, wie zwei Prozesse durch diese Zust\u00e4nde verlaufen. Zun\u00e4chst nehmen wir an, dass beide Prozesse ausgef\u00fchrt werden und jeweils nur die CPU nutzen. In diesem Fall w\u00fcrden ihre Zust\u00e4nde wie folgt aussehen.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Teil 2: Abstraktion: Prozess (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm n\u00e4chsten Beispiel fordert der erste Prozess nach einer bestimmten Arbeitszeit IO an und wechselt in den Zustand BLOCKED, was dem anderen Prozess die M\u00f6glichkeit gibt, zu starten (siehe Abb. 1.4). Das Betriebssystem sieht, dass Prozess 0 die CPU nicht nutzt und startet Prozess 1. W\u00e4hrend der Ausf\u00fchrung von Prozess 1 wird IO abgeschlossen und der Status von Prozess 0 wechselt auf READY. Schlie\u00dflich beendet Prozess 1 seine Ausf\u00fchrung, und nach dessen Abschluss wird Prozess 0 gestartet, ausgef\u00fchrt und beendet.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Teil 2: Abstraktion: Prozess (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Datenstruktur<\/h3>\n<p>\n Das Betriebssystem selbst ist ein Programm und hat, wie jedes andere Programm, bestimmte Schl\u00fcssel-Datenstrukturen, die verschiedene relevante Informationen \u00fcberwachen. Um den Zustand jedes Prozesses im Betriebssystem zu verfolgen, wird ein gewisser <b>Prozessliste<\/b> F\u00fcr alle Prozesse im Zustand READY sowie einige zus\u00e4tzliche Informationen zur \u00dcberwachung der derzeit laufenden Prozesse ist das Betriebssystem verantwortlich. Dar\u00fcber hinaus muss das Betriebssystem auch die blockierten Prozesse \u00fcberwachen. Nach Abschluss von E\/S-Operationen ist das Betriebssystem verpflichtet, den entsprechenden Prozess zu wecken und ihn in den Zustand der Bereitschaft zur Ausf\u00fchrung zu versetzen.<\/p>\n<p>So muss das Betriebssystem beispielsweise den Zustand der Prozessorregister speichern. Beim Anhalten eines Prozesses wird der Zustand der Register im Adressraum des Prozesses gespeichert, und beim Fortsetzen seiner Ausf\u00fchrung werden die Werte der Register wiederhergestellt, sodass der Prozess fortgesetzt werden kann.<\/p>\n<p>Neben den Zust\u00e4nden ready, blocked und running gibt es noch einige andere Zust\u00e4nde. Manchmal kann ein Prozess beim Erstellen den Zustand INIT haben. Schlie\u00dflich kann ein Prozess in den Zustand FINAL versetzt werden, wenn er bereits abgeschlossen ist, aber die Informationen \u00fcber ihn noch nicht gel\u00f6scht wurden. In UNIX-Systemen wird dieser Zustand als <b>Zombie-Prozess<\/b>. Dieser Zustand ist n\u00fctzlich, wenn der \u00fcbergeordnete Prozess den R\u00fcckgabewert des untergeordneten Prozesses ermitteln m\u00f6chte. In der Regel signalisiert 0 einen erfolgreichen Abschluss und 1 einen Fehler. Programmierer k\u00f6nnen jedoch zus\u00e4tzliche Ausgabecodes verwenden, um auf verschiedene Probleme hinzuweisen. Wenn der \u00fcbergeordnete Prozess beendet wird, f\u00fchrt er den letzten Systemaufruf, z.B. wait(), aus, um auf den Abschluss des untergeordneten Prozesses zu warten und dem Betriebssystem zu signalisieren, dass die Daten, die mit dem abgeschlossenen Prozess verbunden sind, gel\u00f6scht werden k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Teil 2: Abstraktion: Prozess (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Wichtige Punkte der Vorlesung:<\/h3>\n<p>\n\u25cf <b>Prozess <\/b> \u2014 die Hauptabstraktion eines laufenden Programms im Betriebssystem. Zu jedem Zeitpunkt kann ein Prozess anhand seines Zustands beschrieben werden: der Inhalt des Speichers in seinem Adressraum, der Inhalt der CPU-Register, einschlie\u00dflich des Instruction Pointers und des Stack Pointers, sowie Informationen \u00fcber die Ein- und Ausgabe, wie z.B. ge\u00f6ffnete Dateien, die gelesen oder geschrieben werden.<br \/>\n\u25cf <b>Prozess-API<\/b> besteht aus Aufrufen, die Programme in Bezug auf Prozesse machen k\u00f6nnen. Normalerweise handelt es sich um Aufrufe zum Erstellen, L\u00f6schen oder andere.<br \/>\n\u25cf Der Prozess befindet sich in einem von vielen Zust\u00e4nden, einschlie\u00dflich running, ready, blocked. Verschiedene Ereignisse wie Planung, Exkludierung aus der Planung oder Warten k\u00f6nnen den Zustand des Prozesses von einem in einen anderen wechseln.<br \/>\n\u25cf <b>Prozessliste<\/b> enth\u00e4lt Informationen \u00fcber alle Prozesse im System. Jeder Eintrag darin wird als Process Control Block bezeichnet, der tats\u00e4chlich eine Struktur ist, die alle notwendigen Informationen \u00fcber einen bestimmten Prozess enth\u00e4lt.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446866\/\">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":22968,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30992","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-2-abstraktsiya-protsess-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 2: \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f: \u041f\u0440\u043e\u0446\u0435\u0441\u0441 (\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-2-abstraktsiya-protsess-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:38:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:38:47+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 2: Abstraktion: Prozess (\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-2-abstraktsiya-protsess-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 2: \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f: \u041f\u0440\u043e\u0446\u0435\u0441\u0441 (\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-2-abstraktsiya-protsess-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:38:47+00:00","article:modified_time":"2019-10-31T18:38:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30992","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 03:59:23","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:26:04","updated":"2026-01-21 03:59:23"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/30992","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=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}