{"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\/ro\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","title":{"rendered":"Sisteme de operare: Trei piese u\u0219oare. Partea 3: API-ul proceselor (traducere)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introducere \u00een sistemele de operare<\/h1>\n<p>\nSalut, Habr! Vreau s\u0103 v\u0103 prezint o serie de articole-traduceri dintr-o literatur\u0103 care mi se pare interesant\u0103 - OSTEP. Acest material examineaz\u0103 \u00een mod profund func\u021bionarea sistemelor de operare de tip unix, \u0219i anume - gestionarea proceselor, diferitele planificatoare, memorie \u0219i alte componente asem\u0103n\u0103toare care formeaz\u0103 un sistem de operare modern. Pute\u021bi vizualiza originalul tuturor materialelor aici <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">aici<\/a><\/noindex>. V\u0103 rog s\u0103 \u021bine\u021bi cont c\u0103 traducerea a fost efectuat\u0103 neprofesional (destul de liber), dar sper c\u0103 am p\u0103strat sensul general.<\/p>\n<p>Lucr\u0103rile de laborator pentru aceast\u0103 materie le pute\u021bi g\u0103si aici:<\/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\">adaptarea mea personal\u0103<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nAlte p\u0103r\u021bi:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Partea 1: Introducere<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446866\/\">Partea 2: Abstrac\u021bie: proces<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/447182\/\">Partea 3: Introducere \u00een API-ul proceselor<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nDe asemenea, m\u0103 pute\u021bi urm\u0103ri pe canalul meu de <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegram\u0103<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b>Alarm!<\/b> la aceast\u0103 lec\u021bie exist\u0103 un laborator! vezi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">github<\/a><\/noindex><\/p>\n<h2>API-ul procesului<\/h2>\n<p>Vom examina un exemplu de creare a unui proces \u00een sistemul UNIX. Acesta se realizeaz\u0103 prin dou\u0103 apeluri de sistem <b>fork()<\/b> \u0219i <b>exec()<\/b>.<\/p>\n<h3>Apelul fork()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sisteme de operare: Trei piese u\u0219oare. Partea 3: API-ul proceselor (traducere)\" src=\"\/wp-content\/uploads\/2019\/04\/c0c39726560e18a82ae05a31b43f92c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u0103 analiz\u0103m un program care efectueaz\u0103 apelul fork(). Rezultatul execu\u021biei sale va fi urm\u0103torul.<\/p>\n<p><img decoding=\"async\" alt=\"Sisteme de operare: Trei piese u\u0219oare. Partea 3: API-ul proceselor (traducere)\" src=\"\/wp-content\/uploads\/2019\/04\/3ddddbaf5bbb38e9882827da0513805a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen primul r\u00e2nd, intr\u0103m \u00een func\u021bia main() \u0219i efectuam o ie\u0219ire a unui \u0219ir pe ecran. \u0218irul con\u021bine identificatorul procesului care se nume\u0219te \u00een original <b>PID<\/b> sau identificator de proces. Acest identificator este utilizat \u00een UNIX pentru a accesa procesul. Urm\u0103toarea comand\u0103 va efectua apelul fork(). \u00cen acest moment se creeaz\u0103 o copie practic identic\u0103 a procesului. Pentru sistemul de operare, pare c\u0103 \u00een system sunt pornite 2 copii ale acelea\u0219i programe, care la r\u00e2ndul lor vor ie\u0219i din execu\u021bia func\u021biei fork(). Procesul fiu creat (\u00een raport cu procesul p\u0103rinte care l-a creat) nu va fi executat, \u00eencep\u00e2nd cu func\u021bia main(). Trebuie s\u0103 re\u021binem c\u0103 procesul fiu nu este o copie exact\u0103 a procesului p\u0103rinte, \u00eentruc\u00e2t acesta are propriul s\u0103u spa\u021biu de adresare, propriile sale registre, propriul s\u0103u pointer la instruc\u021biunile executabile \u0219i a\u0219a mai departe. Astfel, valoarea returnat\u0103 apelantului func\u021biei fork() va fi diferit\u0103. \u00cen special, procesul p\u0103rinte va primi ca returnare valoarea PID a procesului copil, iar copilul va primi o valoare egal\u0103 cu 0. Pe baza acestor coduri de returnare, putem separa ulterior procesele \u0219i s\u0103 le facem pe fiecare s\u0103 \u00ee\u0219i \u00eendeplineasc\u0103 sarcina. Totu\u0219i, executarea acestui program nu este strict definit\u0103. Dup\u0103 separarea \u00een 2 procese, sistemul de operare \u00eencepe s\u0103 le monitorizeze \u0219i s\u0103 le planifice activitatea. \u00cen cazul execut\u0103rii pe un procesor cu un singur nucleu, activitatea va continua cu unul dintre procese, \u00een acest caz \u2014 procesul p\u0103rinte, iar apoi va prelua controlul procesul fiu. La o reluare a execu\u021biei, situa\u021bia poate fi diferit\u0103.<\/p>\n<h3>Apelul wait()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sisteme de operare: Trei piese u\u0219oare. Partea 3: API-ul proceselor (traducere)\" src=\"\/wp-content\/uploads\/2019\/04\/abb10671424f1889fbbb3facae739029.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u0103 examin\u0103m urm\u0103torul program. \u00cen acest program, datorit\u0103 prezen\u021bei apelului <b>wait()<\/b> procesul p\u0103rinte va a\u0219tepta \u00eentotdeauna finalizarea execu\u021biei procesului fiu. \u00cen acest caz, vom ob\u021bine o ie\u0219ire strict definit\u0103 a textului pe ecran<\/p>\n<p><img decoding=\"async\" alt=\"Sisteme de operare: Trei piese u\u0219oare. Partea 3: API-ul proceselor (traducere)\" src=\"\/wp-content\/uploads\/2019\/04\/7e8ea54531b7717b7b42802550afd27b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Apelul exec()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sisteme de operare: Trei piese u\u0219oare. Partea 3: API-ul proceselor (traducere)\" src=\"\/wp-content\/uploads\/2019\/04\/dfe3a41c03bc35fd716a1b4c3af68c2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u0103 examin\u0103m apelul <b>exec()<\/b>. Acest apel de sistem este util atunci c\u00e2nd dorim s\u0103 pornim o program\u0103 complet diferit\u0103. Aici vom apela <b>execvp()<\/b> pentru a rula programul wc, care este un program de num\u0103rare a cuvintelor. Ce se \u00eent\u00e2mpl\u0103 atunci c\u00e2nd este apelat\u0103 exec()? La acest apel \u00eei sunt transmise ca argumente numele fi\u0219ierului executabil \u0219i c\u00e2\u021biva parametri. Apoi, codul \u0219i datele statice din acest fi\u0219ier executabil sunt \u00eenc\u0103rcate \u0219i segmentul s\u0103u cu cod este rescris. Alte zone de memorie, cum ar fi stiva \u0219i heap-ul sunt reini\u021bializate. Dup\u0103 aceea, sistemul de operare pur \u0219i simplu execut\u0103 programul, oferindu-i un set de argumente. Astfel, nu am creat un nou proces, ci am transformat programul executat curent \u00eentr-un alt program executat. Dup\u0103 execu\u021bia apelului exec() \u00een copil, apare impresia c\u0103 programul ini\u021bial nu a fost, \u00een principiu, deloc lansat.<\/p>\n<p>Aceasta complexitate a lans\u0103rii este complet normal\u0103 pentru shell-ul Unix \u0219i permite acestei shell s\u0103 execute cod dup\u0103 apelare <b>fork()<\/b>, dar \u00eenainte de apelul <b>exec()<\/b>. Un exemplu de astfel de cod poate fi ajustarea mediului shell-ului conform nevoilor programului executat, \u00eenainte de a-l lansa efectiv.<\/p>\n<p><b>Shell<\/b> \u2014 este doar un program pentru utilizatori. \u00ce\u021bi arat\u0103 un prompt \u0219i a\u0219teapt\u0103 p\u00e2n\u0103 c\u00e2nd introduci ceva. \u00cen majoritatea cazurilor, dac\u0103 introduci numele unui program, shell-ul \u00eei va g\u0103si loca\u021bia, va apela metoda fork() \u0219i apoi, pentru a crea un nou proces, va apela unul dintre tipurile de exec() \u0219i va a\u0219tepta executarea acestuia cu ajutorul apelului wait(). C\u00e2nd procesul copil se finalizeaz\u0103, shell-ul revine din apelul wait() \u0219i va afi\u0219a din nou promptul, a\u0219tept\u00e2nd s\u0103 introduc\u0103 urm\u0103toarea comand\u0103.<\/p>\n<p>Separarea fork() &amp; exec() permite shell-ului s\u0103 fac\u0103 urm\u0103toarele lucruri, de exemplu:<br \/>\n<b>wc file &gt; new_file.<\/b><\/p>\n<p>\u00cen acest exemplu, ie\u0219irea programului wc este redirec\u021bionat\u0103 \u00een fi\u0219ier. Modul \u00een care shell-ul realizeaz\u0103 acest lucru este destul de simplu \u2014 atunci c\u00e2nd creeaz\u0103 procesul copil \u00eenainte de apelarea <b>exec()<\/b>, shell-ul \u00eenchide fluxul standard de ie\u0219ire \u0219i deschide fi\u0219ierul <b>new_file<\/b>, astfel, toat\u0103 ie\u0219irea din programul care va fi lansat mai departe <b>wc<\/b> va fi redirec\u021bionat\u0103 \u00een fi\u0219ier \u00een loc de pe ecran.<\/p>\n<p><b>Unix pipe<\/b> sunt realizate \u00eentr-un mod similar, cu diferen\u021ba c\u0103 utilizeaz\u0103 apelul pipe(). \u00cen acest caz, fluxul de ie\u0219ire al procesului va fi conectat la o coad\u0103 pipe situat\u0103 \u00een nucleu, care va fi de asemenea conectat\u0103 la fluxul de intrare al altui proces.<br \/>\n<br \/>Sursa: <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.2.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\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\/ro\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Sisteme de Operare: Trei Piese U\u0219oare. Partea 3: API-ul Procesului (traducere) | ProHoster","description":"Introducere \u00een sistemele de operare Salut, Habr! Vreau s\u0103 v\u0103 prezint o serie de articole-traduceri dintr-o literatur\u0103 interesant\u0103 din punctul meu de vedere \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/31229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=31229"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31229\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/23195"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=31229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=31229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=31229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}