{"id":31229,"date":"2019-10-31T21:40:10","date_gmt":"2019-10-31T18:40:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-3-process-api-perevod\/"},"modified":"2019-10-31T21:40:10","modified_gmt":"2019-10-31T18:40:10","slug":"operating-systems-three-easy-pieces-part-3-process-api-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","title":{"rendered":"Operativsystem: Tre enkla bitar. Del 3: Process API (\u00f6vers\u00e4ttning)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduktion till operativsystem<\/h1>\n<p>\nHej, Habr! Jag vill presentera f\u00f6r er en serie \u00f6vers\u00e4ttningsartiklar av en intressant litteratur \u2014 OSTEP. I detta material behandlas djupg\u00e5ende hur unix-liknande operativsystem fungerar, n\u00e4mligen arbetet med processer, olika schemal\u00e4ggare, minne och andra liknande komponenter som utg\u00f6r ett modernt OS. Originalet av allt material kan du se h\u00e4r <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>. Observera att \u00f6vers\u00e4ttningen \u00e4r utf\u00f6rd oprofessionellt (relativt fritt), men jag hoppas att jag har bevarat den \u00f6vergripande meningen.<\/p>\n<p>Laborationsarbeten f\u00f6r detta \u00e4mne kan hittas h\u00e4r:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">original<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">original<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">min personliga anpassning<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nAndra delar:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Del 1: Intro<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446866\/\">Del 2: Abstraktion: process<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/447182\/\">Del 3: Introduktion till processernas API<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nOch du kan ocks\u00e5 kolla in min kanal p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegram<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b>Varning!<\/b> det finns ett labb f\u00f6r denna f\u00f6rel\u00e4sning! Kolla h\u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">github<\/a><\/noindex><\/p>\n<h2>Process API<\/h2>\n<p>Vi kommer att titta p\u00e5 ett exempel p\u00e5 hur man skapar en process i ett UNIX-system. Detta sker genom tv\u00e5 systemanrop. <b>fork()<\/b> och <b>exec()<\/b>.<\/p>\n<h3>Anropet fork()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Operativsystem: Tre enkla bitar. Del 3: Process API (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/c0c39726560e18a82ae05a31b43f92c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u00e5t oss \u00f6verv\u00e4ga ett program som g\u00f6r ett fork()-anrop. Resultatet av dess k\u00f6rning kommer att bli f\u00f6ljande.<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystem: Tre enkla bitar. Del 3: Process API (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/3ddddbaf5bbb38e9882827da0513805a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6rst g\u00e5r vi in i funktionen main() och skriver ut en str\u00e4ng p\u00e5 sk\u00e4rmen. Str\u00e4ngen inneh\u00e5ller processens identifierare som p\u00e5 engelska kallas <b>PID<\/b> eller process identifier. Denna identifierare anv\u00e4nds i UNIX f\u00f6r att adressa processen. Den n\u00e4sta kommandot kommer att utf\u00f6ra ett fork()-anrop. Vid detta tillf\u00e4lle skapas en praktiskt taget exakt kopia av processen. F\u00f6r operativsystemet ser det ut som om det finns tv\u00e5 kopior av samma program som k\u00f6rs, som sedan kommer att g\u00e5 ut fr\u00e5n fork()-funktionen. Den nyss skapade processbarnet (i f\u00f6rh\u00e5llande till den skapande processf\u00f6r\u00e4ldern) kommer inte att forts\u00e4tta att k\u00f6ras fr\u00e5n funktionen main(). Det \u00e4r viktigt att komma ih\u00e5g att processbarnet inte \u00e4r en exakt kopia av processf\u00f6r\u00e4ldern; s\u00e4rskilt har det sitt eget adressutrymme, egna register, sin egen pekare p\u00e5 exekverbara instruktioner och s\u00e5 vidare. D\u00e4rf\u00f6r kommer v\u00e4rdet som returneras av fork()-anropet att vara olika. Specifikt kommer processf\u00f6r\u00e4ldern att f\u00e5 PID-v\u00e4rdet f\u00f6r barnprocessen som returv\u00e4rde, medan barnet f\u00e5r v\u00e4rdet 0. Utifr\u00e5n dessa returv\u00e4rden kan vi sedan separera processerna och f\u00e5 varje av dem att utf\u00f6ra sitt arbete. Notera att k\u00f6rningen av detta program inte \u00e4r strikt definierad. N\u00e4r processerna har separerats b\u00f6rjar operativsystemet \u00f6vervaka dem och planera deras arbete. Vid k\u00f6rning p\u00e5 en enkelk\u00e4rnig processor forts\u00e4tter en av processerna, i detta fall - f\u00f6r\u00e4ldern, medan barnprocessen f\u00e5r kontroll efter det. Vid n\u00e4sta k\u00f6rning kan situationen vara annorlunda.<\/p>\n<h3>Anropet wait()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Operativsystem: Tre enkla bitar. Del 3: Process API (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/abb10671424f1889fbbb3facae739029.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u00e5t oss \u00f6verv\u00e4ga f\u00f6ljande program. I detta program, genom att inkludera anropet <b>wait()<\/b> processf\u00f6r\u00e4ldern kommer alltid att v\u00e4nta p\u00e5 att barnprocessen ska avslutas. I detta fall kommer vi att f\u00e5 en strikt definierad utdata p\u00e5 sk\u00e4rmen.<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystem: Tre enkla bitar. Del 3: Process API (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/7e8ea54531b7717b7b42802550afd27b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Anropet exec()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Operativsystem: Tre enkla bitar. Del 3: Process API (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/dfe3a41c03bc35fd716a1b4c3af68c2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u00e5t oss se p\u00e5 anropet <b>exec()<\/b>. Detta systemanrop \u00e4r anv\u00e4ndbart n\u00e4r vi vill k\u00f6ra ett helt annat program. H\u00e4r kommer vi att g\u00f6ra ett anrop till <b>execvp()<\/b> F\u00f6r att k\u00f6ra programmet wc, som \u00e4r ett program f\u00f6r att r\u00e4kna ord. Vad h\u00e4nder n\u00e4r exec() anropas? Detta anrop f\u00e5r som argument namnet p\u00e5 den k\u00f6rbara filen och viss information. Efter det sker en laddning av koden och statiska data fr\u00e5n den k\u00f6rbara filen och den egna segmentet med kod skrivs \u00f6ver. Andra minnesomr\u00e5den, som stack och heap, initialiseras om. D\u00e4refter k\u00f6r OS helt enkelt programmet och skickar en upps\u00e4ttning argument till det. S\u00e5ledes skapade vi inte en ny process, vi transformerade helt enkelt det aktuella k\u00f6rande programmet till ett annat k\u00f6rande program. Efter att exec() anropats, har barnet intrycket av att det ursprungliga programmet knappast ens startades.<\/p>\n<p>Denna komplexitet vid start \u00e4r helt normal f\u00f6r Unix-skalet och g\u00f6r att detta skal kan k\u00f6ra kod efter anropet <b>fork()<\/b>, men innan anropet <b>exec()<\/b>. Ett exempel p\u00e5 s\u00e5dan kod kan vara anpassning av skalets milj\u00f6 till behoven hos det startande programmet, innan dess faktiska k\u00f6rning.<\/p>\n<p><b>Shell<\/b> \u2014 det \u00e4r bara ett anv\u00e4ndarprogram. Det visar en inloggningsprompt och v\u00e4ntar p\u00e5 att du ska skriva n\u00e5got. I de flesta fall, om du skriver namnet p\u00e5 ett program d\u00e4r, kommer skalet att hitta dess plats, anropa fork(), och sedan, f\u00f6r att skapa en ny process, anropa n\u00e5got av typen exec() och v\u00e4nta p\u00e5 att den ska k\u00f6ras med hj\u00e4lp av anropet wait(). N\u00e4r barnprocessen avslutas kommer skalet att \u00e5terg\u00e5 fr\u00e5n anropet wait() och igen visa inloggningsprompten och v\u00e4nta p\u00e5 n\u00e4sta kommando.<\/p>\n<p>Separeringen av fork() &amp; exec() g\u00f6r att skalet kan utf\u00f6ra f\u00f6ljande saker, till exempel:<br \/>\n<b>wc file &gt; new_file.<\/b><\/p>\n<p>I det h\u00e4r exemplet har utdata fr\u00e5n programmet wc omdirigerats till en fil. S\u00e4ttet som skalet uppn\u00e5r detta p\u00e5 \u00e4r ganska enkelt \u2014 n\u00e4r processen barnet skapas, st\u00e4nger skalet den standardutg\u00e5ngsstr\u00f6mmen och \u00f6ppnar filen <b>exec()<\/b>new_file <b>, p\u00e5 s\u00e5 s\u00e4tt kommer all utdata fr\u00e5n det d\u00e4refter k\u00f6rda programmet<\/b>att omdirigeras till filen ist\u00e4llet f\u00f6r till sk\u00e4rmen. <b>wc<\/b> Kommandon<\/p>\n<p><b>Unix-pipor<\/b> implementeras p\u00e5 liknande s\u00e4tt, med skillnaden att de anv\u00e4nder anropet pipe(). I det h\u00e4r fallet kommer utdatafl\u00f6det fr\u00e5n processen att kopplas till en pipe-k\u00f6 som ligger i k\u00e4rnan, som ocks\u00e5 kommer att kopplas till indatafl\u00f6det fr\u00e5n en annan process.<br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/447182\/\">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":23195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31229","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.4 - 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\/sv\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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 3: Process API (\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\/sv\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-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:40:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:40:10+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\udd47Operativsystem: Tre l\u00e4ttanv\u00e4nda delar. Del 3: Process API (\u00f6vers\u00e4ttning) | ProHoster","description":"Introduktion till operativsystem Hej, Habr! Jag vill presentera en serie \u00f6versatta artiklar av en intressant litteratur \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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 3: Process API (\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\/sv\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-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:40:10+00:00","article:modified_time":"2019-10-31T18:40:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31229","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 05:09:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:20:31","updated":"2026-01-21 05:09:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=31229"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31229\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/23195"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=31229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=31229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=31229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}