{"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\/sk\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 2: Abstrakcia: Proces (preklad)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>\u00davod do opera\u010dn\u00fdch syst\u00e9mov<\/h1>\n<p>\nAhoj, Habr! Chcem v\u00e1m predstavi\u0165 s\u00e9riu \u010dl\u00e1nkov-prekladu zauj\u00edmavej literat\u00fary, ktor\u00fa pova\u017eujem za zauj\u00edmav\u00fa \u2014 OSTEP. V tomto materi\u00e1li sa podrobne zaober\u00e1 fungovan\u00edm unixov\u00fdch opera\u010dn\u00fdch syst\u00e9mov, konkr\u00e9tne pr\u00e1cou s procesmi, r\u00f4znymi pl\u00e1nova\u010dmi, pam\u00e4\u0165ou a in\u00fdmi podobn\u00fdmi komponentmi, ktor\u00e9 tvoria modern\u00fd OS. Origin\u00e1l v\u0161etk\u00fdch materi\u00e1lov si m\u00f4\u017eete pozrie\u0165 tu: <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">tu<\/a><\/noindex>. Pros\u00edm berte na vedomie, \u017ee preklad bol vykonan\u00fd neprofesion\u00e1lne (dos\u0165 vo\u013ene), ale d\u00fafam, \u017ee som zachoval celkov\u00fd zmysel.<\/p>\n<p>Laborat\u00f3rne pr\u00e1ce na tomto predmete n\u00e1jdete tu:<\/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>moja osobn\u00e1 adapt\u00e1cia: <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>\n\u010eal\u0161ie \u010dasti:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">\u010cas\u0165 1: \u00davod<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nA m\u00f4\u017eete sa pozera\u0165 aj na m\u00f4j kan\u00e1l v <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegrame<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Pozrime sa na najz\u00e1kladnej\u0161iu abstrakciu, ktor\u00fa opera\u010dn\u00fd syst\u00e9m poskytuje pou\u017e\u00edvate\u013eom: proces. Defin\u00edcia procesu je celkom jednoduch\u00e1 \u2014 je to <b>be\u017eiaci program<\/b>. Program s\u00e1m o sebe je ne\u017eiv\u00e1 vec, nach\u00e1dzaj\u00faca sa na disku \u2014 je to s\u00fabor pokynov a mo\u017eno nejak\u00fdch statick\u00fdch \u00fadajov, \u010dakaj\u00facich na okamih spustenia. To je presne to, \u010do opera\u010dn\u00fd syst\u00e9m berie tieto bajty a sp\u00fa\u0161\u0165a ich, premen\u00ed program na nie\u010do u\u017eito\u010dn\u00e9.<br \/>\n Naj\u010dastej\u0161ie chc\u00fa pou\u017e\u00edvatelia sp\u00fa\u0161\u0165a\u0165 viac ako jeden program s\u00fa\u010dasne, napr\u00edklad m\u00f4\u017eete spusti\u0165 vo va\u0161om notebooku prehliada\u010d, hru, medi\u00e1lny prehr\u00e1va\u010d, textov\u00fd editor a podobne. V skuto\u010dnosti typick\u00fd syst\u00e9m m\u00f4\u017ee sp\u00fa\u0161\u0165a\u0165 desiatky a stovky procesov s\u00fa\u010dasne. Tento fakt u\u013eah\u010duje pou\u017e\u00edvanie syst\u00e9mu, nikdy sa nemus\u00edte ob\u00e1va\u0165, \u010di je CPU vo\u013en\u00fd, jednoducho sp\u00fa\u0161\u0165ate programy.<\/p>\n<p><i>Odtia\u013e vypl\u00fdva probl\u00e9m: ako zabezpe\u010di\u0165 il\u00faziu mnoh\u00fdch CPU? Ako m\u00f4\u017ee opera\u010dn\u00fd syst\u00e9m vytvori\u0165 il\u00faziu prakticky nekone\u010dn\u00e9ho po\u010dtu CPU, aj ke\u010f m\u00e1te len jeden fyzick\u00fd CPU?<\/i><\/p>\n<p>Opera\u010dn\u00fd syst\u00e9m vytv\u00e1ra t\u00fato il\u00faziu prostredn\u00edctvom virtualiz\u00e1cie CPU. Sp\u00fa\u0161\u0165an\u00edm jedn\u00e9ho procesu, potom jeho zastaven\u00edm, sp\u00fa\u0161\u0165an\u00edm \u010fal\u0161ieho procesu a tak \u010falej, m\u00f4\u017ee opera\u010dn\u00fd syst\u00e9m udr\u017eiava\u0165 il\u00faziu, \u017ee existuje mno\u017estvo virtu\u00e1lnych CPU, hoci v skuto\u010dnosti to bude jeden alebo nieko\u013eko fyzick\u00fdch procesorov. T\u00e1to technika sa naz\u00fdva <b>delenie CPU pod\u013ea \u010dasu<\/b>. T\u00e1to technika umo\u017e\u0148uje pou\u017e\u00edvate\u013eom sp\u00fa\u0161\u0165a\u0165 to\u013eko s\u00fabe\u017en\u00fdch procesov, ko\u013eko chc\u00fa. Cenu takejto vo\u013eby je v\u00fdkon \u2013 preto\u017ee ak CPU del\u00ed nieko\u013eko procesov, ka\u017ed\u00fd proces bude spracov\u00e1van\u00fd pomal\u0161ie.<br \/>\n Na realiz\u00e1ciu virtualiz\u00e1cie CPU, a najm\u00e4 na to, aby to bolo mo\u017en\u00e9 robi\u0165 dobre, opera\u010dn\u00fd syst\u00e9m potrebuje aj n\u00edzkolevelov\u00fa a vysokolevelov\u00fa podporu. N\u00edzko\u00farov\u0148ov\u00e1 podpora sa naz\u00fdva <b>mechanizmy<\/b> \u2014 to s\u00fa n\u00edzko\u00farov\u0148ov\u00e9 met\u00f3dy alebo protokoly, ktor\u00e9 implementuj\u00fa potrebn\u00fa \u010das\u0165 funk\u010dnosti. Pr\u00edkladom takejto funk\u010dnosti je kontextov\u00e9 prep\u00ednanie, ktor\u00e9 umo\u017e\u0148uje OS zastavi\u0165 jednu aplik\u00e1ciu a spusti\u0165 na procesore druh\u00fa aplik\u00e1ciu. Toto \u010dasov\u00e9 rozdelenie je implementovan\u00e9 vo v\u0161etk\u00fdch modern\u00fdch OS.<br \/>\n Na vrchole t\u00fdchto mechanizmov sa nach\u00e1dza ist\u00e1 logika, zakomponovan\u00e1 v OS, vo forme \u201epolit\u00edk\u201c. <b>Politika<\/b> \u2014 je to ist\u00fd algoritmus prij\u00edmania rozhodnut\u00ed opera\u010dn\u00fdm syst\u00e9mom. Tak\u00e9to politiky napr\u00edklad rozhoduj\u00fa, ktor\u00fa aplik\u00e1ciu treba spusti\u0165 (zo zoznamu pr\u00edkazov) ako prv\u00fa. Tak napr\u00edklad t\u00fato \u00falohu vyrie\u0161i politika, naz\u00fdvan\u00e1 <b>pl\u00e1nova\u010d (scheduling policy)<\/b> , a pri v\u00fdbere rozhodnutia sa bude riadi\u0165 tak\u00fdmi \u00fadajmi ako: hist\u00f3ria spustenia (ktor\u00e1 aplik\u00e1cia bola spusten\u00e1 najdlh\u0161ie za posledn\u00fa min\u00fatu), ak\u00fa z\u00e1\u0165a\u017e vykon\u00e1va dan\u00fd proces (ak\u00e9 typy aplik\u00e1ci\u00ed boli spusten\u00e9), metriky v\u00fdkonu (\u010di je syst\u00e9m optimalizovan\u00fd na interakt\u00edvnu interakciu alebo na priepustnos\u0165) a tak \u010falej.<\/p>\n<h3>Abstrakcia: proces<\/h3>\n<p>\n Abstrakcia funguj\u00facej aplik\u00e1cie, vykon\u00e1van\u00e1 opera\u010dn\u00fdm syst\u00e9mom, je to, \u010do naz\u00fdvame <b>proces<\/b>. Ako u\u017e bolo spomenut\u00e9, proces je proste funguj\u00faca aplik\u00e1cia v akomko\u013evek okam\u017eiku. Aplik\u00e1cia, s pomocou ktorej m\u00f4\u017eeme z\u00edska\u0165 s\u00fahrnn\u00e9 inform\u00e1cie z r\u00f4znych zdrojov syst\u00e9mu, a ku ktor\u00fdm sa t\u00e1to aplik\u00e1cia obracia alebo ktor\u00e9 t\u00e1to aplik\u00e1cia zasahuje v priebehu svojho vykon\u00e1vania.<br \/>\n Na pochopenie zlo\u017eiek procesu je potrebn\u00e9 ch\u00e1pa\u0165 stavy syst\u00e9mu: \u010do aplik\u00e1cia m\u00f4\u017ee \u010d\u00edta\u0165 alebo meni\u0165 po\u010das svojej \u010dinnosti. V akomko\u013evek okamihu je potrebn\u00e9 ch\u00e1pa\u0165, ktor\u00e9 prvky syst\u00e9mu s\u00fa d\u00f4le\u017eit\u00e9 pre vykon\u00e1vanie aplik\u00e1cie.<br \/>\n Jedn\u00fdm z o\u010dividn\u00fdch prvkov stavu syst\u00e9mu, ktor\u00e9 proces zah\u0155\u0148a, je <b>pam\u00e4\u0165<\/b>. In\u0161trukcie sa nach\u00e1dzaj\u00fa v pam\u00e4ti. \u00dadaje, ktor\u00e9 aplik\u00e1cia \u010d\u00edta alebo zapisuje, sa tie\u017e nach\u00e1dzaj\u00fa v pam\u00e4ti. T\u00fdm p\u00e1dom, pam\u00e4\u0165, ktor\u00fa proces m\u00f4\u017ee adresova\u0165 (takzvan\u00fd adresn\u00fd priestor), je s\u00fa\u010das\u0165ou procesu.<br \/>\n S\u00fa\u010das\u0165ou stavu syst\u00e9mu s\u00fa aj registre. Mno\u017estvo in\u0161trukci\u00ed je zameran\u00fdch na zmenu hodn\u00f4t registrov alebo na \u010d\u00edtanie ich hodn\u00f4t, a tak sa registre st\u00e1vaj\u00fa d\u00f4le\u017eitou s\u00fa\u010das\u0165ou \u010dinnosti procesu. <br \/>\nJe potrebn\u00e9 poznamena\u0165, \u017ee stav stroja sa tie\u017e vytv\u00e1ra z niektor\u00fdch \u0161peci\u00e1lnych registrov. Napr\u00edklad,<b> IP \u2014 ukazovate\u013e in\u0161trukcie<\/b> \u2014 ukazuje na in\u0161trukciu, ktor\u00fa program moment\u00e1lne vykon\u00e1va. \u010ealej existuje <b>ukazovate\u013e z\u00e1sobn\u00edka<\/b> a s n\u00edm s\u00favisiaci <b>ukazovate\u013e r\u00e1mca<\/b>, ktor\u00e9 sa pou\u017e\u00edvaj\u00fa na riadenie: parametrov funkci\u00ed, lok\u00e1lnych premenn\u00fdch a adries n\u00e1vratu.<br \/>\nNakoniec programy \u010dasto pristupuj\u00fa k ROM (permanentn\u00e9mu pam\u00e4\u0165ov\u00e9mu zariadeniu). Tieto inform\u00e1cie o \"I\/O\" (vstupe-v\u00fdstupe) by mali obsahova\u0165 zoznam s\u00faborov, ktor\u00e9 proces moment\u00e1lne otvoril.<\/p>\n<h3>API procesu<\/h3>\n<p>\n Aby sme zlep\u0161ili pochopenie fungovania procesu, presk\u00fam\u00e1mo pr\u00edklady syst\u00e9mov\u00fdch volan\u00ed, ktor\u00e9 by mali by\u0165 zahrnut\u00e9 v akomko\u013evek rozhran\u00ed opera\u010dn\u00e9ho syst\u00e9mu. Tieto API s\u00fa v tej \u010di onej forme dostupn\u00e9 na akomko\u013evek OS.<\/p>\n<p>\u25cf <b>Vytvori\u0165<\/b> (vytvorenie): V OS by mala existova\u0165 nejak\u00e1 met\u00f3da, ktor\u00e1 umo\u017e\u0148uje vytv\u00e1ranie nov\u00fdch procesov. Ke\u010f zad\u00e1te pr\u00edkaz do termin\u00e1lu alebo spust\u00edte aplik\u00e1ciu dvojit\u00fdm kliknut\u00edm na ikonu, po\u0161le sa \u017eiados\u0165 OS o vytvorenie nov\u00e9ho procesu a n\u00e1sledn\u00e9 spustenie uveden\u00e9ho programu.<br \/>\n\u25cf <b>Odstr\u00e1nenie<\/b>: Ke\u010f existuje rozhranie na vytvorenie procesu, OS by mala tie\u017e poskytova\u0165 mo\u017enos\u0165 n\u00faten\u00e9ho zru\u0161enia procesu. V\u00e4\u010d\u0161ina programov sa prirodzene spust\u00ed a kon\u010d\u00ed sama po\u010das ich vykon\u00e1vania. Inak by chcel u\u017e\u00edvate\u013e ma\u0165 mo\u017enos\u0165 ich zabi\u0165, a preto by rozhranie na zastavenie procesu nebolo na \u0161kodu.<br \/>\n\u25cf <b>\u010caka\u0165 <\/b>(\u010dakanie): Niekedy je u\u017eito\u010dn\u00e9 po\u010dka\u0165 na dokon\u010denie procesu, preto s\u00fa k dispoz\u00edcii niektor\u00e9 rozhrania, ktor\u00e9 poskytuj\u00fa mo\u017enos\u0165 \u010dakania.<br \/>\n\u25cf <b>R\u00f4zna kontrola<\/b> (r\u00f4zne riadenie): Okrem zab\u00edjania a \u010dakania na proces existuj\u00fa aj \u010fal\u0161ie r\u00f4zne kontroln\u00e9 met\u00f3dy. Napr\u00edklad v\u00e4\u010d\u0161ina OS poskytuje mo\u017enos\u0165 zmrazenia procesu (pozastavenie jeho vykon\u00e1vania na ur\u010dit\u00fd \u010das) a n\u00e1sledn\u00e9ho obnovenia (pokra\u010dovanie vo vykon\u00e1van\u00ed).<br \/>\n\u25cf <b>Stav <\/b>(stav): Existuj\u00fa r\u00f4zne rozhrania na z\u00edskanie ur\u010dit\u00fdch inform\u00e1ci\u00ed o stave procesu, ako je d\u013a\u017eka jeho chodu alebo v akom stave sa pr\u00e1ve nach\u00e1dza.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 2: Abstrakcia: Proces (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Vytvorenie procesu: detaily<\/h3>\n<p>Jedna zauj\u00edmav\u00e1 vec je, ako sa programy transformuj\u00fa na procesy. Najm\u00e4, ako opera\u010dn\u00fd syst\u00e9m sp\u00fa\u0161\u0165a a vykon\u00e1va program. Ako sa konkr\u00e9tne vytv\u00e1ra proces.<br \/>\nNa prvom mieste mus\u00ed opera\u010dn\u00fd syst\u00e9m na\u010d\u00edta\u0165 k\u00f3d programu a statick\u00e9 d\u00e1ta do pam\u00e4te (do adresn\u00e9ho priestoru procesu). Programy sa zvy\u010dajne ukladaj\u00fa na disku alebo pevnom disku v ur\u010ditom spustite\u013enom form\u00e1te. T\u00fdm p\u00e1dom proces na\u010d\u00edtania programu a statick\u00fdch d\u00e1t do pam\u00e4te vy\u017eaduje od opera\u010dn\u00e9ho syst\u00e9mu schopnos\u0165 pre\u010d\u00edta\u0165 tieto bajty z disku a umiestni\u0165 ich niekde do pam\u00e4te.<\/p>\n<p>V ran\u00fdch opera\u010dn\u00fdch syst\u00e9moch sa proces na\u010d\u00edtania vykon\u00e1val netrpezlivo (eagerly), to znamen\u00e1, \u017ee k\u00f3d sa na\u010d\u00edtal do pam\u00e4te cel\u00fd pred spusten\u00edm programu. Modern\u00e9 opera\u010dn\u00e9 syst\u00e9my to robia lenivo (lazily), teda na\u010d\u00edtavaj\u00fa k\u00fasky k\u00f3du alebo d\u00e1t iba vtedy, ke\u010f ich program potrebuje po\u010das svojho vykon\u00e1vania.<\/p>\n<p>Po na\u010d\u00edtan\u00ed k\u00f3du a statick\u00fdch d\u00e1t do pam\u00e4te mus\u00ed opera\u010dn\u00fd syst\u00e9m vykona\u0165 e\u0161te nieko\u013eko \u010fal\u0161\u00edch vec\u00ed predt\u00fdm, ne\u017e spust\u00ed proces. Mus\u00ed by\u0165 uvo\u013enen\u00e9 ur\u010dit\u00e9 mno\u017estvo pam\u00e4te pre z\u00e1sobn\u00edk. <b>Programy pou\u017e\u00edvaj\u00fa z\u00e1sobn\u00edk pre lok\u00e1lne premenn\u00e9, parametre funkci\u00ed a adresy n\u00e1vratu.<\/b>. Opera\u010dn\u00fd syst\u00e9m uvo\u013e\u0148uje t\u00fato pam\u00e4\u0165 a pride\u013euje ju procesu. Z\u00e1sobn\u00edk m\u00f4\u017ee by\u0165 tie\u017e pride\u013eovan\u00fd s ur\u010dit\u00fdmi argumentmi, konkr\u00e9tne napl\u0148uje parametre funkcie main(), ako je pole argc a argv.<\/p>\n<p>Opera\u010dn\u00fd syst\u00e9m m\u00f4\u017ee tie\u017e uvo\u013eni\u0165 ur\u010dit\u00e9 mno\u017estvo pam\u00e4te pre haldu (heap) programu. <b>Halda sa pou\u017e\u00edva programami pre explicitne po\u017eadovan\u00e9 dynamicky alokovan\u00e9 d\u00e1ta.<\/b>. Programy po\u017eaduj\u00fa tento priestor volan\u00edm funkcie <b>malloc()<\/b> a explicitne ho uvo\u013e\u0148uj\u00fa volan\u00edm funkcie <b>free()<\/b>Hromada je potrebn\u00e1 pre tak\u00e9to d\u00e1tov\u00e9 \u0161trukt\u00fary ako: prepojen\u00e9 zoznamy, hash tabu\u013eky, stromy a in\u00e9. Na za\u010diatku je pre hromadu pridelen\u00e9 mal\u00e9 mno\u017estvo pam\u00e4te, ale \u010dasom m\u00f4\u017ee hromada po\u010das behu programu po\u017eiada\u0165 o v\u00e4\u010d\u0161ie mno\u017estvo pam\u00e4te prostredn\u00edctvom volania malloc() cez kni\u017eni\u010dn\u00e9 API. Prev\u00e1dzkov\u00fd syst\u00e9m je zapojen\u00fd do procesu pridelenia v\u00e4\u010d\u0161ieho mno\u017estva pam\u00e4te, aby pomohol uspokoji\u0165 tieto po\u017eiadavky.<\/p>\n<p>Prev\u00e1dzkov\u00fd syst\u00e9m tie\u017e vykon\u00e1va \u00falohy inicializ\u00e1cie, najm\u00e4 tie, ktor\u00e9 sa t\u00fdkaj\u00fa vstupu a v\u00fdstupu. Napr\u00edklad v UNIX syst\u00e9moch m\u00e1 ka\u017ed\u00fd proces predvolene 3 otvoren\u00e9 s\u00faborov\u00e9 deskriptory pre \u0161tandardn\u00fd vstup, v\u00fdstup a chyby. Tieto deskriptory umo\u017e\u0148uj\u00fa programom \u010d\u00edta\u0165 vstup z termin\u00e1lu a tie\u017e vypisova\u0165 inform\u00e1cie na obrazovku. <\/p>\n<p>Takto, na\u010d\u00edtan\u00edm k\u00f3du a statick\u00fdch \u00fadajov do pam\u00e4te, vytv\u00e1ran\u00edm a inicializovan\u00edm z\u00e1sobn\u00edka, a vykon\u00e1van\u00edm inej pr\u00e1ce t\u00fdkaj\u00facej sa v\u00fdkonu vstupno-v\u00fdstupn\u00fdch \u00faloh, OS pripravuje podmienky na vykon\u00e1vanie procesu. Nakoniec zost\u00e1va posledn\u00e1 \u00faloha: spusti\u0165 program na vykon\u00e1vanie cez jeho vstupn\u00fd bod, naz\u00fdvan\u00fd funkcia main(). Prechodom k vykonaniu funkcie main() OS odovzd\u00e1va riadenie CPU novo vytvoren\u00e9mu procesu, \u010d\u00edm sa program za\u010d\u00edna vykon\u00e1va\u0165. <\/p>\n<h3>Stav procesu<\/h3>\n<p>\n Teraz, ke\u010f m\u00e1me predstavu o tom, \u010do je proces a ako sa vytv\u00e1ra, vymenova\u0165 stavy procesu, v ktor\u00fdch sa m\u00f4\u017ee nach\u00e1dza\u0165. V najjednoduch\u0161ej forme m\u00f4\u017ee by\u0165 proces v jednom z t\u00fdchto stavov:<br \/>\n\u25cf <b>Running<\/b>. V be\u017eiacom stave je proces vykon\u00e1van\u00fd na procesore. To znamen\u00e1, \u017ee doch\u00e1dza k vykon\u00e1vaniu in\u0161trukci\u00ed.<br \/>\n\u25cf <b>Pripraven\u00e9<\/b>. V stave pripravenosti je proces pripraven\u00fd spusti\u0165, ale z nejak\u00fdch d\u00f4vodov OS ho v danom okamihu nevykon\u00e1va.<br \/>\n\u25cf <b>Blocked<\/b>. V zablokovanom stave proces vykon\u00e1va nejak\u00e9 oper\u00e1cie, ktor\u00e9 mu neumo\u017e\u0148uj\u00fa by\u0165 pripraven\u00fdm na vykonanie, k\u00fdm sa neudeje nejak\u00e1 udalos\u0165. Jeden z be\u017en\u00fdch pr\u00edkladov - ke\u010f proces inicializuje oper\u00e1ciu IO, st\u00e1va sa zablokovan\u00fdm, a tak m\u00f4\u017ee nejak\u00fd in\u00fd proces vyu\u017ei\u0165 procesor.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 2: Abstrakcia: Proces (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPredstavte si tieto stavy ako graf. Ako m\u00f4\u017eeme vidie\u0165 na obr\u00e1zku, stav procesu sa m\u00f4\u017ee meni\u0165 medzi RUNNING a READY na z\u00e1klade rozhodnutia OS. Ke\u010f sa stav procesu zmen\u00ed z READY na RUNNING, znamen\u00e1 to, \u017ee proces bol napl\u00e1novan\u00fd. Naopak, ak je pozastaven\u00fd z pl\u00e1novania. V momente, ke\u010f sa proces stane BLOCKED, napr\u00edklad ke\u010f iniciuje oper\u00e1ciu IO, OS ho dr\u017e\u00ed v tomto stave a\u017e do nastania nejak\u00e9ho udalosti, napr\u00edklad dokon\u010denia IO. V tomto momente d\u00f4jde k prechodu do stavu READY a m\u00f4\u017ee okam\u017eite prejs\u0165 do stavu RUNNING, ak sa tak rozhodne OS. <br \/>\nPozrime sa na pr\u00edklad toho, ako dva procesy prech\u00e1dzaj\u00fa t\u00fdmito stavmi. Na za\u010diatok si predstavme, \u017ee oba procesy s\u00fa spusten\u00e9 a ka\u017ed\u00fd vyu\u017e\u00edva iba CPU. V tomto pr\u00edpade bud\u00fa ich stavy vyzera\u0165 nasledovne.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 2: Abstrakcia: Proces (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV nasleduj\u00facom pr\u00edklade prv\u00fd proces po ur\u010ditom \u010dase pr\u00e1ce po\u017eiada o IO a prejde do stavu BLOCKED, pri\u010dom poskytne druh\u00e9mu procesu mo\u017enos\u0165 spustenia (OBR. 1.4). OS vid\u00ed, \u017ee proces 0 nevyu\u017e\u00edva CPU a sp\u00fa\u0161\u0165a proces 1. Po\u010das vykon\u00e1vania procesu 1 sa IO dokon\u010d\u00ed a stav procesu 0 sa zmen\u00ed na READY. Nakoniec proces 1 skon\u010dil a po jeho skon\u010den\u00ed sa proces 0 sp\u00fa\u0161\u0165a, vykon\u00e1va a kon\u010d\u00ed svoju pr\u00e1cu.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 2: Abstrakcia: Proces (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>\u0160trukt\u00fara d\u00e1t<\/h3>\n<p>\n OS je sama o sebe programom, a rovnako ako ak\u00fdko\u013evek in\u00fd program m\u00e1 niektor\u00e9 k\u013e\u00fa\u010dov\u00e9 \u0161trukt\u00fary d\u00e1t, ktor\u00e9 sleduj\u00fa r\u00f4zne relevantn\u00e9 kusy inform\u00e1ci\u00ed. Na sledovanie stavu ka\u017ed\u00e9ho procesu bude OS udr\u017eiava\u0165 nejak\u00fd <b>process list<\/b> pre v\u0161etky procesy v stave READY a nejak\u00e9 \u010fal\u0161ie inform\u00e1cie na sledovanie procesov, ktor\u00e9 s\u00fa moment\u00e1lne vykon\u00e1van\u00e9. OS tie\u017e mus\u00ed sledova\u0165 a zablokovan\u00e9 procesy. Po dokon\u010den\u00ed IO je OS povinn\u00e1 prebudi\u0165 potrebn\u00fd proces a previes\u0165 ho do stavu pripravenosti na spustenie.<\/p>\n<p>Tak, napr\u00edklad, OS mus\u00ed uchova\u0165 stav registrov procesora. V momente zastavenia procesu sa stav registrov ulo\u017e\u00ed do adresn\u00e9ho priestoru procesu, a pri pokra\u010dovan\u00ed jeho pr\u00e1ce \u2014 obnov\u00ed hodnoty registrov a takto pokra\u010duje vo vykon\u00e1van\u00ed tohto procesu.<\/p>\n<p>Okrem stavov ready, blocked, running existuj\u00fa aj niektor\u00e9 in\u00e9 stavy. Niekedy m\u00f4\u017ee by\u0165 proces pri vytv\u00e1ran\u00ed v stave INIT. Nakoniec m\u00f4\u017ee by\u0165 proces umiestnen\u00fd do stavu FINAL, ke\u010f u\u017e skon\u010dil, ale inform\u00e1cie o \u0148om e\u0161te neboli vymazan\u00e9. V syst\u00e9moch UNIX sa tento stav naz\u00fdva <b>proces-zombie<\/b>. Tento stav je u\u017eito\u010dn\u00fd v pr\u00edpadoch, ke\u010f rodi\u010dovsk\u00fd proces chce zisti\u0165 n\u00e1vratov\u00fd k\u00f3d potomka, napr\u00edklad oby\u010dajne 0 signalizuje \u00faspe\u0161n\u00e9 dokon\u010denie a 1 chybu, av\u0161ak program\u00e1tori m\u00f4\u017eu vytv\u00e1ra\u0165 \u010fal\u0161ie n\u00e1vratov\u00e9 k\u00f3dy, ktor\u00e9 signalizuj\u00fa r\u00f4zne probl\u00e9my. Pri dokon\u010den\u00ed rodi\u010dovsk\u00fd proces vykon\u00e1va posledn\u00fd syst\u00e9mov\u00fd volanie, napr\u00edklad wait(), aby po\u010dkal na dokon\u010denie pr\u00e1ce procesu-potomka a signalizoval OS, \u017ee je mo\u017en\u00e9 vy\u010disti\u0165 ak\u00e9ko\u013evek \u00fadaje s\u00favisiace so skon\u010den\u00fdm procesom.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 2: Abstrakcia: Proces (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>K\u013e\u00fa\u010dov\u00e9 body predn\u00e1\u0161ky:<\/h3>\n<p>\n\u25cf <b>Proces <\/b> \u2014 hlavn\u00e1 abstrakcia pracuj\u00faceho programu v OS. V akomko\u013evek momente \u010dasu m\u00f4\u017ee by\u0165 proces pop\u00edsan\u00fd pod\u013ea jeho stavu: obsahom pam\u00e4te vo svojom adresnom priestore, obsahom registrov CPU, vr\u00e1tane instruction pointer a stack pointer, ako aj inform\u00e1ciou o IO, napr\u00edklad otvoren\u00fdmi s\u00fabormi, ktor\u00e9 sa \u010d\u00edtaj\u00fa alebo zapisuj\u00fa.<br \/>\n\u25cf <b>API procesu<\/b> s\u00fa zvy\u010dajne syst\u00e9mov\u00e9 volania, ktor\u00e9 m\u00f4\u017eu programy vykon\u00e1va\u0165 vo vz\u0165ahu k procesom. Zvy\u010dajne ide o volania na vytvorenie, odstr\u00e1nenie alebo in\u00e9.<br \/>\n\u25cf Proces sa nach\u00e1dza v jednom z mnoh\u00fdch stavov, vr\u00e1tane running, ready, blocked. R\u00f4zne udalosti, ako pl\u00e1novanie, vyl\u00fa\u010denie z pl\u00e1novania alebo \u010dakanie m\u00f4\u017eu previes\u0165 stav procesu z jedn\u00e9ho do druh\u00e9ho.<br \/>\n\u25cf <b>Zoznam procesov<\/b> obsahuje inform\u00e1cie o v\u0161etk\u00fdch procesoch v syst\u00e9me. Ka\u017ed\u00fd z\u00e1znam v \u0148om sa naz\u00fdva process control block, ktor\u00fd je v skuto\u010dnosti \u0161trukt\u00farou obsahuj\u00facou v\u0161etky potrebn\u00e9 inform\u00e1cie o konkr\u00e9tnom procese.\u2003<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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\udd47Operating Systems: Three Easy Pieces. Part 2: Abstrakcia: Proces (preklad) | ProHoster","description":"\u00davod do opera\u010dn\u00fdch syst\u00e9mov Ahoj, Habr! Chcem v\u00e1m predstavi\u0165 s\u00e9riu \u010dl\u00e1nkov-prekladov jednej zauj\u00edmavej literat\u00fary \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/30992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}