{"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\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","title":{"rendered":"K\u00e4itatavad s\u00fcsteemid: kolm lihtsat osa. 3. osa: Protsessi API (t\u00f5lge)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Sissejuhatus operatsioonis\u00fcsteemidesse<\/h1>\n<p>\nTere, Habr! Soovin esitleda teile huvitavate artiklite t\u00f5lgitud seeriat \u2014 OSTEP. K\u00e4esolevas materjalis uuritakse s\u00fcgavalt unix-laadsete operatsioonis\u00fcsteemide toimimist, nimelt \u2014 protsesside, erinevate planeerijate, m\u00e4lu ja teiste sarnaste komponentide t\u00f6\u00f6tamist, mis koosnevad kaasaegsest operatsioonis\u00fcsteemist. K\u00f5iki materjale saate n\u00e4ha siin <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">siit<\/a><\/noindex>. Palun arvestage, et t\u00f5lge on tehtud mitteprofessionaalselt (piisavalt vaba), kuid loodan, et \u00fcldine m\u00f5te on s\u00e4ilinud.<\/p>\n<p>K\u00e4esoleva aine laborit\u00f6id saab leida siit:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">originaal<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">originaal<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">minu isiklik kohandamine<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nTeised osad:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Osa 1: Sissejuhatus<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446866\/\">Osa 2: Abstraktsioon: protsess<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/447182\/\">Osa 3: Sissejuhatus protsesside API-sse<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nJa v\u00f5ite ka k\u00fclastada minu kanalit <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">Telegramis<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b>H\u00e4ire!<\/b> selle loengu jaoks on labor! vaata <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">github<\/a><\/noindex><\/p>\n<h2>Process API<\/h2>\n<p>Vaatame n\u00e4idet protsessi loomise kohta UNIX s\u00fcsteemis. See toimub kahe s\u00fcsteemik\u00f5ne kaudu <b>fork()<\/b> ja <b>exec()<\/b>.<\/p>\n<h3>Fork() k\u00f5ne<\/h3>\n<p>\n<img decoding=\"async\" alt=\"K\u00e4itatavad s\u00fcsteemid: kolm lihtsat osa. 3. osa: Protsessi API (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/c0c39726560e18a82ae05a31b43f92c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVaatame programmi, mis kutsub esile fork(). Selle t\u00e4itmise tulemus on j\u00e4rgmine.<\/p>\n<p><img decoding=\"async\" alt=\"K\u00e4itatavad s\u00fcsteemid: kolm lihtsat osa. 3. osa: Protsessi API (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/3ddddbaf5bbb38e9882827da0513805a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEsiteks siseneme funktsiooni main() ja kuvame ekraanile stringi. String sisaldab protsessi identifikaatori, mis originaalis nimetatakse <b>PID<\/b> v\u00f5i protsessi identifikaator. Seda identifikaatorit kasutatakse UNIXis protsessiga suhtlemiseks. J\u00e4rgmise k\u00e4sklusega kutsub fork() esile. Sel ajahetkel luuakse praktiliselt t\u00e4pne koopia protsessist. Operatsioonis\u00fcsteemile n\u00e4eb see v\u00e4lja nii, et s\u00fcsteemis on k\u00e4ivitunud nagu 2 koopiat samast programmist, mis omakorda v\u00e4ljuvad fork() funktsioonist. Uuesti loodud protsess-t\u00fctar (seoses tema loojaga, protsess-ema) ei hakka enam t\u00e4itma, alustades funktsioonist main(). Tuleb meeles pidada, et protsess-t\u00fctar ei ole t\u00e4pne koopia protsess-ema, eelk\u00f5ige on tal oma aadressiruumi, oma registrid, oma n\u00e4itaja t\u00e4idetavatele juhistele ja nii edasi. Seega, v\u00e4\u00e4rtus, mis suunajale fork() funktsiooni tagastatakse, on erinev. Eelk\u00f5ige saab protsess-ema tagasiv\u00e4\u00e4rtuseks lapse protsessi PID v\u00e4\u00e4rtuse, samas kui laps saab v\u00e4\u00e4rtuse, mis on v\u00f5rdne 0. Nende tagasiv\u00e4\u00e4rtustega saab hiljem eristada protsesse ja sundida iga\u00fcht neist t\u00e4itma oma t\u00f6\u00f6d. Samas ei ole antud programmi t\u00e4itmine rangelt m\u00e4\u00e4ratletud. P\u00e4rast kahe protsessi vahel jagamist hakkab operatsioonis\u00fcsteem neid j\u00e4lgima ja planeerima nende t\u00f6\u00f6d. \u00dcksikesituatsioonis j\u00e4tkab t\u00f6\u00f6 tegemist \u00fcks protsess, antud juhul \u2014 ema, ning seej\u00e4rel v\u00f5tab juhtimise endale protsess-t\u00fctar. Taas k\u00e4ivitamisel v\u00f5ib olukord kujuneda teisiti.<\/p>\n<h3>wait() k\u00f5ne<\/h3>\n<p>\n<img decoding=\"async\" alt=\"K\u00e4itatavad s\u00fcsteemid: kolm lihtsat osa. 3. osa: Protsessi API (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/abb10671424f1889fbbb3facae739029.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVaatame j\u00e4rgmist programmi. Selles programmis t\u00e4nu wait() k\u00f5ne olemasolule <b>wait()<\/b> protsess-ema ootab alati protsess-t\u00fctar l\u00f5petamist. Sel juhul saame rangelt m\u00e4\u00e4ratletud v\u00e4ljundi ekraanile<\/p>\n<p><img decoding=\"async\" alt=\"K\u00e4itatavad s\u00fcsteemid: kolm lihtsat osa. 3. osa: Protsessi API (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/7e8ea54531b7717b7b42802550afd27b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>exec() k\u00f5ne<\/h3>\n<p>\n<img decoding=\"async\" alt=\"K\u00e4itatavad s\u00fcsteemid: kolm lihtsat osa. 3. osa: Protsessi API (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/dfe3a41c03bc35fd716a1b4c3af68c2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVaatame exec() kutsumist. <b>exec()<\/b>See s\u00fcsteemik\u00f5ne on kasulik, kui soovime k\u00e4ivitada t\u00e4iesti teise programmi. Siin kutsume esile <b>execvp()<\/b> wc programmi k\u00e4ivitamiseks, mis on s\u00f5nade loendamise programm. Mis siis toimub, kui kutsutakse exec()? Sellesse kutse antakse argumendina t\u00e4idetava faili nimi ja m\u00f5ned parameetrid. P\u00e4rast seda laaditakse kood ja staatilised andmed sellest k\u00e4itatavast failist ja asendatakse oma koodisegment. \u00dclej\u00e4\u00e4nud m\u00e4lupiirkonnad, nagu \u00f5iguste ja kuhja, l\u00e4htestatakse. P\u00e4rast seda tegeleb ops\u00fcsteem lihtsalt programmi k\u00e4ivitamisega, edastades sellele argumendid. Sel viisil ei loonud me uut protsessi, vaid lihtsalt muundasime jooksva programmi teiseks jooksva programmiks. P\u00e4rast exec() kutset on j\u00e4rglases mulje, et algne programm nagu ei k\u00e4ivitunudki.<\/p>\n<p>Selle k\u00e4ivitamise keerukus on t\u00e4iesti normaalne Unix shell-\u00fchenduses ja v\u00f5imaldab sellel shellil t\u00e4ita koodi p\u00e4rast kutset <b>fork()<\/b>, kuid enne kutset <b>exec()<\/b>. Sellise koodi n\u00e4itena v\u00f5ib tuua shelli keskkonna kohandamise jooksva programmi vajadustele enne selle otsest k\u00e4ivitamist.<\/p>\n<p><b>Shell<\/b> \u2014 see on lihtsalt kasutaja programm. See n\u00e4itab teile kutse rida ja ootab, kuni te sinna midagi kirjutate. Enamikul juhtudel, kui sinna programmimise nime kirjutada, leiab shell selle asukoha, kutsub esile fork() meetodi ja seej\u00e4rel, et luua uus protsess, kutsub ta m\u00f5nda exec() t\u00fc\u00fcpi ning ootab selle t\u00e4itmise l\u00f5petamist wait() kutsega. Kui j\u00e4rglase protsess l\u00f5petab, naaseb shell wait() kutse l\u00f5petamisele ja kuvab j\u00e4lle kutse rida, ootades j\u00e4rgmise k\u00e4su sisestamist.<\/p>\n<p>fork() ja exec() eraldamine v\u00f5imaldab shellil teha j\u00e4rgmisi asju, n\u00e4iteks:<br \/>\n<b>wc file &gt; new_file.<\/b><\/p>\n<p>Selles n\u00e4ites on wc programmi v\u00e4ljund suunatud faili. Viis, kuidas shell seda saavutab, on piisavalt lihtne \u2014 protsessi-lapse loomisel ennen kutset <b>exec()<\/b>, sulgeb shell standardv\u00e4ljundvoo ja avab faili <b>new_file<\/b>, seega suunatakse edasise jooksva programmi kogu v\u00e4ljund faili asemel ekraanile. <b>wc<\/b> Unix pipe<\/p>\n<p><b>on rakendatud sarnasel viisil, erinevuseks on see, et need kasutavad pipe() kutset. Sel juhul on protsessi v\u00e4ljundvoog \u00fchendatud tuumasse asuva ootequeuesse, millele on \u00fchendatud teise protsessi sisendvoog.<\/b> \ud83e\udd47Operating Systems: Three Easy Pieces. Part 3: Process API (t\u00f5lge) | ProHoster<br \/>\n<br \/>Allikas: <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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\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\/et\/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.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Operating Systems: Three Easy Pieces. Part 3: Process API (t\u00f5lge) | ProHoster","description":"Sissejuhatus operatsioonis\u00fcsteemidesse Tere, Habr! Soovin tutvustada teile huvitavat artiklite seeriat, mis on t\u00f5lgitud \u00fcritustest, mis mulle meeldivad \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/31229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=31229"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/31229\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/23195"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=31229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=31229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=31229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}