{"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\/nl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Besturingssystemen: Drie Eenvoudige Stukken. Deel 1: Intro (vertaling)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Inleiding tot besturingssystemen<\/h1>\n<p>Hallo, Habr! Ik wil graag een serie vertaalde artikelen introduceren over een interessante literatuur \u2014 OSTEP. In dit materiaal wordt de werking van Unix-achtige besturingssystemen diepgaand besproken, namelijk de omgang met processen, verschillende planners, geheugen en andere vergelijkbare componenten die een modern OS vormen. Je kunt het origineel van al het materiaal hier bekijken: <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">here<\/a><\/noindex>. Houd er rekening mee dat de vertaling niet professioneel is uitgevoerd (vrij vrij), maar ik hoop dat ik de algemene betekenis heb behouden.<\/p>\n<p>Laboratoriumopdrachten voor dit onderwerp kun je hier vinden:<br \/>\n \u2014 origineel: <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 \u2014 origineel: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 mijn persoonlijke aanpassing: <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>En je kunt ook mijn kanaal bezoeken op <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegram<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Het werk van een programma<\/h3>\n<p>\nWat gebeurt er eigenlijk wanneer een programma draait? Een gestart programma voert \u00e9\u00e9n simpele taak uit \u2014 het voert instructies uit. Elke seconde worden miljoenen en zelfs mogelijk miljarden instructies door de processor uit het RAM gehaald, die op zijn beurt ze decodeert (bijvoorbeeld, herkent tot welk type deze instructies behoren) en uitvoert. Dit kan het optellen van twee getallen zijn, toegang tot het geheugen, het controleren van een voorwaarde, overgaan naar een functie, enzovoort. Na het uitvoeren van een instructie gaat de processor naar de volgende instructie. En zo worden instructie na instructie uitgevoerd totdat het programma is voltooid.<br \/>\nDit voorbeeld is natuurlijk vereenvoudigd \u2014 in werkelijkheid maakt moderne hardware het mogelijk om instructies buiten de volgorde uit te voeren, mogelijke uitkomsten te berekenen, instructies gelijktijdig uit te voeren en dergelijke trucs.<\/p>\n<h3>Het Von Neumann-model van berekening<\/h3>\n<p>\nDe vereenvoudigde vorm van werken die we hebben beschreven lijkt op het Von Neumann-model van berekeningen. <i>Von Neumann was een van de pioniers van computersystemen en ook een van de auteurs van de speltheorie.<\/i>Tijdens het draaien van een programma vinden nog tal van andere gebeurtenissen plaats, werken veel andere processen en externe logica, waarvan de belangrijkste doel is om de uitvoering, werking en onderhoud van het systeem te vereenvoudigen.<br \/>\nEr is een set software die verantwoordelijk is voor het eenvoudig opstarten van programma's (of zelfs voor het gelijktijdig uitvoeren van meerdere programma's). Het stelt programma's in staat om hetzelfde geheugen te delen en te communiceren met verschillende apparaten. Deze set software wordt in wezen een besturingssysteem genoemd en de taken ervan omvatten het bewaken van de correcte en effici\u00ebnte werking van het systeem, evenals het waarborgen van een gemakkelijke bediening van dit systeem. <\/p>\n<h2>Besturingssysteem<\/h2>\n<p>\n<b>Een besturingssysteem, afgekort als OS, is een complex van onderling verbonden programma's die zijn ontworpen om de middelen van de computer te beheren en de interactie van de gebruiker met de computer te organiseren.<\/b>. <br \/>\nEen OS bereikt zijn effici\u00ebntie voornamelijk door de belangrijkste techniek \u2014 de techniek <b>virtualisatie<\/b>. Het OS communiceert met de fysieke bronnen (zoals de processor, het geheugen, de schijf, enzovoort) en transformeert deze naar een meer algemene, grotere en gebruiksvriendelijkere vorm van zichzelf. Daarom kan men voor een algemeen begrip het besturingssysteem heel ruwweg vergelijken met een virtuele machine.<br \/>\nOm gebruikers commands aan het besturingssysteem te laten geven en zo de mogelijkheden van de virtuele machine te benutten (zoals: programma starten, geheugen toewijzen, toegang tot een bestand, enzovoort), biedt het besturingssysteem een bepaalde interface, genaamd <b>API<\/b> (application programming interface) waaruit oproepen (calls) gedaan kunnen worden. Een typisch besturingssysteem biedt de mogelijkheid om honderden systeemoproepen te doen.<br \/>\nEn tot slot, omdat virtualisatie het mogelijk maakt dat meerdere programma's (bij wijze van spreken, de CPU delen) en gelijktijdig toegang krijgen tot hun instructies en gegevens (waarbij het geheugen wordt gedeeld), evenals toegang tot schijven (waardoor invoer- en uitvoerapparaten worden gedeeld), wordt het besturingssysteem ook wel resource manager genoemd. Elke processor, schijf en geheugen is een systeemresource, en zo wordt een van de taken van het besturingssysteem het effici\u00ebnt beheren van deze bronnen, op een eerlijke of, afhankelijk van de taak waarvoor dit besturingssysteem is ontworpen, de nodige manier.<\/p>\n<h3>CPU-virtualisatie<\/h3>\n<p>\nLaten we het volgende programma bekijken:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 1: Intro (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet voert geen speciale acties uit; in wezen roept het gewoon de functie aan <b>spin<\/b>(), die als taak heeft de tijd cyclisch te controleren en terug te geven, nadat er \u00e9\u00e9n seconde is verstreken. Hierdoor herhaalt het oneindig de string die de gebruiker als argument heeft doorgegeven.<br \/>\nLaten we dit programma uitvoeren en als argument het symbool 'A' doorgeven. Het resultaat is niet bijzonder interessant \u2014 het systeem voert gewoon het programma uit dat periodiek het symbool 'A' op het scherm weergeeft.<br \/>\nLaten we nu een variant proberen, waarbij meerdere exemplaren van hetzelfde programma worden uitgevoerd, maar die verschillende letters weergeven, zodat het duidelijker is. In dit geval zal het resultaat iets anders zijn. Hoewel we \u00e9\u00e9n processor hebben, wordt het programma gelijktijdig uitgevoerd. Hoe kan dit gebeuren? Het komt doordat het besturingssysteem, met behulp van de mogelijkheden van de hardware, een illusie cre\u00ebert. De illusie dat er meerdere virtuele processors in het systeem zijn, waardoor \u00e9\u00e9n fysieke processor in theorie oneindig aantal wordt en hierdoor de programma's ogenschijnlijk gelijktijdig worden uitgevoerd. Deze illusie wordt <i>CPU-virtualisatie<\/i>.<br \/>\n Een dergelijke situatie roept veel vragen op. Bijvoorbeeld, als meerdere programma's gelijktijdig willen worden uitgevoerd, welk programma zal dan worden uitgevoerd? Dit vraagstuk wordt beantwoord door de 'beleid' van het besturingssysteem. Beleid wordt op veel plaatsen in het besturingssysteem gebruikt en beantwoordt dergelijke vragen, en fungeert ook als basale mechanismen die het besturingssysteem implementeert. Vandaar de rol van het besturingssysteem als resourcebeheerder.<\/p>\n<h3>Geheugenvirtualisatie<\/h3>\n<p>\n Laten we nu het geheugen bekijken. <b>Het fysieke model van geheugen in moderne systemen wordt weergegeven als een array van bytes<\/b>. Om uit het geheugen te lezen, moet je het <b>adres van de cel<\/b>opgeven, zodat je er toegang toe kunt krijgen. Om gegevens te schrijven of bij te werken, moet je ook de gegevens en het adres van de cel opgeven waar je ze wilt schrijven.<br \/>\n Toegang tot het geheugen gebeurt voortdurend tijdens de werking van het programma. Het programma slaat de gehele datastructuur in het geheugen op en benadert deze terwijl het verschillende instructies uitvoert. De instructies zelf worden ook in het geheugen opgeslagen, dus toegang tot het geheugen vindt ook plaats bij elk verzoek voor de volgende instructie.<\/p>\n<h4>Aanroep malloc()<\/h4>\n<p>Laten we het volgende programma bekijken dat geheugenruimte toewijst met behulp van de aanroep <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 1: Intro (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet programma doet verschillende dingen. Ten eerste wordt er een hoeveelheid geheugen toegewezen (regel 7), vervolgens wordt het adres van de toegewezen cel weergegeven (regel 9) en wordt de waarde nul in de eerste positie van het toegewezen geheugen geschreven. Daarna gaat het programma de lus in, waarin het de waarde die in het geheugen op het adres van de variabele \u201cp\u201d is opgeslagen, incrementeert. Ook toont het zijn eigen proces-ID. <b>De proces-ID is uniek voor elk gestart proces<\/b>. Als we echter meerdere exemplaren opstarten, komen we een interessant resultaat tegen: in de eerste instantie, als we niets doen en gewoon meerdere exemplaren starten, zijn de adressen verschillend. Maar dat valt niet binnen onze theorie! Dat klopt, omdat in moderne distributies standaard de functie van geheugenrandomisatie is ingeschakeld. Wanneer we deze uitschakelen, krijgen we het verwachte resultaat \u2014 de geheugenadressen van twee gelijktijdig draaiende programma's zullen overeenkomen. <\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 1: Intro (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Uiteindelijk blijkt dat twee onafhankelijke programma's werken met hun eigen priv\u00e9-adresseruimten, die op hun beurt door het besturingssysteem in fysieke geheugen worden weergegeven.<\/b>Daarom zal het gebruik van geheugenadressen binnen \u00e9\u00e9n programma geen invloed hebben op andere programma's en elk programma denkt dat het zijn eigen stuk fysieke geheugen heeft, volledig ter beschikking gesteld. De realiteit is echter dat fysiek geheugen een gedeelde bron is, waarvan het gebruik door het besturingssysteem wordt beheerd.<\/p>\n<h3>Consistentie<\/h3>\n<p>\nEen ander belangrijk onderwerp binnen besturingssystemen is <b>consistentie<\/b>. Deze term wordt gebruikt wanneer het gaat om problemen in het systeem die kunnen optreden bij het werken met meerdere dingen tegelijkertijd binnen \u00e9\u00e9n programma. Consistentieproblemen komen zelfs in het besturingssysteem zelf voor. In de vorige voorbeelden met geheugen- en procesvirtualisatie hebben we begrepen dat het besturingssysteem veel dingen gelijktijdig beheert \u2014 het start het eerste proces, daarna het tweede, enzovoort. Zoals het blijkt, kan dit gedrag leiden tot enkele problemen. Moderne multithreaded programma's ondervinden bijvoorbeeld dergelijke moeilijkheden.<\/p>\n<p>Laten we het volgende programma bekijken:<\/p>\n<p> <img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 1: Intro (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet programma in de hoofdfunctie maakt twee threads aan met behulp van de aanroep <b>Pthread_create()<\/b>. In dit voorbeeld kan een thread worden gezien als een functie die wordt uitgevoerd in hetzelfde geheugen naast andere functies, waarbij het aantal gelijktijdig draaiende functies duidelijk meer dan \u00e9\u00e9n is. In dit voorbeeld start elke thread en voert de functie uit <b>worker(), die op zijn beurt gewoon een variabele incrementeert.<\/b>,.<\/p>\n<p>Laten we dit programma uitvoeren met het argument 1000. Zoals je al had kunnen raden, zou het resultaat 2000 moeten zijn, aangezien elke thread de variabele 1000 keer heeft ge\u00efncrementeerd. Maar zo eenvoudig is het niet. Laten we proberen het programma uit te voeren met een veel groter aantal herhalingen.<\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 1: Intro (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDoor als invoer een nummer, bijvoorbeeld 100000, te geven, verwachten we als uitvoer het nummer 200000 te zien. Echter, wanneer we het nummer 100000 meerdere keren uitvoeren, zullen we niet alleen het juiste antwoord niet zien, maar ook verschillende foute antwoorden krijgen. De oplossing ligt in het feit dat het verhogen van het getal drie bewerkingen vereist: het getal uit het geheugen halen, het incrementeer en het getal vervolgens weer terugschrijven. Aangezien al deze instructies niet atomair worden uitgevoerd (niet allemaal tegelijk), kunnen dergelijke vreemde dingen gebeuren. Dit probleem wordt in de programmering <b>race condition \u2014 race condition<\/b>. Wanneer onbekende krachten op een onbekend moment invloed kunnen uitoefenen op de uitvoering van een van je bewerkingen.<br \/>\n<br \/>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47Operating Systems: Three Easy Pieces. Deel 1: Intro (vertaling) | ProHoster","description":"Inleiding tot besturingssystemen. Hallo, Habr! Ik wil jullie een serie vertaalde artikelen voorstellen van wat ik interessante literatuur vind \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}