{"id":30717,"date":"2019-10-31T21:37:05","date_gmt":"2019-10-31T18:37:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-1-intro-perevod\/"},"modified":"2019-10-31T21:37:05","modified_gmt":"2019-10-31T18:37:05","slug":"operating-systems-three-easy-pieces-part-1-intro-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Betriebssysteme: Drei einfache Teile. Teil 1: Einf\u00fchrung (\u00dcbersetzung)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Einf\u00fchrung in Betriebssysteme<\/h1>\n<p>Hallo, Habr! Ich m\u00f6chte Ihnen eine Reihe von \u00dcbersetzungsartikeln einer interessanten Literatur vorstellen, die ich f\u00fcr bemerkenswert halte \u2013 OSTEP. In diesem Material wird die Funktionsweise von Unix-\u00e4hnlichen Betriebssystemen eingehend untersucht, insbesondere die Arbeit mit Prozessen, verschiedenen Planern, dem Speicher und anderen \u00e4hnlichen Komponenten, die ein modernes Betriebssystem ausmachen. Die Originale aller Materialien k\u00f6nnen Sie hier ansehen <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">hier<\/a><\/noindex>. Bitte beachten Sie, dass die \u00dcbersetzung unprofessionell (relativ frei) durchgef\u00fchrt wurde, aber ich hoffe, dass ich den allgemeinen Sinn bewahrt habe.<\/p>\n<p>Die Laborarbeiten zu diesem Thema finden Sie hier:<br \/>\n \u2013 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><br \/>\n \u2013 Original: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2013 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><\/p>\n<p>Und Sie k\u00f6nnen auch meinen Kanal auf <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">Telegramm<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Funktionsweise des Programms<\/h3>\n<p>\nWas passiert, wenn ein Programm l\u00e4uft? Das gestartete Programm f\u00fchrt eine einfache Aufgabe aus \u2013 es f\u00fchrt Anweisungen aus. Jede Sekunde werden Millionen und sogar m\u00f6glicherweise Milliarden von Anweisungen vom Prozessor aus dem Arbeitsspeicher abgerufen, daraufhin dekodiert er sie (zum Beispiel erkennt er, zu welchem Typ diese Anweisungen geh\u00f6ren) und f\u00fchrt sie aus. Dies k\u00f6nnen das Addieren von zwei Zahlen, der Zugriff auf den Speicher, die \u00dcberpr\u00fcfung von Bedingungen, der \u00dcbergang zu einer Funktion und so weiter sein. Nach der Ausf\u00fchrung einer Anweisung wechselt der Prozessor zur Ausf\u00fchrung der n\u00e4chsten. Und so werden Anweisung f\u00fcr Anweisung ausgef\u00fchrt, bis das Programm abgeschlossen ist.<br \/>\nDieses Beispiel ist selbstverst\u00e4ndlich vereinfacht betrachtet \u2013 tats\u00e4chlich erm\u00f6glicht moderne Hardware, um die Arbeit des Prozessors zu beschleunigen, das Ausf\u00fchren von Anweisungen au\u00dferhalb der Reihenfolge, das Berechnen m\u00f6glicher Ergebnisse, das gleichzeitige Ausf\u00fchren von Anweisungen und \u00e4hnliche Tricks.<\/p>\n<h3>Die von Neumann'sche Rechnerarchitektur<\/h3>\n<p>\nDie vereinfachte Form der Arbeit, die wir beschrieben haben, \u00e4hnelt der von Neumann'schen Rechnerarchitektur. <i>Von Neumann ist einer der Pioniere der Computersysteme und auch einer der Autoren der Spieltheorie<\/i>. W\u00e4hrend eines Programmdurchlaufs geschehen viele andere Ereignisse, es laufen zahlreiche andere Prozesse und externe Logik ab, deren Hauptziel es ist, den Start, den Betrieb und die Wartung des Systems zu vereinfachen.<br \/>\nEs gibt eine Reihe von Softwareprogrammen, die daf\u00fcr verantwortlich sind, dass Programme einfach gestartet werden k\u00f6nnen (oder sogar mehrere Programme gleichzeitig ausgef\u00fchrt werden k\u00f6nnen). Diese erm\u00f6glichen es den Programmen, denselben Speicher zu teilen und mit verschiedenen Ger\u00e4ten zu interagieren. Diese Software-Suite wird im Wesentlichen als Betriebssystem bezeichnet und seine Aufgaben umfassen die \u00dcberwachung der korrekten und effizienten Funktionsweise des Systems sowie die Bereitstellung einer einfachen Verwaltung dieses Systems. <\/p>\n<h2>Das Betriebssystem<\/h2>\n<p>\n<b>Das Betriebssystem, kurz OS, ist ein Komplex miteinander verbundener Programme, die zur Verwaltung der Ressourcen eines Computers und zur Organisation der Interaktion des Benutzers mit dem Computer bestimmt sind.<\/b>. <br \/>\nDas OS erreicht seine Effizienz in erster Linie durch die wichtigste Technik \u2013 die Technik der <b>Virtualisierung<\/b>. Das OS interagiert mit physischen Ressourcen (wie Prozessor, Speicher, Festplatte und \u00e4hnlichem) und transformiert sie in eine allgemeinere, leistungsf\u00e4higere und benutzerfreundlichere Form. Daher kann das Betriebssystem sehr grob mit einer virtuellen Maschine verglichen werden.<br \/>\nUm den Benutzern zu erm\u00f6glichen, dem Betriebssystem Befehle zu erteilen und somit die M\u00f6glichkeiten der virtuellen Maschine zu nutzen (wie z.B.: Programmstart, Speicherzuweisung, Dateizugriff usw.), stellt das Betriebssystem eine Schnittstelle zur Verf\u00fcgung, die als <b>API<\/b> (Application Programming Interface) bekannt ist und bei der Aufrufe (Calls) gemacht werden k\u00f6nnen. Ein typisches Betriebssystem bietet Hunderte von Systemaufrufen an.<br \/>\nUnd schlie\u00dflich, da die Virtualisierung es einer Vielzahl von Programmen erlaubt, gleichzeitig zu arbeiten (damit das CPU gemeinsam genutzt wird), und gleichzeitig auf deren Anweisungen und Daten zuzugreifen (dabei den Speicher zu teilen) sowie auf Festplatten zuzugreifen (damit die Ein- und Ausgabeger\u00e4te gemeinsam genutzt werden), wird das Betriebssystem auch als Ressourcenmanager bezeichnet. Jeder Prozessor, jede Festplatte und jeder Speicher ist eine Ressource des Systems und somit wird eine der Rollen des Betriebssystems die Aufgabe, diese Ressourcen effektiv und fair oder, je nach Anforderung, f\u00fcr die das Betriebssystem entwickelt wurde, zu verwalten.<\/p>\n<h3>CPU-Virtualisierung<\/h3>\n<p>\nBetrachten wir das folgende Programm:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 1: Einf\u00fchrung (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs f\u00fchrt keine besonderen Aktionen aus, im Grunde genommen ruft es nur die Funktion <b>spin<\/b>() auf, deren Aufgabe es ist, die Zeit zyklisch zu \u00fcberpr\u00fcfen und zur\u00fcckzukehren, nachdem eine Sekunde vergangen ist. Somit wiederholt es endlos die Zeichenkette, die der Benutzer als Argument \u00fcbergeben hat.<br \/>\nLassen Sie uns dieses Programm starten und als Argument das Zeichen \u201cA\u201d \u00fcbergeben. Das Ergebnis ist nicht besonders interessant \u2013 das System f\u00fchrt einfach das Programm aus, das periodisch das Zeichen \u201cA\u201d auf dem Bildschirm anzeigt.<br \/>\nJetzt versuchen wir eine Variante, bei der mehrere Instanzen desselben Programms laufen, allerdings mit unterschiedlichen Buchstaben, um es verst\u00e4ndlicher zu machen. In diesem Fall wird das Ergebnis etwas anders sein. Obwohl wir nur einen Prozessor haben, wird das Programm gleichzeitig ausgef\u00fchrt. Wie kommt es dazu? Es liegt daran, dass das Betriebssystem, mit Hilfe der Hardwaref\u00e4higkeiten, eine Illusion schafft. Die Illusion, dass das System mehrere virtuelle Prozessoren hat, die einen physischen Prozessor in eine theoretisch unbegrenzte Anzahl verwandeln und somit den Programmen erlauben, gleichzeitig zu erscheinen. Diese Illusion nennt man <i>CPU-Virtualisierung<\/i>.<br \/>\n Ein solches Szenario wirft viele Fragen auf, zum Beispiel, wenn mehrere Programme gleichzeitig gestartet werden m\u00f6chten, welches wird tats\u00e4chlich gestartet? Diese Frage beantworten die \u201cPolitiken\u201d des Betriebssystems. Politiken werden an vielen Stellen im Betriebssystem verwendet und beantworten solche Fragen; sie sind auch grundlegende Mechanismen, die das Betriebssystem implementiert. Daher die Rolle des Betriebssystems als Ressourcenmanager.<\/p>\n<h3>Speicher-Virtualisierung<\/h3>\n<p>\n Jetzt lassen Sie uns den Speicher betrachten. <b>Das physische Modell des Speichers in modernen Systemen wird als Array von Bytes dargestellt<\/b>. Um aus dem Speicher zu lesen, muss man <b>die Adresse der Zelle<\/b>, um darauf zuzugreifen. Um Daten zu schreiben oder zu aktualisieren, m\u00fcssen auch die Daten und die Adresse der Zelle angegeben werden, in die sie geschrieben werden sollen.<br \/>\n Zugriffe auf den Speicher erfolgen st\u00e4ndig w\u00e4hrend der Ausf\u00fchrung des Programms. Das Programm speichert seine gesamte Datenstruktur im Speicher und greift darauf zu, w\u00e4hrend es verschiedene Anweisungen ausf\u00fchrt. Die Anweisungen selbst werden ebenfalls im Speicher gespeichert, weshalb auf diesen auch bei jedem Anfrage zur n\u00e4chsten Anweisung zugegriffen wird.<\/p>\n<h4>Der Aufruf von malloc()<\/h4>\n<p>Betrachten wir das folgende Programm, das Speicherbereiche durch einen Aufruf reserviert <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 1: Einf\u00fchrung (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Programm macht mehrere Dinge. Zun\u00e4chst reserviert es einen bestimmten Speicherbereich (Zeile 7), gibt dann die Adresse der reservierten Zelle aus (Zeile 9) und schreibt null in den ersten Slot des reservierten Speichers. Danach geht das Programm in eine Schleife, in der es den Wert inkrementiert, der im Speicher an der Adresse der Variable \u201ep\u201c gespeichert ist. Au\u00dferdem gibt es die Prozess-ID von sich selbst aus. <b>Die Prozess-ID ist f\u00fcr jeden ausgef\u00fchrten Prozess einzigartig<\/b>. Wenn wir jedoch mehrere Kopien starten, sto\u00dfen wir auf ein interessantes Ergebnis: Im ersten Fall, wenn wir nichts tun und einfach mehrere Kopien starten, sind die Adressen unterschiedlich. Aber das passt nicht zu unserer Theorie! Richtig, denn in modernen Distributionen ist standardm\u00e4\u00dfig eine Funktion zur Randomisierung des Speichers aktiviert. Wenn wir diese deaktivieren, erhalten wir das erwartete Ergebnis \u2013 die Speicheradressen von zwei gleichzeitig ausgef\u00fchrten Programmen werden identisch sein. <\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 1: Einf\u00fchrung (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Insgesamt ergibt sich, dass zwei unabh\u00e4ngige Programme mit ihren eigenen privaten Adressr\u00e4umen arbeiten, die wiederum von dem Betriebssystem in den physischen Speicher abgebildet werden<\/b>. Daher beeinflusst die Nutzung von Speicheradressen innerhalb eines Programms andere nicht, und jedem Programm scheint, dass es \u00fcber einen eigenen physischen Speicherbereich verf\u00fcgt, der vollst\u00e4ndig in seinem Ermessen ist. Die Realit\u00e4t jedoch ist, dass physischer Speicher eine gemeinsame Ressource ist, deren Verwaltung vom Betriebssystem \u00fcbernommen wird.<\/p>\n<h3>Konsistenz<\/h3>\n<p>\nEin weiteres wichtiges Thema im Rahmen von Betriebssystemen ist die <b>Koh\u00e4renz<\/b>. Dieser Begriff wird verwendet, wenn es um Probleme im System geht, die auftreten k\u00f6nnen, wenn viele Dinge gleichzeitig innerhalb eines Programms bearbeitet werden. Koh\u00e4renzprobleme treten sogar im Betriebssystem selbst auf. In den vorherigen Beispielen mit der Virtualisierung von Speicher und Prozessor haben wir verstanden, dass das Betriebssystem viele Dinge gleichzeitig verwaltet \u2013 den ersten Prozess startet, dann den zweiten und so weiter. Wie sich herausgestellt hat, kann ein solches Verhalten zu bestimmten Problemen f\u00fchren. So haben moderne Multithread-Programme mit solchen Schwierigkeiten zu k\u00e4mpfen.<\/p>\n<p>Betrachten wir das folgende Programm:<\/p>\n<p> <img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 1: Einf\u00fchrung (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Programm in der Hauptfunktion erstellt zwei Threads, indem es einen Aufruf verwendet <b>Pthread_create()<\/b>. In diesem Beispiel kann man einen Thread als eine Funktion betrachten, die in einem gemeinsamen Speicherbereich neben anderen Funktionen ausgef\u00fchrt wird, wobei die Anzahl der gleichzeitig ausgef\u00fchrten Funktionen offensichtlich mehr als eins betr\u00e4gt. In diesem Beispiel startet jeder Thread und f\u00fchrt die Funktion <b>worker() aus, die ihrerseits einfach eine Variable inkrementiert.<\/b>,.<\/p>\n<p>Wir starten dieses Programm mit dem Argument 1000. Wie Sie sich vielleicht schon gedacht haben, sollte das Ergebnis 2000 sein, da jeder Thread die Variable 1000 Mal inkrementiert hat. Doch es ist nicht so einfach. Lassen Sie uns das Programm mit einer Anzahl von Wiederholungen bei einer Ordnung gr\u00f6\u00dfer versuchen.<\/p>\n<p><img decoding=\"async\" alt=\"Betriebssysteme: Drei einfache Teile. Teil 1: Einf\u00fchrung (\u00dcbersetzung)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn wir eine Zahl wie 100000 eingeben, erwarten wir, dass wir als Ausgabe die Zahl 200000 sehen. Wenn wir jedoch die Zahl 100000 mehrmals ausf\u00fchren, werden wir nicht nur das richtige Ergebnis nicht sehen, sondern auch verschiedene falsche Antworten erhalten. Das R\u00e4tsel liegt darin, dass zum Erh\u00f6hen der Zahl drei Operationen erforderlich sind \u2013 das Auslesen der Zahl aus dem Speicher, das Inkrementieren und dann das Zur\u00fcckschreiben der Zahl. Da all diese Anweisungen nicht atomar (also nicht gleichzeitig) durchgef\u00fchrt werden, k\u00f6nnen solche merkw\u00fcrdigen Dinge passieren. Dieses Problem wird in der Programmierung als <b>race condition \u2013 Zustand des Wettlaufs<\/b>. Wenn unbekannte Kr\u00e4fte zu unbekannten Zeitpunkten die Ausf\u00fchrung Ihrer Operationen beeinflussen k\u00f6nnen.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446340\/\">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\u044b\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\u043d\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":22702,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - 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\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.\" \/>\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-1-intro-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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 1: Intro (\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\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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:37:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:05+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 1: Einf\u00fchrung (\u00dcbersetzung) | ProHoster","description":"Einf\u00fchrung in Betriebssysteme Hallo, Habr! Ich m\u00f6chte Ihnen eine Serie von \u00fcbersetzten Artikeln zu einer interessanten Literatur vorstellen, die ich f\u00fcr lesenswert halte \u2013 OSTEP.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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 1: Intro (\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\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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:37:05+00:00","article:modified_time":"2019-10-31T18:37:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30717","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 02:38:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:30:51","updated":"2026-01-21 02:38:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/30717","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=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}