{"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\/cs\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","title":{"rendered":"Opera\u010dn\u00ed syst\u00e9my: T\u0159i snadn\u00e9 kusy. \u010c\u00e1st 3: Procesn\u00ed API (p\u0159eklad)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>\u00davod do opera\u010dn\u00edch syst\u00e9m\u016f<\/h1>\n<p>\nAhoj, Habr! R\u00e1d bych v\u00e1m p\u0159edstavil s\u00e9rii \u010dl\u00e1nk\u016f-p\u0159eklad\u016f jedn\u00e9 zaj\u00edmav\u00e9 literatury, kterou pova\u017euji za hodnotnou \u2014 OSTEP. Tento materi\u00e1l se hloub\u011bji zab\u00fdv\u00e1 prac\u00ed unixov\u00fdch opera\u010dn\u00edch syst\u00e9m\u016f, konkr\u00e9tn\u011b prac\u00ed s procesy, r\u016fzn\u00fdmi pl\u00e1nova\u010di, pam\u011bt\u00ed a dal\u0161\u00edmi komponentami, kter\u00e9 tvo\u0159\u00ed modern\u00ed OS. Origin\u00e1l v\u0161ech materi\u00e1l\u016f m\u016f\u017eete vid\u011bt tady <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">tady<\/a><\/noindex>. Upozor\u0148uji, \u017ee p\u0159eklad byl proveden neprofesion\u00e1ln\u011b (pom\u011brn\u011b voln\u011b), ale douf\u00e1m, \u017ee jsem zachoval celkov\u00fd smysl.<\/p>\n<p>Laboratorn\u00ed pr\u00e1ce k tomuto p\u0159edm\u011btu najdete zde:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">origin\u00e1l<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">origin\u00e1l<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">m\u00e1 osobn\u00ed adaptace<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nDal\u0161\u00ed \u010d\u00e1sti:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">\u010c\u00e1st 1: \u00davod<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446866\/\">\u010c\u00e1st 2: Abstrakce: proces<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/447182\/\">\u010c\u00e1st 3: \u00davod do API proces\u016f<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nA m\u016f\u017eete tak\u00e9 nahl\u00e9dnout na m\u016fj kan\u00e1l na <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">Telegramu<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b>Pozor!<\/b> k t\u00e9to p\u0159edn\u00e1\u0161ce je laborka! pod\u00edvej se <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">github<\/a><\/noindex><\/p>\n<h2>Procesn\u00ed API<\/h2>\n<p>Prozkoumejme p\u0159\u00edklad vytvo\u0159en\u00ed procesu v syst\u00e9mu UNIX. Doch\u00e1z\u00ed k n\u011bmu prost\u0159ednictv\u00edm dvou syst\u00e9mov\u00fdch vol\u00e1n\u00ed. <b>fork()<\/b> a <b>exec()<\/b>.<\/p>\n<h3>Vol\u00e1n\u00ed fork()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Opera\u010dn\u00ed syst\u00e9my: T\u0159i snadn\u00e9 kusy. \u010c\u00e1st 3: Procesn\u00ed API (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/c0c39726560e18a82ae05a31b43f92c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPod\u00edvejme se na program, kter\u00fd prov\u00e1d\u00ed vol\u00e1n\u00ed fork(). V\u00fdsledek jeho proveden\u00ed bude n\u00e1sleduj\u00edc\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00ed syst\u00e9my: T\u0159i snadn\u00e9 kusy. \u010c\u00e1st 3: Procesn\u00ed API (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/3ddddbaf5bbb38e9882827da0513805a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNejprve vstoup\u00edme do funkce main() a provedeme v\u00fdstup \u0159et\u011bzce na obrazovku. \u0158et\u011bzec obsahuje identifik\u00e1tor procesu, kter\u00fd se p\u016fvodn\u011b naz\u00fdv\u00e1 <b>PID<\/b> nebo identifik\u00e1tor procesu. Tento identifik\u00e1tor se pou\u017e\u00edv\u00e1 v UNIXu k adresaci k procesu. Dal\u0161\u00ed p\u0159\u00edkaz vykon\u00e1 vol\u00e1n\u00ed fork(). V t\u00e9to chv\u00edli se vytv\u00e1\u0159\u00ed prakticky p\u0159esn\u00e1 kopie procesu. Pro OS to vypad\u00e1 tak, \u017ee v syst\u00e9mu b\u011b\u017e\u00ed jako by dv\u011b kopie jedn\u00e9 a t\u00e9\u017ee aplikace, kter\u00e9 se n\u00e1sledn\u011b ukon\u010d\u00ed po proveden\u00ed funkce fork(). Nov\u011b vytvo\u0159en\u00fd proces potomek (vzhledem k procesi rodi\u010de, kter\u00fd ho vytvo\u0159il) ji\u017e nebude pokra\u010dovat v prov\u00e1d\u011bn\u00ed funkce main(). Je t\u0159eba si pamatovat, \u017ee proces potomek nen\u00ed p\u0159esnou kopi\u00ed procesu rodi\u010de, m\u00e1 nap\u0159\u00edklad vlastn\u00ed adresn\u00ed prostor, vlastn\u00ed registry, vlastn\u00ed ukazatel na vykon\u00e1van\u00e9 instrukce a podobn\u011b. T\u00edm p\u00e1dem bude hodnota vr\u00e1cen\u00e1 volaj\u00edc\u00edmu funkci fork() odli\u0161n\u00e1. Konkr\u00e9tn\u011b proces rodi\u010d obdr\u017e\u00ed jako n\u00e1vratovou hodnotu PID procesu d\u00edt\u011bte, zat\u00edmco d\u00edt\u011b obdr\u017e\u00ed hodnotu rovnaj\u00edc\u00ed se 0. Na z\u00e1klad\u011b t\u011bchto n\u00e1vratov\u00fdch k\u00f3d\u016f lze pozd\u011bji rozd\u011blit procesy a p\u0159im\u011bt ka\u017ed\u00fd z nich vykon\u00e1vat svou pr\u00e1ci. P\u0159i tom vykon\u00e1v\u00e1n\u00ed t\u00e9to aplikace nen\u00ed striktn\u011b ur\u010deno. Pot\u00e9, co dojde k rozd\u011blen\u00ed na 2 procesy, OS za\u010dne monitorovat je, stejn\u011b jako pl\u00e1novat jejich pracovn\u00ed zat\u00ed\u017een\u00ed. V p\u0159\u00edpad\u011b prov\u00e1d\u011bn\u00ed na jednoj\u00e1drov\u00e9m procesoru bude pokra\u010dovat jeden z proces\u016f, v tomto p\u0159\u00edpad\u011b \u2013 rodi\u010d, a pot\u00e9 z\u00edsk\u00e1 kontrolu proces potomek. P\u0159i op\u011btovn\u00e9m spu\u0161t\u011bn\u00ed m\u016f\u017ee situace dopadnout jinak.<\/p>\n<h3>Vol\u00e1n\u00ed wait()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Opera\u010dn\u00ed syst\u00e9my: T\u0159i snadn\u00e9 kusy. \u010c\u00e1st 3: Procesn\u00ed API (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/abb10671424f1889fbbb3facae739029.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPod\u00edvejme se na n\u00e1sleduj\u00edc\u00ed program. V tomto programu d\u00edky existenci vol\u00e1n\u00ed <b>wait()<\/b> proces rodi\u010d v\u017edy bude \u010dekat na dokon\u010den\u00ed pr\u00e1ce procesu potomka. V tomto p\u0159\u00edpad\u011b z\u00edsk\u00e1me striktn\u011b ur\u010den\u00fd v\u00fdstup textu na obrazovku.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00ed syst\u00e9my: T\u0159i snadn\u00e9 kusy. \u010c\u00e1st 3: Procesn\u00ed API (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/7e8ea54531b7717b7b42802550afd27b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Vol\u00e1n\u00ed exec()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Opera\u010dn\u00ed syst\u00e9my: T\u0159i snadn\u00e9 kusy. \u010c\u00e1st 3: Procesn\u00ed API (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/dfe3a41c03bc35fd716a1b4c3af68c2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProzkoumejme vol\u00e1n\u00ed <b>exec()<\/b>. Toto syst\u00e9mov\u00e9 vol\u00e1n\u00ed je u\u017eite\u010dn\u00e9, kdy\u017e chceme spustit zcela jin\u00fd program. Zde budeme volat <b>execvp()<\/b> k spu\u0161t\u011bn\u00ed programu wc, kter\u00fd je programem pro po\u010d\u00edt\u00e1n\u00ed slov. Co se tedy stane p\u0159i vol\u00e1n\u00ed exec()? Jako argumenty se p\u0159ed\u00e1vaj\u00ed n\u00e1zev spustiteln\u00e9ho souboru a n\u011bkter\u00e9 parametry. Pot\u00e9 dojde k na\u010dten\u00ed k\u00f3du a statick\u00fdch dat z tohoto spustiteln\u00e9ho souboru a p\u0159episov\u00e1n\u00ed vlastn\u00edho segmentu s k\u00f3dem. Ostatn\u00ed oblasti pam\u011bti, jako z\u00e1sobn\u00edk a halda, jsou znovu inicializov\u00e1ny. N\u00e1sledn\u011b OS jednodu\u0161e spust\u00ed program, p\u0159ed\u00e1vaj\u00edc mu sadu argument\u016f. Tak jsme nevytvo\u0159ili nov\u00fd proces, ale pouze jsme transformovali aktu\u00e1ln\u011b spu\u0161t\u011bn\u00fd program na jin\u00fd spu\u0161t\u011bn\u00fd program. Po proveden\u00ed vol\u00e1n\u00ed exec() v potomkovi vznik\u00e1 dojem, \u017ee p\u016fvodn\u00ed program se v\u016fbec nespustil.<\/p>\n<p>Takov\u00e9 zt\u00ed\u017een\u00ed spu\u0161t\u011bn\u00ed je naprosto norm\u00e1ln\u00ed pro shell prost\u0159ed\u00ed Unixu a umo\u017e\u0148uje t\u00e9to shellov\u00e9 skriptovac\u00ed prost\u0159ed\u00ed vykon\u00e1vat k\u00f3d po vol\u00e1n\u00ed <b>fork()<\/b>, ale p\u0159ed vol\u00e1n\u00edm <b>exec()<\/b>. P\u0159\u00edkladem takov\u00e9ho k\u00f3du m\u016f\u017ee b\u00fdt p\u0159izp\u016fsoben\u00ed prost\u0159ed\u00ed shellu pot\u0159eb\u00e1m spou\u0161t\u011bn\u00e9ho programu p\u0159ed jeho vlastn\u00edm spu\u0161t\u011bn\u00edm.<\/p>\n<p><b>Shell<\/b> \u2014 je pouze u\u017eivatelsk\u00fd program. Zobrazuje v\u00e1m \u0159\u00e1dek v\u00fdzvy a \u010dek\u00e1, a\u017e do n\u011bj n\u011bco nap\u00ed\u0161ete. Ve v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f, pokud tam nap\u00ed\u0161ete n\u00e1zev programu, shell jeho um\u00edst\u011bn\u00ed najde, zavol\u00e1 metodu fork() a pot\u00e9, aby vytvo\u0159il nov\u00fd proces, zavol\u00e1 n\u011bkterou z variant exec() a \u010dek\u00e1 na jeho vykon\u00e1n\u00ed pomoc\u00ed vol\u00e1n\u00ed wait(). Jakmile proces-potomek skon\u010d\u00ed, shell se vr\u00e1t\u00ed z vol\u00e1n\u00ed wait() a op\u011bt zobraz\u00ed \u0159\u00e1dek v\u00fdzvy a bude \u010dekat na zad\u00e1n\u00ed dal\u0161\u00edho p\u0159\u00edkazu.<\/p>\n<p>Odd\u011blen\u00ed fork() &amp; exec() umo\u017e\u0148uje shellu prov\u00e1d\u011bt n\u00e1sleduj\u00edc\u00ed v\u011bci, nap\u0159\u00edklad:<br \/>\n<b>wc file &gt; new_file.<\/b><\/p>\n<p>V tomto p\u0159\u00edkladu je v\u00fdstup programu wc p\u0159esm\u011brov\u00e1n do souboru. Zp\u016fsob, jak\u00fdm shell toho dosahuje, je dost jednoduch\u00fd \u2014 p\u0159i vytv\u00e1\u0159en\u00ed procesu-d\u00edt\u011bte p\u0159ed vol\u00e1n\u00edm <b>exec()<\/b>, shell uzav\u00edr\u00e1 standardn\u00ed v\u00fdstupn\u00ed proud a otv\u00edr\u00e1 soubor <b>new_file<\/b>, \u010d\u00edm\u017e je ve\u0161ker\u00fd v\u00fdstup z d\u00e1le spou\u0161t\u011bn\u00e9ho programu <b>wc<\/b> p\u0159esm\u011brov\u00e1n do souboru m\u00edsto obrazovky.<\/p>\n<p><b>Unixov\u00e9 potrub\u00ed<\/b> jsou realizov\u00e1na podobn\u00fdm zp\u016fsobem, s rozd\u00edlem, \u017ee pou\u017e\u00edvaj\u00ed vol\u00e1n\u00ed pipe(). V tomto p\u0159\u00edpad\u011b bude v\u00fdstupn\u00ed proud procesu p\u0159ipojen k front\u011b potrub\u00ed um\u00edst\u011bn\u00e9 v j\u00e1d\u0159e, ke kter\u00e9 bude p\u0159ipojen vstupn\u00ed proud jin\u00e9ho procesu.<br \/>\n<br \/>Zdroj: <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.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\/cs\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Opera\u010dn\u00ed syst\u00e9my: T\u0159i jednoduch\u00e9 \u010d\u00e1sti. \u010c\u00e1st 3: API procesu (p\u0159eklad) | ProHoster","description":"\u00davod do opera\u010dn\u00edch syst\u00e9m\u016f Ahoj, Habr! Chci v\u00e1m p\u0159edstavit svou s\u00e9rii p\u0159eklad\u016f jedn\u00e9 zaj\u00edmav\u00e9 literatury \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/31229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=31229"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/31229\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/23195"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=31229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=31229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=31229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}