{"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\/cs\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Operating Systems: Three Easy Pieces. Part 2: Abstrakce: Proces (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>origin\u00e1l: <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>origin\u00e1l: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>moje osobn\u00ed adaptace: <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>\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<\/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><\/p>\n<p>Pod\u00edvejme se na nejz\u00e1kladn\u011bj\u0161\u00ed abstrakci, kterou opera\u010dn\u00ed syst\u00e9m poskytuje u\u017eivatel\u016fm: proces. Definice procesu je docela jednoduch\u00e1 \u2014 je to <b>b\u011b\u017e\u00edc\u00ed program<\/b>. Program s\u00e1m o sob\u011b je ne\u017eiv\u00e1 v\u011bc, nach\u00e1zej\u00edc\u00ed se na disku \u2014 je to soubor instrukc\u00ed a mo\u017en\u00e1 n\u011bjak\u00e1 statick\u00e1 data, kter\u00e1 \u010dekaj\u00ed na spu\u0161t\u011bn\u00ed. Pr\u00e1v\u011b opera\u010dn\u00ed syst\u00e9m bere tyto bajty a spou\u0161t\u00ed je, p\u0159etv\u00e1\u0159ej\u00edc program na n\u011bco u\u017eite\u010dn\u00e9ho.<br \/>\n Nej\u010dast\u011bji cht\u011bj\u00ed u\u017eivatel\u00e9 spou\u0161t\u011bt v\u00edce ne\u017e jeden program z\u00e1rove\u0148, nap\u0159\u00edklad m\u016f\u017eete spustit na sv\u00e9m notebooku prohl\u00ed\u017ee\u010d, hru, multimedi\u00e1ln\u00ed p\u0159ehr\u00e1va\u010d, textov\u00fd editor a podobn\u011b. Ve skute\u010dnosti typick\u00fd syst\u00e9m m\u016f\u017ee spou\u0161t\u011bt des\u00edtky a stovky proces\u016f sou\u010dasn\u011b. Tento fakt \u010din\u00ed syst\u00e9m snadn\u011bj\u0161\u00edm na pou\u017e\u00edv\u00e1n\u00ed, nikdy se nemus\u00edte starat o to, zda je CPU voln\u00e9, prost\u011b spou\u0161t\u00edte programy.<\/p>\n<p><i>Odtud vyvst\u00e1v\u00e1 probl\u00e9m: jak zajistit iluzi mnoha CPU? Jak m\u016f\u017ee opera\u010dn\u00ed syst\u00e9m vytvo\u0159it iluzi t\u00e9m\u011b\u0159 nekone\u010dn\u00e9ho po\u010dtu CPU, i kdy\u017e m\u00e1te pouze jeden fyzick\u00fd CPU?<\/i><\/p>\n<p>Opera\u010dn\u00ed syst\u00e9m vytv\u00e1\u0159\u00ed tuto iluzi pomoc\u00ed virtualizace CPU. Spou\u0161t\u011bn\u00edm jednoho procesu, pot\u00e9 jeho zastaven\u00edm, spu\u0161t\u011bn\u00edm jin\u00e9ho procesu a tak d\u00e1le, m\u016f\u017ee opera\u010dn\u00ed syst\u00e9m udr\u017eovat iluzi, \u017ee existuje mnoho virtu\u00e1ln\u00edch CPU, a\u010dkoliv ve skute\u010dnosti bude pouze jeden nebo n\u011bkolik fyzick\u00fdch procesor\u016f. Tato technika se naz\u00fdv\u00e1 <b>d\u011bl\u011bn\u00ed prost\u0159edk\u016f CPU v \u010dase<\/b>. Tato technika umo\u017e\u0148uje u\u017eivatel\u016fm spou\u0161t\u011bt tolik sou\u010dasn\u00fdch proces\u016f, kolik cht\u011bj\u00ed. Cena za toto \u0159e\u0161en\u00ed je v\u00fdkon \u2013 proto\u017ee pokud CPU sd\u00edl\u00ed n\u011bkolik proces\u016f, ka\u017ed\u00fd proces bude zpracov\u00e1v\u00e1n pomaleji.<br \/>\n Pro realizaci virtualizace CPU, a zejm\u00e9na pro to, aby to d\u011blalo dob\u0159e, opera\u010dn\u00ed syst\u00e9m pot\u0159ebuje jak n\u00edzko\u00farov\u0148ovou, tak vysoko\u00farov\u0148ovou podporu. N\u00edzko\u00farov\u0148ov\u00e1 podpora se naz\u00fdv\u00e1 <b>mechanismy<\/b> \u2014 to jsou n\u00edzko\u00farov\u0148ov\u00e9 metody nebo protokoly, kter\u00e9 implementuj\u00ed pot\u0159ebnou \u010d\u00e1st funk\u010dnosti. P\u0159\u00edkladem takov\u00e9 funk\u010dnosti je p\u0159ep\u00edn\u00e1n\u00ed kontextu, kter\u00e9 d\u00e1v\u00e1 opera\u010dn\u00edmu syst\u00e9mu mo\u017enost zastavit jeden program a spustit na procesoru jin\u00fd program. Toto d\u011blen\u00ed v \u010dase je realizov\u00e1no ve v\u0161ech modern\u00edch opera\u010dn\u00edch syst\u00e9mech.<br \/>\n Na vrcholu t\u011bchto mechanism\u016f se nach\u00e1z\u00ed ur\u010dit\u00e9 logick\u00e9 prvky zakotven\u00e9 v OS ve form\u011b \"politik\". <b>Politika<\/b> je ur\u010dit\u00e9 rozhodovac\u00ed algoritmus opera\u010dn\u00edho syst\u00e9mu. Tyto politiky nap\u0159\u00edklad rozhoduj\u00ed, kterou program je t\u0159eba spustit (ze seznamu p\u0159\u00edkaz\u016f) jako prvn\u00ed. Nap\u0159\u00edklad tuto \u00falohu vy\u0159e\u0161\u00ed politika naz\u00fdvan\u00e1 <b>pl\u00e1nova\u010d (scheduling policy)<\/b> a p\u0159i v\u00fdb\u011bru rozhodnut\u00ed se \u0159\u00edd\u00ed takov\u00fdmi daty jako: historie spu\u0161t\u011bn\u00ed (kter\u00fd program byl spu\u0161t\u011bn nejd\u00e9le za posledn\u00ed minutu), jakou z\u00e1t\u011b\u017e vykon\u00e1v\u00e1 tento proces (jak\u00e9 typy program\u016f byly spu\u0161t\u011bny), metriky v\u00fdkonnosti (je syst\u00e9m optimalizov\u00e1n pro interaktivn\u00ed interakci nebo pro propustnost) a tak d\u00e1le.<\/p>\n<h3>Abstrakce: proces<\/h3>\n<p>\n Abstrakce b\u011b\u017e\u00edc\u00edho programu, kter\u00fd prov\u00e1d\u00ed opera\u010dn\u00ed syst\u00e9m je to, co naz\u00fdv\u00e1me <b>proces<\/b>. Jak bylo ji\u017e zm\u00edn\u011bno, proces je prost\u011b b\u011b\u017e\u00edc\u00ed program, v jak\u00e9mkoli okam\u017eiku \u010dasu. Program, s pomoc\u00ed kter\u00e9ho m\u016f\u017eeme z\u00edskat souhrnn\u00e9 informace z r\u016fzn\u00fdch zdroj\u016f syst\u00e9mu, a na kter\u00e9 se tento program obrac\u00ed nebo kter\u00e9 se dot\u00fdk\u00e1 b\u011bhem sv\u00e9ho prov\u00e1d\u011bn\u00ed.<br \/>\n Pro pochopen\u00ed slo\u017eek procesu je t\u0159eba rozum\u011bt stav\u016fm syst\u00e9mu: co program m\u016f\u017ee \u010d\u00edst nebo m\u011bnit b\u011bhem sv\u00e9ho provozu. V jak\u00e9mkoli okam\u017eiku je nutn\u00e9 v\u011bd\u011bt, kter\u00e9 prvky syst\u00e9mu jsou d\u016fle\u017eit\u00e9 pro prov\u00e1d\u011bn\u00ed programu.<br \/>\n Jedn\u00edm z o\u010dividn\u00fdch prvk\u016f stavu syst\u00e9mu, kter\u00e9 zahrnuje proces, je <b>pam\u011b\u0165<\/b>. Instrukce se nach\u00e1zej\u00ed v pam\u011bti. Data, kter\u00e1 program \u010dte nebo zapisuje, se tak\u00e9 nach\u00e1zej\u00ed v pam\u011bti. Tak\u017ee pam\u011b\u0165, kterou proces m\u016f\u017ee adresovat (takzvan\u00fd adresn\u00ed prostor), je \u010d\u00e1st\u00ed procesu.<br \/>\n Tak\u00e9 sou\u010d\u00e1st\u00ed stavu syst\u00e9mu jsou registry. Mnoho instrukc\u00ed je zam\u011b\u0159eno na to, aby zm\u011bnily hodnotu registr\u016f nebo aby \u010detly jejich hodnotu, a t\u00edm se registry tak\u00e9 st\u00e1vaj\u00ed d\u016fle\u017eitou sou\u010d\u00e1st\u00ed pr\u00e1ce procesu. <br \/>\nJe t\u0159eba poznamenat, \u017ee stav stroje se tak\u00e9 vytv\u00e1\u0159\u00ed z n\u011bkter\u00fdch speci\u00e1ln\u00edch registr\u016f. Nap\u0159\u00edklad,<b> IP \u2014 ukazatel instrukce<\/b> je ukazatel na instrukci, kterou program prov\u00e1d\u00ed v sou\u010dasn\u00e9 dob\u011b. Existuje tak\u00e9 <b>stack pointer<\/b> a s n\u00edm spojen\u00fd <b>frame pointer<\/b>, kter\u00e9 se pou\u017e\u00edvaj\u00ed k \u0159\u00edzen\u00ed: parametr\u016f funkc\u00ed, m\u00edstn\u00edch prom\u011bnn\u00fdch a n\u00e1vratov\u00fdch adres.<br \/>\nNakonec se programy \u010dasto obracej\u00ed na ROM (trvalou pam\u011b\u0165). Tyto informace o \u201eI\/O\u201c (vstupu-v\u00fdstupu) by m\u011bly zahrnovat seznam soubor\u016f, kter\u00e9 jsou aktu\u00e1ln\u011b otev\u0159eny procesem.<\/p>\n<h3>Procesn\u00ed API<\/h3>\n<p>\n Abychom l\u00e9pe pochopili fungov\u00e1n\u00ed procesu, pod\u00edvejme se na p\u0159\u00edklady syst\u00e9mov\u00fdch vol\u00e1n\u00ed, kter\u00e1 by m\u011bla b\u00fdt zahrnuta do jak\u00e9hokoli rozhran\u00ed opera\u010dn\u00edho syst\u00e9mu. Tyto API jsou v ur\u010dit\u00e9 podob\u011b dostupn\u00e1 na ka\u017ed\u00e9m OS.<\/p>\n<p>\u25cf <b>Vytvo\u0159it<\/b> (vytv\u00e1\u0159en\u00ed): V OS mus\u00ed b\u00fdt n\u011bjak\u00e1 metoda, kter\u00e1 umo\u017e\u0148uje vytv\u00e1\u0159en\u00ed nov\u00fdch proces\u016f. Kdy\u017e zad\u00e1te p\u0159\u00edkaz do termin\u00e1lu nebo spust\u00edte aplikaci dvojit\u00fdm kliknut\u00edm na ikonu, je odesl\u00e1na \u017e\u00e1dost opera\u010dn\u00edmu syst\u00e9mu o vytvo\u0159en\u00ed nov\u00e9ho procesu a n\u00e1sledn\u00e9 spu\u0161t\u011bn\u00ed uveden\u00e9ho programu.<br \/>\n\u25cf <b>Odstranit<\/b>: Pokud existuje rozhran\u00ed pro vytv\u00e1\u0159en\u00ed procesu, opera\u010dn\u00ed syst\u00e9m by m\u011bl tak\u00e9 nab\u00edzet mo\u017enost n\u00e1siln\u00e9ho ukon\u010den\u00ed procesu. V\u011bt\u0161ina program\u016f se p\u0159irozen\u011b spust\u00ed a ukon\u010d\u00ed sama b\u011bhem sv\u00e9ho b\u011bhu. Jinak by m\u011bl m\u00edt u\u017eivatel mo\u017enost je ukon\u010dit, tak\u017ee rozhran\u00ed pro zastaven\u00ed procesu by nebylo na \u0161kodu.<br \/>\n\u25cf <b>\u010cek\u00e1n\u00ed <\/b>(\u010dek\u00e1n\u00ed): N\u011bkdy je u\u017eite\u010dn\u00e9 po\u010dkat na dokon\u010den\u00ed procesu, a tak jsou k dispozici n\u011bkter\u00e1 rozhran\u00ed, kter\u00e1 tuto mo\u017enost poskytuj\u00ed.<br \/>\n\u25cf <b>R\u016fzn\u00e9 \u0159\u00edzen\u00ed<\/b> (rozmanit\u00e9 \u0159\u00edzen\u00ed): Krom\u011b ukon\u010den\u00ed a \u010dek\u00e1n\u00ed procesu existuj\u00ed tak\u00e9 dal\u0161\u00ed r\u016fznorod\u00e9 kontroln\u00ed metody. Nap\u0159\u00edklad v\u011bt\u0161ina OS poskytuje mo\u017enost mra\u017een\u00ed procesu (pozastaven\u00ed jeho prov\u00e1d\u011bn\u00ed na ur\u010ditou dobu) a n\u00e1sledn\u00e9 obnoven\u00ed (pokra\u010dov\u00e1n\u00ed v prov\u00e1d\u011bn\u00ed).<br \/>\n\u25cf <b>Status <\/b>(stav): Existuj\u00ed r\u016fzn\u00e1 rozhran\u00ed pro z\u00edsk\u00e1n\u00ed informac\u00ed o stavu procesu, jako je doba jeho b\u011bhu nebo v jak\u00e9m stavu se pr\u00e1v\u011b nach\u00e1z\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakce: Proces (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Vytv\u00e1\u0159en\u00ed procesu: detaily<\/h3>\n<p>Jedna z zaj\u00edmav\u00fdch v\u011bc\u00ed je, jak p\u0159esn\u011b se programy transformuj\u00ed na procesy. Zvl\u00e1\u0161t\u011b, jak opera\u010dn\u00ed syst\u00e9m spou\u0161t\u00ed a \u0159\u00edd\u00ed program. Jak konkr\u00e9tn\u011b se proces vytv\u00e1\u0159\u00ed.<br \/>\nNejprve mus\u00ed opera\u010dn\u00ed syst\u00e9m na\u010d\u00edst k\u00f3d programu a statick\u00e1 data do pam\u011bti (do adresn\u00edho prostoru procesu). Programy jsou obvykle um\u00edst\u011bny na disku nebo pevn\u00e9m disku v n\u011bjak\u00e9m spustiteln\u00e9m form\u00e1tu. Proces na\u010d\u00edt\u00e1n\u00ed programu a statick\u00fdch dat do pam\u011bti vy\u017eaduje od opera\u010dn\u00edho syst\u00e9mu schopnost \u010d\u00edst tyto byty z disku a um\u00edstit je n\u011bkde v pam\u011bti.<\/p>\n<p>V ran\u00fdch opera\u010dn\u00edch syst\u00e9mech se proces na\u010d\u00edt\u00e1n\u00ed prov\u00e1d\u011bl ne\u00fanavn\u011b (eagerly), co\u017e znamen\u00e1, \u017ee k\u00f3d byl na\u010dten do pam\u011bti \u00fapln\u011b d\u0159\u00edve, ne\u017e byla program spu\u0161t\u011bn. Modern\u00ed opera\u010dn\u00ed syst\u00e9my to d\u011blaj\u00ed l\u00edn\u011b (lazily), tj. na\u010d\u00edtaj\u00ed kousky k\u00f3du nebo dat pouze tehdy, kdy\u017e jsou b\u011bhem prov\u00e1d\u011bn\u00ed programu pot\u0159eba.<\/p>\n<p>Po na\u010dten\u00ed k\u00f3du a statick\u00fdch dat do pam\u011bti mus\u00ed opera\u010dn\u00ed syst\u00e9m prov\u00e9st je\u0161t\u011b n\u011bkolik v\u011bc\u00ed p\u0159ed spu\u0161t\u011bn\u00edm procesu. Mus\u00ed b\u00fdt alokov\u00e1no ur\u010dit\u00e9 mno\u017estv\u00ed pam\u011bti pro z\u00e1sobn\u00edk. <b>Programy pou\u017e\u00edvaj\u00ed z\u00e1sobn\u00edk pro lok\u00e1ln\u00ed prom\u011bnn\u00e9, parametry funkc\u00ed a adresy n\u00e1vratu<\/b>. Opera\u010dn\u00ed syst\u00e9m tuto pam\u011b\u0165 alokuje a p\u0159ed\u00e1v\u00e1 ji procesu. Z\u00e1sobn\u00edk m\u016f\u017ee b\u00fdt tak\u00e9 alokov\u00e1n s n\u011bkter\u00fdmi argumenty, konkr\u00e9tn\u011b napln\u011bn\u00edm parametr\u016f funkce main(), nap\u0159\u00edklad polem argc a argv.<\/p>\n<p>Opera\u010dn\u00ed syst\u00e9m m\u016f\u017ee tak\u00e9 alokovat ur\u010dit\u00e9 mno\u017estv\u00ed pam\u011bti pro haldu (heap) programu. <b>Halda se pou\u017e\u00edv\u00e1 programy pro explicitn\u011b po\u017eadovan\u00e9 dynamicky alokovan\u00e9 \u00fadaje<\/b>. Programy si tuto pam\u011b\u0165 \u017e\u00e1daj\u00ed zavol\u00e1n\u00edm funkce <b>malloc()<\/b> a explicitn\u011b ji uvol\u0148uj\u00ed zavol\u00e1n\u00edm funkce <b>free()<\/b>. Halda je pot\u0159ebn\u00e1 pro struktury dat jako jsou: propojen\u00e9 seznamy, hash tabulky, stromy a dal\u0161\u00ed. Na za\u010d\u00e1tku se pro haldu alokuje mal\u00e9 mno\u017estv\u00ed pam\u011bti, ale s postupem \u010dasu m\u016f\u017ee halda b\u011bhem b\u011bhu programu vy\u017e\u00e1dat v\u00edce pam\u011bti, prost\u0159ednictv\u00edm knihovn\u00edho API vol\u00e1n\u00edm malloc(). Opera\u010dn\u00ed syst\u00e9m je zapojen do procesu p\u0159id\u011blov\u00e1n\u00ed v\u00edce pam\u011bti, aby pomohl vyhov\u011bt t\u011bmto po\u017eadavk\u016fm.<\/p>\n<p>Opera\u010dn\u00ed syst\u00e9m tak\u00e9 provede inicializa\u010dn\u00ed \u00fakoly, zejm\u00e9na ty, kter\u00e9 se t\u00fdkaj\u00ed vstupu a v\u00fdstupu. Nap\u0159\u00edklad v syst\u00e9mech UNIX m\u00e1 ka\u017ed\u00fd proces ve v\u00fdchoz\u00edm nastaven\u00ed 3 otev\u0159en\u00e9 souborov\u00e9 popisova\u010de pro standardn\u00ed vstup, v\u00fdstup a chyby. Tyto popisova\u010de umo\u017e\u0148uj\u00ed program\u016fm \u010d\u00edst vstup z termin\u00e1lu a tak\u00e9 vypisovat informace na obrazovku. <\/p>\n<p>T\u00edmto zp\u016fsobem opera\u010dn\u00ed syst\u00e9m p\u0159ipravuje platformu pro vykon\u00e1v\u00e1n\u00ed procesu, kdy\u017e na\u010d\u00edt\u00e1 k\u00f3d a statick\u00e9 \u00fadaje do pam\u011bti, vytv\u00e1\u0159\u00ed a inicializuje z\u00e1sobn\u00edk a vykon\u00e1v\u00e1 dal\u0161\u00ed \u00fakoly souvisej\u00edc\u00ed s vykon\u00e1v\u00e1n\u00edm vstupn\u011b-v\u00fdstupn\u00edch \u00faloh. Nakonec zb\u00fdv\u00e1 posledn\u00ed \u00fakol: spustit program prost\u0159ednictv\u00edm jeho vstupn\u00edho bodu, nazvan\u00e9ho funkce main(). P\u0159i p\u0159echodu k vykon\u00e1n\u00ed funkce main() opera\u010dn\u00ed syst\u00e9m p\u0159ed\u00e1v\u00e1 \u0159\u00edzen\u00ed CPU nov\u011b vytvo\u0159en\u00e9mu procesu, \u010d\u00edm\u017e se program za\u010d\u00edn\u00e1 vykon\u00e1vat. <\/p>\n<h3>Stav procesu<\/h3>\n<p>\n Nyn\u00ed, kdy\u017e m\u00e1me ur\u010dit\u00e9 porozum\u011bn\u00ed tomu, co je to proces a jak je vytvo\u0159en, vyjmenujme stavy procesu, ve kter\u00fdch se m\u016f\u017ee nach\u00e1zet. V nejjednodu\u0161\u0161\u00ed form\u011b m\u016f\u017ee b\u00fdt proces v jednom z t\u011bchto stav\u016f:<br \/>\n\u25cf <b>Dokon\u010deno<\/b>. Ve stavu RUNNING se proces vykon\u00e1v\u00e1 na procesoru. To znamen\u00e1, \u017ee doch\u00e1z\u00ed k vykon\u00e1v\u00e1n\u00ed instrukc\u00ed.<br \/>\n\u25cf <b>Ready<\/b>. Ve stavu READY je proces p\u0159ipraven k spu\u0161t\u011bn\u00ed, ale z n\u011bjak\u00e9ho d\u016fvodu ho opera\u010dn\u00ed syst\u00e9m v dan\u00e9m okam\u017eiku nevykon\u00e1v\u00e1.<br \/>\n\u25cf <b>Blocked<\/b>. Ve stavu BLOCKED vykon\u00e1v\u00e1 proces n\u011bjak\u00e9 operace, kter\u00e9 mu neumo\u017e\u0148uj\u00ed b\u00fdt p\u0159ipraven k vykon\u00e1n\u00ed, dokud nenastane n\u011bjak\u00e1 ud\u00e1lost. Jedn\u00edm z b\u011b\u017en\u00fdch p\u0159\u00edklad\u016f je, kdy\u017e proces inicializuje operaci IO, st\u00e1v\u00e1 se blokovan\u00fdm a t\u00edm p\u00e1dem m\u016f\u017ee jin\u00fd proces pou\u017e\u00edvat procesor.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakce: Proces (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTyto stavy si m\u016f\u017eeme p\u0159edstavit jako graf. Jak vid\u00edme na obr\u00e1zku, stav procesu se m\u016f\u017ee mezi RUNNING a READY m\u011bnit podle uv\u00e1\u017een\u00ed opera\u010dn\u00edho syst\u00e9mu. Kdy\u017e se stav procesu zm\u011bn\u00ed z READY na RUNNING, znamen\u00e1 to, \u017ee proces byl napl\u00e1nov\u00e1n. Naopak, kdy\u017e je vy\u0159azen z pl\u00e1nov\u00e1n\u00ed. V okam\u017eiku, kdy se proces stane BLOCKED, nap\u0159\u00edklad p\u0159i inicializaci operace IO, opera\u010dn\u00ed syst\u00e9m ho v tomto stavu udr\u017e\u00ed do doby, ne\u017e nastane n\u011bjak\u00e1 ud\u00e1lost, nap\u0159\u00edklad dokon\u010den\u00ed IO. V tomto okam\u017eiku p\u0159ech\u00e1z\u00ed do stavu READY a p\u0159\u00edpadn\u011b okam\u017eit\u011b do stavu RUNNING, pokud to tak opera\u010dn\u00ed syst\u00e9m rozhodne. <br \/>\nPod\u00edvejme se na p\u0159\u00edklad toho, jak dva procesy proch\u00e1zej\u00ed t\u011bmito stavy. Na za\u010d\u00e1tek si p\u0159edstavme, \u017ee oba procesy jsou spu\u0161t\u011bny a ka\u017ed\u00fd pou\u017e\u00edv\u00e1 pouze CPU. V tomto p\u0159\u00edpad\u011b budou jejich stavy vypadat takto.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakce: Proces (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV n\u00e1sleduj\u00edc\u00edm p\u0159\u00edkladu prvn\u00ed proces po ur\u010dit\u00e9 dob\u011b pr\u00e1ce po\u017e\u00e1d\u00e1 o IO a p\u0159ech\u00e1z\u00ed do stavu BLOCKED, co\u017e poskytuje druh\u00e9mu procesu mo\u017enost spu\u0161t\u011bn\u00ed (OBR 1.4). OS vid\u00ed, \u017ee proces 0 nepou\u017e\u00edv\u00e1 CPU a spou\u0161t\u00ed proces 1. B\u011bhem b\u011bhu procesu 1 \u2014 IO kon\u010d\u00ed a stav procesu 0 se m\u011bn\u00ed na READY. Nakonec proces 1 skon\u010d\u00ed, a po jeho dokon\u010den\u00ed se spust\u00ed proces 0, vykon\u00e1v\u00e1 se a kon\u010d\u00ed svou pr\u00e1ci.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakce: Proces (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Datov\u00e1 struktura<\/h3>\n<p>\n OS sama o sob\u011b je program a stejn\u011b jako jak\u00fdkoli jin\u00fd program m\u00e1 n\u011bkolik kl\u00ed\u010dov\u00fdch datov\u00fdch struktur, kter\u00e9 sleduj\u00ed r\u016fzn\u00e9 relevantn\u00ed kusy informac\u00ed. Pro sledov\u00e1n\u00ed stavu ka\u017ed\u00e9ho procesu v OS bude udr\u017eov\u00e1na ur\u010dit\u00e1 <b>procesn\u00ed seznam<\/b> pro v\u0161echny procesy ve stavu READY a n\u011bkter\u00e9 dal\u0161\u00ed informace pro sledov\u00e1n\u00ed proces\u016f, kter\u00e9 se aktu\u00e1ln\u011b vykon\u00e1vaj\u00ed. Tak\u00e9, OS mus\u00ed sledovat a blokovan\u00e9 procesy. Po dokon\u010den\u00ed IO je OS povinna probudit pot\u0159ebn\u00fd proces a p\u0159ev\u00e9st ho do stavu p\u0159ipravenosti k spu\u0161t\u011bn\u00ed.<\/p>\n<p>Tak nap\u0159\u00edklad OS mus\u00ed uchov\u00e1vat stav registr\u016f procesoru. V okam\u017eiku zastaven\u00ed procesu je stav registr\u016f ulo\u017een v adresn\u00edm prostoru procesu a v okam\u017eiku obnoven\u00ed jeho \u010dinnosti \u2014 obnov\u00ed hodnoty registr\u016f a t\u00edmto zp\u016fsobem pokra\u010duje v prov\u00e1d\u011bn\u00ed tohoto procesu.<\/p>\n<p>Krom\u011b stav\u016f ready, blocked, running existuj\u00ed tak\u00e9 n\u011bkter\u00e9 dal\u0161\u00ed stavy. N\u011bkdy v okam\u017eiku vytvo\u0159en\u00ed m\u016f\u017ee m\u00edt proces stav INIT. Nakonec m\u016f\u017ee b\u00fdt proces um\u00edst\u011bn do stavu FINAL, kdy\u017e ji\u017e skon\u010dil, ale informace o n\u011bm je\u0161t\u011b nebyla vymaz\u00e1na. V syst\u00e9mech UNIX se tento stav naz\u00fdv\u00e1 <b>proces-zombi<\/b>. Tento stav je u\u017eite\u010dn\u00fd pro p\u0159\u00edpady, kdy rodi\u010dovsk\u00fd proces chce zjistit n\u00e1vratov\u00fd k\u00f3d potomka, nap\u0159\u00edklad obvykle 0 signalizuje \u00fasp\u011b\u0161n\u00e9 dokon\u010den\u00ed, a 1 o chybu, nicm\u00e9n\u011b program\u00e1to\u0159i mohou d\u011blat dal\u0161\u00ed k\u00f3dy v\u00fdstupu, signalizuj\u00edc\u00ed r\u016fzn\u00e9 probl\u00e9my. P\u0159i ukon\u010den\u00ed rodi\u010dovsk\u00fd proces provede posledn\u00ed syst\u00e9mov\u00fd vol\u00e1n\u00ed, nap\u0159\u00edklad wait(), aby \u010dekal na dokon\u010den\u00ed pr\u00e1ce procesu-potomka a signalizoval OS, \u017ee m\u016f\u017ee vy\u010distit jak\u00e1koli data spojen\u00e1 se dokon\u010den\u00fdm procesem.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakce: Proces (p\u0159eklad)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Kl\u00ed\u010dov\u00e9 body p\u0159edn\u00e1\u0161ky:<\/h3>\n<p>\n\u25cf <b>Proces <\/b> Hlavn\u00ed abstrakce pracuj\u00edc\u00edho programu v OS. V ka\u017ed\u00e9m okam\u017eiku lze proces popsat podle jeho stavu: obsahu pam\u011bti ve jeho adresn\u00edm prostoru, obsahu registr\u016f procesoru, v\u010detn\u011b ukazatele instrukc\u00ed a ukazatele z\u00e1sobn\u00edku, stejn\u011b jako informac\u00ed o IO, nap\u0159\u00edklad otev\u0159en\u00fdmi soubory, kter\u00e9 se \u010dtou nebo zapisuj\u00ed.<br \/>\n\u25cf <b>Procesn\u00ed API<\/b> se skl\u00e1d\u00e1 z vol\u00e1n\u00ed, kter\u00e9 mohou programy prov\u00e1d\u011bt ve vztahu k proces\u016fm. Obvykle se jedn\u00e1 o vol\u00e1n\u00ed pro vytv\u00e1\u0159en\u00ed, odstra\u0148ov\u00e1n\u00ed nebo jin\u00e9.<br \/>\n\u25cf Proces se nach\u00e1z\u00ed v jednom z mnoha stav\u016f, v\u010detn\u011b b\u011b\u017e\u00edc\u00edho, p\u0159ipraven\u00e9ho nebo blokovan\u00e9ho. R\u016fzn\u00e9 ud\u00e1losti, jako je pl\u00e1nov\u00e1n\u00ed, vylou\u010den\u00ed z pl\u00e1nov\u00e1n\u00ed nebo \u010dek\u00e1n\u00ed, mohou p\u0159en\u00e9st stav procesu z jednoho na druh\u00fd.<br \/>\n\u25cf <b>Seznam proces\u016f<\/b> obsahuje informace o v\u0161ech procesech v syst\u00e9mu. Ka\u017ed\u00fd z\u00e1znam v n\u011bm se naz\u00fdv\u00e1 kontroln\u00ed blok procesu, kter\u00fd je ve skute\u010dnosti strukturou obsahuj\u00edc\u00ed v\u0161echny pot\u0159ebn\u00e9 informace o konkr\u00e9tn\u00edm procesu.<br \/>\n<br \/>Zdroj: <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\/cs\/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=\"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 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\/cs\/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\udd47Opera\u010dn\u00ed syst\u00e9my: T\u0159i snadn\u00e9 kusy. \u010c\u00e1st 2: Abstrakce: Proces (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-2-abstraktsiya-protsess-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 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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/30992","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=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}