{"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\/nl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Besturingssystemen: Drie Eenvoudige Stukken. Deel 2: Abstractie: Proces (vertaling)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Inleiding tot besturingssystemen<\/h1>\n<p>\nHallo, Habr! Ik wil jullie een serie vertaalde artikelen voorstellen van een literatuur die ik interessant vind - OSTEP. In dit materiaal wordt diep ingegaan op de werking van Unix-achtige besturingssystemen, met name - hoe processen werken, verschillende planners, geheugen en andere soortgelijke componenten die een modern besturingssysteem vormen. Het origineel van al het materiaal kunt u 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:<\/p>\n<ul>\n<li>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><\/li>\n<li>origineel: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>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><\/li>\n<\/ul>\n<p>\nAndere delen:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Deel 1: Intro<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nEn 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<p>Laten we de meest fundamentele abstractie bekijken die het besturingssysteem aan gebruikers biedt: het proces. De definitie van een proces is vrij eenvoudig - het is <b>een draaiend programma<\/b>. Een programma op zich is een levenloos ding, opgeslagen op de schijf - het is een set instructies en mogelijk enkele statische gegevens die wachten op het moment van uitvoering. Het besturingssysteem pakt deze bytes en start ze, en transformeert het programma in iets nuttigs.<br \/>\n Meestal willen gebruikers meerdere programma's tegelijk draaien, bijvoorbeeld, je kunt op je laptop een browser, een spel, een mediaspeler, een teksteditor enzovoort openen. In feite kan een typische systeem tientallen en honderden processen tegelijk uitvoeren. Dit maakt het systeem gebruiksvriendelijker, je hoeft je nooit zorgen te maken of de CPU vrij is, je start gewoon de programma's.<\/p>\n<p><i>Hieruit volgt het probleem: hoe cre\u00eber je de illusie van meerdere CPU's? Hoe kan het besturingssysteem de illusie van praktisch een onbe aantal CPU's cre\u00ebren, zelfs als je maar \u00e9\u00e9n fysieke CPU hebt?<\/i><\/p>\n<p>Het besturingssysteem cre\u00ebert deze illusie door CPU-virtualisatie. Door \u00e9\u00e9n proces te starten, het vervolgens te stoppen, een ander proces te starten, enzovoort, kan het besturingssysteem de illusie in stand houden dat er meerdere virtuele CPU's zijn, hoewel het in werkelijkheid \u00e9\u00e9n of meerdere fysieke processors zijn. Deze techniek wordt genoemd <b>tijdsdeling van CPU-bronnen<\/b>. Deze techniek stelt gebruikers in staat om zoveel gelijktijdige processen te draaien als ze willen. De prijs van deze oplossing is de prestaties - omdat als de CPU door meerdere processen wordt gedeeld, elk proces langzamer zal worden verwerkt.<br \/>\n Voor het realiseren van CPU-virtualisatie, en vooral om dit goed te doen, heeft het besturingssysteem zowel laagdrempelige als hoogdrempelige ondersteuning nodig. Laagdrempelige ondersteuning wordt genoemd <b>mechanismen<\/b> \u2014 dit zijn laagniveau methoden of protocollen die het benodigde deel van de functionaliteit implementeren. Een voorbeeld van dergelijke functionaliteit is contextwisseling, die het besturingssysteem in staat stelt om \u00e9\u00e9n programma te stoppen en een ander programma op de processor te starten. Deze tijdsdeling is aanwezig in alle moderne besturingssystemen.<br \/>\n Bovenop deze mechanismen ligt enige logica, ingebouwd in het besturingssysteem, in de vorm van \"beleid\". <b>Beleid<\/b> is een bepaalde algoritme voor besluitvorming door het besturingssysteem. Dergelijke beleidsregels bepalen bijvoorbeeld welk programma (uit de lijst van opdrachten) als eerste moet worden uitgevoerd. Zo zou bijvoorbeeld een beleid genaamd <b>scheduler (planningsbeleid)<\/b> bij het maken van beslissingen rekening houden met gegevens zoals: opstartgeschiedenis (welk programma het langst is gedraaid in de afgelopen minuut), welke belasting dit proces genereert (welke soorten programma's zijn uitgevoerd), prestatie-indicatoren (is het systeem geoptimaliseerd voor interactieve interactie of voor doorvoersnelheid) en dergelijke.<\/p>\n<h3>Abstractie: proces<\/h3>\n<p>\n De abstractie van een draaiend programma, uitgevoerd door het besturingssysteem, is wat we noemen <b>proces<\/b>. Zoals eerder vermeld, is een proces simpelweg een draaiend programma, op elk willekeurig moment. Een programma waarmee we samengevoegde informatie uit verschillende systeembronnen kunnen verkrijgen, en tot welke bronnen deze programma toegang heeft of die door het programma worden be\u00efnvloed tijdens de uitvoering.<br \/>\n Om de onderdelen van een proces te begrijpen, is het nodig om de toestanden van het systeem te begrijpen: wat een programma kan lezen of wijzigen tijdens zijn werking. Op elk moment moet duidelijk zijn welke elementen van het systeem belangrijk zijn voor de uitvoering van het programma.<br \/>\n Een van de voor de hand liggende elementen van de systeemstatus die door een proces wordt opgenomen, is <b>geheugen<\/b>. Instructies worden in het geheugen geplaatst. Gegevens die het programma leest of schrijft, bevinden zich ook in het geheugen. Dus het geheugen dat het proces kan adresseren (het zogenaamde adresruimte) maakt deel uit van het proces.<br \/>\n Een belangrijk onderdeel van de status van het systeem zijn de registers. Veel instructies zijn gericht op het wijzigen van de waarden van registers of het lezen van hun waarden, waardoor registers ook een belangrijke rol spelen in de werking van het proces. <br \/>\nBovendien bestaat de status van de machine ook uit enkele speciale registers. Bijvoorbeeld,<b> IP \u2014 instruction pointer<\/b> \u2014 de aanwijzer naar de instructie die het programma op dat moment uitvoert. Daarnaast zijn er <b>stack pointer<\/b> en de bijbehorende <b>frame pointer<\/b>, die worden gebruikt voor het beheren van: functieparameters, lokale variabelen en retouradressen.<br \/>\nTen slotte hebben programma's vaak toegang tot ROM (read-only memory). Informatie over 'I\/O' (invoer-uitvoer) moet een lijst bevatten van bestanden die momenteel door het proces zijn geopend.<\/p>\n<h3>Process API<\/h3>\n<p>\n Om de werking van een proces beter te begrijpen, onderzoeken we voorbeelden van systeemaanroepen die in elke interface van een besturingssysteem moeten worden opgenomen. Deze API's zijn in enige vorm beschikbaar op elk besturingssysteem.<\/p>\n<p>\u25cf <b>Create<\/b> (cre\u00ebren): Het besturingssysteem moet enige methode bevatten die het mogelijk maakt om nieuwe processen aan te maken. Wanneer u een opdracht in de terminal invoert of een applicatie opent door op het pictogram te dubbelklikken, wordt er een verzoek naar het besturingssysteem gestuurd om een nieuw proces aan te maken en het opgegeven programma te starten.<br \/>\n\u25cf <b>Verwijderen<\/b>: Aangezien er een interface is voor het aanmaken van een proces, moet het besturingssysteem ook de mogelijkheid bieden om een proces geforceerd te be\u00ebindigen. De meeste programma's zullen van nature vanzelf opstarten en be\u00ebindigen tijdens hun uitvoering. In elk geval wil de gebruiker de mogelijkheid hebben om ze te be\u00ebindigen, dus een interface voor het stoppen van een proces is noodzakelijk.<br \/>\n\u25cf <b>Wait <\/b>(wachten): Soms is het nuttig om te wachten totdat een proces is voltooid, daarom worden er bepaalde interfaces aangeboden die de mogelijkheid tot wachten bieden.<br \/>\n\u25cf <b>Misc Control<\/b> (diverse controles): Naast het be\u00ebindigen en wachten op een proces zijn er ook andere verschillende controlemethoden. De meeste besturingssystemen bieden bijvoorbeeld de mogelijkheid om een proces te bevriezen (het uitvoeren ervan tijdelijk te stoppen) en later te hervatten (het uitvoeren voortzetten).<br \/>\n\u25cf <b>Status <\/b>(status): Er zijn verschillende interfaces om informatie over de status van een proces te verkrijgen, zoals de duur van zijn werking of in welke staat het zich momenteel bevindt.<\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 2: Abstractie: Proces (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Proces creatie: details<\/h3>\n<p>Een van de interessante zaken is hoe programma's precies worden omgevormd tot processen. Vooral hoe het besturingssysteem een programma laadt en uitvoert. Hoe wordt een proces precies aangemaakt.<br \/>\nAllereerst moet het besturingssysteem de code van het programma en de statische gegevens in het geheugen laden (in de adresruimte van het proces). Programma's bevinden zich meestal op een schijf of solid-state drive in een bepaald uitvoerbaar formaat. Daarom vereist het laadproces van het programma en de statische gegevens dat het besturingssysteem deze bytes van de schijf kan lezen en ze ergens in het geheugen kan plaatsen.<\/p>\n<p>In vroege besturingssystemen werd het laadproces ongeduldig uitgevoerd, wat betekent dat de code volledig in het geheugen werd geladen voordat het programma werd uitgevoerd. Moderne besturingssystemen doen dit lui, dat wil zeggen, ze laden stukjes code of gegevens alleen wanneer deze door het programma tijdens de uitvoering nodig zijn.<\/p>\n<p>Nadat de code en statische gegevens in het geheugen zijn geladen, moet het besturingssysteem nog enkele dingen doen voordat het proces kan worden gestart. Er moet een hoeveelheid geheugen worden toegewezen voor de stack. <b>Programma's gebruiken de stack voor lokale variabelen, functietparameters en terugroeppunten.<\/b>. Het besturingssysteem wijst dit geheugen toe en geeft het aan het proces. De stack kan ook worden toegewezen met enkele argumenten, specifiek het vult de parameters van de main() functie, zoals de arrays argc en argv.<\/p>\n<p>Het besturingssysteem kan ook een hoeveelheid geheugen voor de heap van het programma toewijzen. <b>De heap wordt door programma's gebruikt voor expliciet aangevraagde dynamisch toegewezen gegevens.<\/b>. Programma's vragen deze ruimte aan door de functie aan te roepen. <b>malloc()<\/b> en maakt expliciet schoon door de functie aan te roepen. <b>free()<\/b>. Een heap is nodig voor datatypes zoals: gekoppelde lijsten, hash-tabellen, bomen en andere. Aanvankelijk wordt er een klein stukje geheugen toegewezen aan de heap, maar na verloop van tijd kan de heap, via een bibliotheek-API aanroep van malloc(), om meer geheugen vragen. Het besturingssysteem is betrokken bij het proces van het toewijzen van meer geheugen om deze verzoeken te helpen vervullen.<\/p>\n<p>Het besturingssysteem zal ook initialisatietaken uitvoeren, met name die welke betrekking hebben op invoer en uitvoer. In UNIX-systemen heeft ieder proces standaard 3 geopende bestandsdescriptoren voor de standaardinvoer, -uitvoer en -fouten. Deze descriptoren stellen programma's in staat om invoer uit de terminal te lezen, evenals informatie op het scherm uit te voeren. <\/p>\n<p>Zo bereidt het besturingssysteem, door de code en statische gegevens in het geheugen te laden, de stack te cre\u00ebren en te initialiseren, evenals andere taken met betrekking tot invoer- en uitvoeroperaties uit te voeren, de grondslag voor de uitvoering van het proces voor. Uiteindelijk blijft er nog \u00e9\u00e9n taak over: het programma uitvoerbaar maken via het invoerpunt, dat de functie main() wordt genoemd. Bij het uitvoeren van de functie main() geeft het besturingssysteem de controle over aan de CPU van het nieuw aangemaakte proces, waardoor het programma begint te draaien. <\/p>\n<h3>De status van het proces<\/h3>\n<p>\n Nu we een goed begrip hebben van wat een proces is en hoe het wordt aangemaakt, laten we de processtatussen opsommen waarin het zich kan bevinden. In de eenvoudigste vorm kan een proces zich in een van deze staten bevinden:<br \/>\n\u25cf <b>Running<\/b>. In een uitvoerbare staat wordt het proces op de processor uitgevoerd. Dit betekent dat instructies worden uitgevoerd.<br \/>\n\u25cf <b>Klaar<\/b>. In een klaarstaat is het proces klaar om te beginnen met uitvoeren, maar om een of andere reden voert het besturingssysteem het niet op dat specifieke moment uit.<br \/>\n\u25cf <b>Geblokkeerd<\/b>. In een geblokkeerde staat voert het proces een of andere operatie uit die het verhindert klaar te zijn om uitgevoerd te worden totdat er een bepaald evenement plaatsvindt. Een veelvoorkomend voorbeeld is wanneer een proces een IO-operatie initialiseert, waarbij het geblokkeerd raakt zodat een ander proces de processor kan gebruiken.<\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 2: Abstractie: Proces (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nStel je deze toestanden voor als een grafiek. Zoals we op de afbeelding kunnen zien, kan de status van een proces veranderen tussen RUNNING en READY naar goeddunken van het besturingssysteem. Wanneer de status van een proces verandert van READY naar RUNNING, betekent dit dat het proces is ingepland. In de tegenovergestelde richting - het is van de planning gehaald. Op het moment dat het proces BLOCKED wordt, bijvoorbeeld bij het initialiseren van een IO-operatie, houdt het besturingssysteem het in deze status tot een bepaald evenement plaatsvindt, zoals de voltooiing van de IO. Op dat moment gaat het naar de status READY en mogelijk meteen naar RUNNING, als het besturingssysteem dat beslist. <br \/>\nLaten we kijken naar een voorbeeld van hoe twee processen deze toestanden doorlopen. Eerst stellen we ons voor dat beide processen draaien en elk alleen de CPU gebruiken. In dit geval zullen hun toestanden er als volgt uitzien.<\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 2: Abstractie: Proces (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn het volgende voorbeeld vraagt het eerste proces na een bepaalde tijd om IO en verandert het naar de status BLOCKED, waardoor het andere proces de kans krijgt om te draaien (AFB 1.4). Het besturingssysteem ziet dat proces 0 de CPU niet gebruikt en start proces 1. Tijdens de uitvoering van proces 1 - voltooit de IO en verandert de status van proces 0 naar READY. Uiteindelijk is proces 1 voltooid en bij zijn be\u00ebindiging wordt proces 0 gestart, uitgevoerd en voltooid.<\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 2: Abstractie: Proces (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Gegevenstructuur<\/h3>\n<p>\n Het besturingssysteem zelf is een programma, en net als elk ander programma heeft het enkele sleutelgegevensstructuren die verschillende relevante stukjes informatie bijhouden. Om de status van elk proces bij te houden, zal het besturingssysteem sommige <b>processenlijst<\/b> bijhouden voor alle processen in de status READY en wat aanvullende informatie om de processen die momenteel actief zijn, bij te houden. Ook moet het besturingssysteem de geblokkeerde processen monitoren. Na de voltooiing van de IO is het besturingssysteem verplicht om het benodigde proces wakker te maken en het in de status gereed om te starten te zetten.<\/p>\n<p>Bijvoorbeeld, het besturingssysteem moet de status van de CPU-registers behouden. Op het moment van stopzetting van het proces wordt de status van de registers opgeslagen in de adresruimte van het proces, en op het moment dat het proces weer wordt hervat, worden de waarden van de registers hersteld en zo wordt de uitvoering van dit proces voortgezet.<\/p>\n<p>Naast de staten ready, blocked en running zijn er nog enkele andere staten. Soms kan een proces bij het aanmaken de staat INIT hebben. Tot slot kan een proces in de staat FINAL worden geplaatst, wanneer het al is voltooid, maar de informatie over het nog niet is opgeruimd. In UNIX-systemen wordt deze staat genoemd <b>zombie-proces<\/b>. Deze staat is nuttig in situaties waarin het oudersuccesproces de retourcode van de nakomeling wil weten, bijvoorbeeld, meestal geeft 0 een succesvolle voltooiing aan, terwijl 1 een fout communiceert, maar programmeurs kunnen extra uitvoercodes maken, die verschillende problemen signaleren. Bij de voltooiing doet het ouderproces de laatste systeemaanroep, bijvoorbeeld wait(), om te wachten op de voltooiing van het nakomelingsproces en het besturingssysteem te informeren dat het de gegevens die met het voltooide proces zijn verbonden, kan opruimen.<\/p>\n<p><img decoding=\"async\" alt=\"Besturingssystemen: Drie Eenvoudige Stukken. Deel 2: Abstractie: Proces (vertaling)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Belangrijke punten van de lezing:<\/h3>\n<p>\n\u25cf <b>Proces <\/b> is de belangrijkste abstractie van een draaiend programma in het besturingssysteem. Op elk moment kan een proces worden beschreven door zijn staat: de inhoud van het geheugen in zijn adresruimte, de inhoud van de registers van de processor, inclusief de instruction pointer en stack pointer, evenals informatie over I\/O, bijvoorbeeld de open bestanden die worden gelezen of geschreven.<br \/>\n\u25cf <b>Process API<\/b> bestaat uit aanroepen die programma's kunnen maken met betrekking tot processen. Gewoonlijk zijn dit aanroepen van creatie, verwijdering of andere.<br \/>\n\u25cf Een proces bevindt zich in een van de vele staten, waaronder running, ready, blocked. Verschillende gebeurtenissen, zoals planning, ontwijking van planning of wachten, kunnen de staat van een proces van de ene naar de andere veranderen.<br \/>\n\u25cf <b>Proceslijst<\/b> bevat informatie over alle processen in het systeem. Elke vermelding daarin wordt een process control block genoemd, dat in feite een structuur is die alle benodigde informatie over een specifiek proces bevat.<br \/>\n<br \/>Bron: <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 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\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.\" \/>\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-2-abstraktsiya-protsess-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 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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/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\udd47Besturingssystemen: Drie Eenvoudige Stukken. Deel 2: Abstractie: Proces (vertaling) | ProHoster","description":"Inleiding tot besturingssystemen Hallo, Habr! Ik wil jullie graag een serie vertaalde artikelen voorstellen van een literatuur die ik interessant vind \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-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 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.","og:url":"https:\/\/prohoster.info\/nl\/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","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\/30992","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=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}