{"id":30717,"date":"2019-10-31T21:37:05","date_gmt":"2019-10-31T18:37:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-1-intro-perevod\/"},"modified":"2019-10-31T21:37:05","modified_gmt":"2019-10-31T18:37:05","slug":"operating-systems-three-easy-pieces-part-1-intro-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 1: \u00davod (preklad)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>\u00davod do opera\u010dn\u00fdch syst\u00e9mov<\/h1>\n<p>Ahoj, Habr! Chcem v\u00e1m predstavi\u0165 s\u00e9riu \u010dl\u00e1nkov-prechodov zauj\u00edmavej literat\u00fary - OSTEP. V tomto materi\u00e1li sa dos\u0165 hlboko sk\u00fama fungovanie unixov\u00fdch opera\u010dn\u00fdch syst\u00e9mov, konkr\u00e9tne pr\u00e1ca 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:<br \/>\n - 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><br \/>\n - origin\u00e1l: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n - 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><\/p>\n<p>A 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<h3>Pr\u00e1ca programu<\/h3>\n<p>\n\u010co sa deje, ke\u010f sa spust\u00ed ak\u00fdko\u013evek program? Spusten\u00fd program vykon\u00e1va jednu jednoduch\u00fa \u00falohu - vykon\u00e1va in\u0161trukcie. Ka\u017ed\u00fa sekundu procesor z opera\u010dnej pam\u00e4te vyber\u00e1 mili\u00f3ny, ba dokonca mo\u017eno miliardy in\u0161trukci\u00ed, ktor\u00e9 n\u00e1sledne dek\u00f3duje (napr\u00edklad rozpozn\u00e1, k ak\u00e9mu typu patria tieto in\u0161trukcie) a vykon\u00e1va ich. M\u00f4\u017ee \u00eds\u0165 o s\u010d\u00edtanie dvoch \u010d\u00edsel, pr\u00edstup do pam\u00e4te, kontrolu podmienky, prechod na funkciu at\u010f. Po dokon\u010den\u00ed jednej in\u0161trukcie procesor prech\u00e1dza k vykonaniu \u010fal\u0161ej. A takto in\u0161trukcia za in\u0161trukciou, vykon\u00e1vaj\u00fa sa, k\u00fdm program neskon\u010d\u00ed.<br \/>\nTento pr\u00edklad je samozrejme zjednodu\u0161en\u00fd - v skuto\u010dnosti s\u00fa modern\u00e9 komponenty schopn\u00e9 vykon\u00e1va\u0165 in\u0161trukcie neporiadne, predpoveda\u0165 mo\u017en\u00e9 v\u00fdsledky, vykon\u00e1va\u0165 in\u0161trukcie s\u00fa\u010dasne a podobn\u00e9 triky na ur\u00fdchlenie pr\u00e1ce procesora.<\/p>\n<h3>F\u00f3n-Nejmanova v\u00fdpo\u010dtov\u00e1 modelka<\/h3>\n<p>\nPop\u00edsan\u00e1 zjednodu\u0161en\u00e1 forma pr\u00e1ce je podobn\u00e1 F\u00f3n-Nejmanovej modelke v\u00fdpo\u010dtov. <i>F\u00f3n-Nejman bol jedn\u00fdm z priekopn\u00edkov po\u010d\u00edta\u010dov\u00fdch syst\u00e9mov, takisto je jedn\u00fdm z autorov te\u00f3rie hier.<\/i>. Po\u010das pr\u00e1ce programu sa odohr\u00e1va mno\u017estvo \u010fal\u0161\u00edch udalost\u00ed, pracuje mnoho in\u00fdch procesov a extern\u00e9 logiky, ktor\u00fdch hlavn\u00fd cie\u013e je zjednodu\u0161i\u0165 spustenie, fungovanie a \u00fadr\u017ebu syst\u00e9mu.<br \/>\nExistuje sada softv\u00e9ru, ktor\u00e1 je zodpovedn\u00e1 za jednoduchos\u0165 sp\u00fa\u0161\u0165ania programov (alebo dokonca umo\u017e\u0148uje sp\u00fa\u0161\u0165a\u0165 nieko\u013eko programov s\u00fa\u010dasne). Umo\u017e\u0148uje programom zdie\u013ea\u0165 rovnak\u00fa pam\u00e4\u0165 a tie\u017e interagova\u0165 s r\u00f4znymi zariadeniami. Tak\u00e1to sada softv\u00e9ru sa v podstate naz\u00fdva opera\u010dn\u00fd syst\u00e9m a jeho \u00falohou je sledova\u0165, aby syst\u00e9m fungoval spr\u00e1vne a efekt\u00edvne, a z\u00e1rove\u0148 zabezpe\u010di\u0165 jednoduch\u00fa spr\u00e1vu tohto syst\u00e9mu. <\/p>\n<h2>Opera\u010dn\u00fd syst\u00e9m<\/h2>\n<p>\n<b>Opera\u010dn\u00fd syst\u00e9m, skr\u00e1tene OS, je komplex vz\u00e1jomne prepojen\u00fdch programov, ur\u010den\u00fdch na riadenie zdrojov po\u010d\u00edta\u010da a organiz\u00e1ciu interakcie pou\u017e\u00edvate\u013ea s po\u010d\u00edta\u010dom.<\/b>. <br \/>\nOS dosahuje svoju efekt\u00edvnos\u0165 predov\u0161etk\u00fdm prostredn\u00edctvom najd\u00f4le\u017eitej\u0161ej techniky \u2014 techniky <b>virtualiz\u00e1cie.<\/b>OS interaguje s fyzick\u00fdmi zdrojmi (procesorom, pam\u00e4\u0165ou, diskom a podobne) a transformuje ich na v\u0161eobecnej\u0161iu, s \u0161ir\u0161\u00edmi mo\u017enos\u0165ami a jednoduch\u0161iu na pou\u017e\u00edvanie formu sam\u00e9ho seba. Preto pre celkov\u00e9 pochopenie m\u00f4\u017eeme ve\u013emi hrubo porovna\u0165 opera\u010dn\u00fd syst\u00e9m s virtu\u00e1lnym strojom.<br \/>\nAby sme umo\u017enili pou\u017e\u00edvate\u013eom vyd\u00e1va\u0165 pr\u00edkazy opera\u010dn\u00e9mu syst\u00e9mu a t\u00fdmto sp\u00f4sobom vyu\u017e\u00edva\u0165 mo\u017enosti virtu\u00e1lneho stroja (ako: sp\u00fa\u0161\u0165anie programov, pride\u013eovanie pam\u00e4te, pr\u00edstup k s\u00faborom a podobne), opera\u010dn\u00fd syst\u00e9m poskytuje ur\u010dit\u00fd rozhranie, naz\u00fdvan\u00e9 <b>API<\/b> (application programming interface), ku ktor\u00e9mu je mo\u017en\u00e9 robi\u0165 volania (call). Typick\u00fd opera\u010dn\u00fd syst\u00e9m umo\u017e\u0148uje vykona\u0165 stovky syst\u00e9mov\u00fdch volan\u00ed.<br \/>\nA nakoniec, ke\u010f\u017ee virtualiz\u00e1cia umo\u017e\u0148uje mno\u017estvu programov fungova\u0165 (t\u00fdmto sp\u00f4sobom zdie\u013eaj\u00fa CPU) a s\u00fa\u010dasne pristupova\u0165 k ich in\u0161trukci\u00e1m a \u00fadajom (\u010d\u00edm zdie\u013eaj\u00fa pam\u00e4\u0165), ako aj pristupova\u0165 k diskom (\u010d\u00edm zdie\u013eaj\u00fa vstupno-v\u00fdstupn\u00e9 zariadenia), opera\u010dn\u00fd syst\u00e9m sa naz\u00fdva aj spr\u00e1vcom zdrojov. Ka\u017ed\u00fd procesor, disk a pam\u00e4\u0165 s\u00fa zdrojmi syst\u00e9mu, a tak jednou z \u00faloh opera\u010dn\u00e9ho syst\u00e9mu sa st\u00e1va efekt\u00edvne a spravodliv\u00e9 riadenie t\u00fdchto zdrojov, alebo naopak, v z\u00e1vislosti od \u00falohy, pre ktor\u00fa bol tento opera\u010dn\u00fd syst\u00e9m vyvinut\u00fd.<\/p>\n<h3>Virtualiz\u00e1cia CPU<\/h3>\n<p>\nPozrime sa na nasleduj\u00faci program:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 1: \u00davod (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNevykon\u00e1va \u017eiadne \u0161peci\u00e1lne akcie, vlastne to, \u010do rob\u00ed, je volanie funkcie <b>spin<\/b>(), ktorej \u00falohou je cyklick\u00e9 overovanie \u010dasu a n\u00e1vrat, potom \u010do uplynula jedna sekunda. T\u00fdmto sp\u00f4sobom nekone\u010dne opakuje re\u0165azec, ktor\u00fd pou\u017e\u00edvate\u013e poskytol ako argument.<br \/>\nSpust\u00edme tento program a odovzd\u00e1me mu ako argument znak \u201cA\u201d. V\u00fdsledok nie je ve\u013emi zauj\u00edmav\u00fd \u2014 syst\u00e9m jednoducho vykon\u00e1va program, ktor\u00fd periodicky zobrazuje znak \u201cA\u201d.<br \/>\nTeraz vysk\u00fa\u0161ajme variant, ke\u010f je spusten\u00fdch viac in\u0161tanci\u00ed toho ist\u00e9ho programu, ale zobrazuj\u00fa r\u00f4zne p\u00edsmen\u00e1, aby to bolo jasnej\u0161ie. V tomto pr\u00edpade bude v\u00fdsledok trochu in\u00fd. Napriek tomu, \u017ee m\u00e1me jeden procesor, program sa vykon\u00e1va s\u00fa\u010dasne. Ako je to mo\u017en\u00e9? Syst\u00e9m oper\u00e1ci\u00ed, s pomocou hardv\u00e9rov\u00fdch mo\u017enost\u00ed, vytv\u00e1ra il\u00faziu. Il\u00faziu toho, \u017ee v syst\u00e9me existuje nieko\u013eko virtu\u00e1lnych procesorov, pretv\u00e1raj\u00fac jeden fyzick\u00fd procesor na teoreticky nekone\u010dn\u00fd po\u010det a t\u00fdm umo\u017e\u0148uje, aby sa programy na poh\u013ead vykon\u00e1vali s\u00fa\u010dasne. Tak\u00fa il\u00faziu naz\u00fdvame <i>Virtualiz\u00e1cia CPU<\/i>.<br \/>\n Tak\u00fdto obraz vyvol\u00e1va mno\u017estvo ot\u00e1zok, napr\u00edklad, ak nieko\u013eko programov chce spusti\u0165 s\u00fa\u010dasne, ktor\u00fd z nich bude vlastne spusten\u00fd? Za t\u00fato ot\u00e1zku s\u00fa zodpovedn\u00e9 \u201cpolitiky\u201d opera\u010dn\u00e9ho syst\u00e9mu. Politiky sa pou\u017e\u00edvaj\u00fa na mnoh\u00fdch miestach OS a odpovedaj\u00fa na podobn\u00e9 ot\u00e1zky, a takisto s\u00fa z\u00e1kladn\u00fdmi mechanizmami, ktor\u00e9 OS realizuje. Odtia\u013e aj \u00faloha OS ako spr\u00e1vcov zdrojov.<\/p>\n<h3>Virtualiz\u00e1cia pam\u00e4te<\/h3>\n<p>\n Teraz si preberme pam\u00e4\u0165. <b>Fyzick\u00fd model pam\u00e4te v modern\u00fdch syst\u00e9moch sa predstavuje ako pole bajtov<\/b>. Na \u010d\u00edtanie z pam\u00e4te je potrebn\u00e9 uvies\u0165 <b>adresu bunky<\/b>, aby sme sa k nej dostali. Na zapisovanie alebo aktualiz\u00e1ciu \u00fadajov je takisto potrebn\u00e9 uvies\u0165 \u00fadaje a adresu bunky, kam ich zap\u00ed\u0161eme.<br \/>\n Pr\u00edstup k pam\u00e4ti prebieha neust\u00e1le v procese pr\u00e1ce programu. Program uchov\u00e1va v pam\u00e4ti cel\u00fa svoju d\u00e1tov\u00fa \u0161trukt\u00faru a pristupuje k nej, vykon\u00e1vaj\u00fac r\u00f4zne in\u0161trukcie. In\u0161trukcie s\u00fa medzi\u010dasom taktie\u017e ulo\u017een\u00e9 v pam\u00e4ti, tak\u017ee pr\u00edstup k nej prebieha aj pri ka\u017edom \u010fal\u0161om po\u017eiadavku na nasleduj\u00facu in\u0161trukciu.<\/p>\n<h4>Volanie malloc()<\/h4>\n<p>Zv\u00e1\u017eme nasleduj\u00faci program, ktor\u00fd prideli oblas\u0165 pam\u00e4te pomocou volania <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 1: \u00davod (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgram rob\u00ed nieko\u013eko vec\u00ed. Po prv\u00e9, pridel\u00ed ur\u010dit\u00fd objem pam\u00e4te (riadok 7), potom vyp\u00ed\u0161e adresu pridelen\u00e9ho bloku (riadok 9), zap\u00ed\u0161e nula do prv\u00e9ho slotu pridelen\u00e9 pam\u00e4te. N\u00e1sledne program vst\u00fapi do cyklu, v ktorom inkrementuje hodnotu zap\u00edsan\u00fa v pam\u00e4ti na adrese v premennej \"p\". Taktie\u017e vypisuje identifik\u00e1tor procesu sam\u00e9ho seba. <b>Identifik\u00e1tor procesu je jedine\u010dn\u00fd pre ka\u017ed\u00fd spusten\u00fd proces<\/b>. Ak spust\u00edme nieko\u013eko k\u00f3pi\u00ed, naraz\u00edme na zauj\u00edmav\u00fd v\u00fdsledok: V prvom pr\u00edpade, ak neurob\u00edme ni\u010d a jednoducho spust\u00edme nieko\u013eko k\u00f3pi\u00ed, adresy bud\u00fa r\u00f4zne. Ale to nevyhovuje na\u0161ej te\u00f3rii! Spr\u00e1vne, preto\u017ee v modern\u00fdch distrib\u00faci\u00e1ch je predvolene zapnut\u00e1 funkcia n\u00e1hodn\u00e9ho rozdelenia pam\u00e4te. Ak ju vypneme, dostaneme o\u010dak\u00e1van\u00fd v\u00fdsledok \u2014 adresy pam\u00e4te dvoch s\u00fa\u010dasne be\u017eiacich programov sa bud\u00fa zhodova\u0165. <\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 1: \u00davod (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Nakoniec sa ukazuje, \u017ee dva nez\u00e1visl\u00e9 programy pracuj\u00fa so svojimi vlastn\u00fdmi s\u00fakromn\u00fdmi adresn\u00fdmi priestormi, ktor\u00e9 s\u00fa spr\u00edstupnen\u00e9 syst\u00e9mom na fyzick\u00fa pam\u00e4\u0165.<\/b>Preto pou\u017e\u00edvanie adries pam\u00e4te v r\u00e1mci jedn\u00e9ho programu nijako neovplyvn\u00ed in\u00e9 a ka\u017ed\u00e9mu programu sa zd\u00e1, \u017ee m\u00e1 svoj vlastn\u00fd k\u00fasok fyzickej pam\u00e4te plne k dispoz\u00edcii. Realita je v\u0161ak tak\u00e1, \u017ee fyzick\u00e1 pam\u00e4\u0165 je zdie\u013ean\u00fd zdroj, ktor\u00e9ho spr\u00e1vu vykon\u00e1va opera\u010dn\u00fd syst\u00e9m.<\/p>\n<h3>Konzistencia<\/h3>\n<p>\n\u010eal\u0161ou d\u00f4le\u017eitou t\u00e9mou v r\u00e1mci opera\u010dn\u00fdch syst\u00e9mov je <b>konzistencia<\/b>. Tento term\u00edn sa pou\u017e\u00edva, ke\u010f ide o probl\u00e9my v syst\u00e9me, ktor\u00e9 m\u00f4\u017eu vznikn\u00fa\u0165 pri pr\u00e1ci s viacer\u00fdmi vecami naraz v r\u00e1mci jedn\u00e9ho programu. Probl\u00e9my s konzistenciou vznikaj\u00fa aj v samotnom opera\u010dnom syst\u00e9me. V predch\u00e1dzaj\u00facich pr\u00edkladoch s virtualiz\u00e1ciou pam\u00e4te a procesora sme pochopili, \u017ee OS spravuje mnoh\u00e9 veci naraz - sp\u00fa\u0161\u0165a prv\u00fd proces, potom druh\u00fd a tak \u010falej. Ako sa uk\u00e1zalo, tak\u00e9to spr\u00e1vanie m\u00f4\u017ee vies\u0165 k niektor\u00fdm probl\u00e9mom. Napr\u00edklad modern\u00e9 viacvl\u00e1knov\u00e9 programy za\u017e\u00edvaj\u00fa tieto \u0165a\u017ekosti.<\/p>\n<p>Pozrime sa na nasleduj\u00faci program:<\/p>\n<p> <img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 1: \u00davod (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgram v hlavnej funkcii vytv\u00e1ra dva vl\u00e1kna pomocou volania <b>Pthread_create()<\/b>. V tomto pr\u00edklade je mo\u017en\u00e9 vn\u00edma\u0165 vl\u00e1kno ako funkciu, ktor\u00e1 be\u017e\u00ed v jednom pam\u00e4\u0165ovom prostred\u00ed spolu s in\u00fdmi funkciami, pri\u010dom po\u010det spusten\u00fdch funkci\u00ed je jednozna\u010dne viac ako jedna. V tomto pr\u00edklade ka\u017ed\u00e9 vl\u00e1kno sa sp\u00fa\u0161\u0165a a vykon\u00e1va funkciu <b>worker(), ktor\u00e1 jednoducho inkrementuje premenn\u00fa<\/b>,.<\/p>\n<p>. Spust\u00edme t\u00fato program s argumentom 1000. Ako ste u\u017e mohli uh\u00e1dnu\u0165, v\u00fdsledkom by malo by\u0165 2000, preto\u017ee ka\u017ed\u00e9 vl\u00e1kno inkrementovalo premenn\u00fa 1000-kr\u00e1t. Av\u0161ak v\u0161etko nie je tak\u00e9 jednoduch\u00e9. Pok\u00fasme sa spusti\u0165 program s po\u010dtom opakovan\u00ed poriadne v\u00e4\u010d\u0161\u00edm.<\/p>\n<p><img decoding=\"async\" alt=\"Opera\u010dn\u00e9 syst\u00e9my: Tri jednoduch\u00e9 \u010dasti. \u010cas\u0165 1: \u00davod (preklad)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPri podan\u00ed \u010d\u00edsla, napr\u00edklad 100000, o\u010dak\u00e1vame vidie\u0165 na v\u00fdstupe \u010d\u00edslo 200000. Av\u0161ak, ke\u010f spust\u00edme \u010d\u00edslo 100000 nieko\u013ekokr\u00e1t, nielen\u017ee neuvid\u00edme spr\u00e1vnu odpove\u010f, ale dostaneme aj r\u00f4zne nespr\u00e1vne odpovede. Rie\u0161enie spo\u010d\u00edva v tom, \u017ee na zv\u00fd\u0161enie \u010d\u00edsla s\u00fa potrebn\u00e9 tri oper\u00e1cie \u2014 vy\u0165ahanie \u010d\u00edsla z pam\u00e4te, inkrement\u00e1cia a potom zap\u00edsanie \u010d\u00edsla sp\u00e4\u0165. Ke\u010f\u017ee v\u0161etky tieto in\u0161trukcie sa nevykon\u00e1vaj\u00fa atomicky (v\u0161etky s\u00fa\u010dasne), m\u00f4\u017eu sa dia\u0165 tak\u00e9 zvl\u00e1\u0161tne veci. Tento probl\u00e9m sa naz\u00fdva v programovan\u00ed <b>race condition \u2014 stav s\u00fa\u0165a\u017ee<\/b>. Ke\u010f nezn\u00e1me sily v nezn\u00e1mom momente m\u00f4\u017eu ovplyvni\u0165 vykonanie ak\u00fdchko\u013evek va\u0161ich oper\u00e1ci\u00ed.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446340\/\">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\u044b\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\u043d\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":22702,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30717","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\u044b\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-1-intro-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 1: Intro (\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\u044b\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-1-intro-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:37:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:05+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 1: Intro (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 pod\u013ea m\u00f4jho n\u00e1zoru literat\u00fary \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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 1: Intro (\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\u044b\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-1-intro-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:37:05+00:00","article:modified_time":"2019-10-31T18:37:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30717","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 02:38:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:30:51","updated":"2026-01-21 02:38:19","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\/30717","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=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}