{"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\/sl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Operativni sistemi: Tri lagana dela. Deo 1: Uvod (prevod)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Uvod v operacijske sisteme<\/h1>\n<p>Pozdrav, Habr! Rad bi predstavil serijo \u010dlankov-prevedb ene zanimive literature \u2014 OSTEP. V tem gradivu se poglobljeno ukvarja z delovanjem unix-podobnih operacijskih sistemov, zlasti z obvladovanjem procesov, razli\u010dnimi na\u010drtovalniki, pomnilnikom in drugimi podobnimi sestavinami, ki sestavljajo sodobni OS. Izvirnik vseh gradiv si lahko ogledate tukaj <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">tukaj<\/a><\/noindex>. Prosimo, upo\u0161tevajte, da je prevod izveden nepoklicno (dokaj prosto), a upam, da sem ohranil splo\u0161en smisel.<\/p>\n<p>Laboratorijske vaje za to temo lahko najdete tukaj:<br \/>\n \u2014 izvirnik: <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 \u2014 izvirnik: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 moja osebna prilagoditev: <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>Lahko tudi obi\u0161\u010dete moj kanal v <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegram<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Delovanje programa<\/h3>\n<p>\nKaj se zgodi, ko deluje neka programska oprema? Zagnana programska oprema izvaja eno preprosto nalogo \u2014 izvaja ukaze. Vsako sekundo milijoni in morda celo milijarde ukazov procesor izlo\u010di iz delovnega pomnilnika, nato jih dekodira (na primer, prepozna, kateremu tipu ukazov pripadajo) in izvede. To so lahko se\u0161tevanje dveh \u0161tevil, dostop do pomnilnika, preverjanje pogoja, prehod na funkcijo in tako naprej. Po kon\u010danem izvajanju enega ukaza procesor preide na izvajanje drugega. In tako, ukaz za ukazom, se izvr\u0161ujejo, dokler program ne kon\u010da.<br \/>\nTa primer je seveda predstavljen poenostavljeno \u2014 v resnici sodobna strojna oprema omogo\u010da, da procesor izvaja ukaze izven vrste, predvideva mo\u017ene rezultate, izvr\u0161uje ukaze hkrati in podobne trike za pospe\u0161itev delovanja.<\/p>\n<h3>Von Neumannova modela ra\u010dunanja<\/h3>\n<p>\nPoenostavljena oblika delovanja, ki smo jo opisali, je podobna Von Neumannovemu modelu ra\u010dunanja. <i>Von Neumann je eden izmed pionirjev ra\u010dunalni\u0161kih sistemov, prav tako je eden izmed avtorjev teorije iger<\/i>. Med delovanjem programa se odvija \u0161e vrsta drugih dogodkov, deluje veliko drugih procesov in zunanje logike, katerih osnovni cilj je poenostaviti zagon, delovanje in vzdr\u017eevanje sistema.<br \/>\nObstaja nabor programske opreme, ki je odgovoren za enostavno zagon programov (ali celo omogo\u010da hkratno zagon ve\u010d programov), omogo\u010da programom deljenje istega spomina ter interakcijo z razli\u010dnimi napravami. Ta nabor programske opreme pravzaprav imenujemo operacijski sistem, katerega naloge vklju\u010dujejo spremljanje, da sistem deluje pravilno in u\u010dinkovito, ter zagotavljanje enostavne upravljivosti tega sistema. <\/p>\n<h2>Operacijski sistem<\/h2>\n<p>\n<b>Operacijski sistem, okraj\u0161ano OS, je kompleks medsebojno povezanih programov, namenjenih upravljanju virov ra\u010dunalnika in organizaciji interakcije uporabnika z ra\u010dunalnikom.<\/b>. <br \/>\nOS dosega svojo u\u010dinkovitost predvsem preko tehnike, ki je najpomembnej\u0161a \u2014 tehnike <b>virtualizacije.<\/b>. OS komunicira s fizi\u010dnimi viri (procesorjem, pomnilnikom, diskom in podobno) ter jih preoblikuje v bolj splo\u0161no, z ve\u010djimi mo\u017enostmi in la\u017ejo obliko za uporabo. Zato lahko za splo\u0161no razumevanje operacijski sistem grobo primerjamo z virtualnim strojem.<br \/>\nDa omogo\u010di uporabnikom, da dajejo ukaze operacijskemu sistemu in s tem uporabljajo mo\u017enosti virtualnega stroja (kot so: zagon programa, dodeljevanje pomnilnika, dostop do datotek itd.), operacijski sistem zagotavlja nekak\u0161en vmesnik, imenovan <b>API<\/b> (sistem za programiranje aplikacij) do katerega je mogo\u010de opraviti klice (call). Tipi\u010den operacijski sistem omogo\u010da izvajanje stotin sistemskih klicev.<br \/>\nIn nazadnje, ker virtualizacija omogo\u010da, da ve\u010d programov deluje (tako so\u010dasno uporabljajo CPU) in hkrati dostopajo do njihovih navodil in podatkov (s tem delijo pomnilnik), ter dostopajo do diskov (tako so\u010dasno uporabljajo naprave za vnose in izhode), operacijski sistem imenujemo tudi upravljalec virov. Vsak procesor, disk in pomnilnik sta vir sistema, in tako postane ena od nalog operacijskega sistema upravljanje teh virov, kar po\u010dne u\u010dinkovito, po\u0161teno ali, nasprotno, odvisno od naloge, za katero je ta operacijski sistem razvit.<\/p>\n<h3>Virtualizacija CPU<\/h3>\n<p>\nRazmotrimo slede\u0107i program:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Operativni sistemi: Tri lagana dela. Deo 1: Uvod (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOn ne vr\u0161i nikakve posebne radnje, su\u0161tinski sve \u0161to radi je pozivanje funkcije <b>spin<\/b>(), \u010dija je svrha cikli\u010dka provera vremena i vra\u0107anje, nakon \u0161to pro\u0111e jedna sekunda. Tako ona beskona\u010dno ponavlja niz koji je korisnik prosledio kao argument.<br \/>\nPokrenimo ovaj program i prosledimo mu kao argument simbol \u201cA\u201d. Rezultat nije naro\u010dito zanimljiv \u2014 sistem jednostavno izvr\u0161ava program koji periodi\u010dno prikazuje simbol \u201cA\u201d.<br \/>\nSada probajmo varijantu gde je pokrenuto vi\u0161e instanci istog programa, ali prikazuju razli\u010dite pojedina\u010dne znakove, kako bi bilo jasnije. U tom slu\u010daju, rezultat \u0107e biti ne\u0161to druga\u010diji. Iako imamo jedan procesor, program se izvr\u0161ava istovremeno. Kako to funkcioni\u0161e? Funkcioni\u0161e tako \u0161to operativni sistem, uz pomo\u0107 mogu\u0107nosti hardvera, stvara iluziju. Iluziju da u sistemu postoji nekoliko virtuelnih procesora, pretvaraju\u0107i jedan fizi\u010dki procesor u teoretski beskona\u010dan broj i omogu\u0107avaju\u0107i programima da deluju kao da se izvr\u0161avaju istovremeno. Takvu iluziju nazivamo <i>Virtualizacija CPU<\/i>.<br \/>\n Ovakva slika postavlja mnoga pitanja, na primer, ako nekoliko programa \u017eeli da se pokrene istovremeno, koji program \u0107e biti pokrenut? Na to pitanje odgovaraju \"politike\" operativnog sistema. Politike se koriste na mnogo mesta u operativnom sistemu i odgovaraju na sli\u010dna pitanja, a tako\u0111e predstavljaju osnovne mehanizme koje operativni sistem implementira. Otuda i uloga operativnog sistema kao menad\u017eera resursa.<\/p>\n<h3>Virtualizacija memorije<\/h3>\n<p>\n Sada da razmotrimo memoriju. <b>Fizi\u010dki model memorije u savremenim sistemima predstavlja se kao niz bajtova<\/b>. Za \u010ditanje iz memorije potrebno je navesti <b>adresu \u0107elije<\/b>, kako bi se do nje pristupilo. Da bismo zapisali ili a\u017eurirali podatke, tako\u0111e je potrebno navesti podatke i adresu \u0107elije u koju \u0107emo ih zapisati.<br \/>\n Pristupi memoriji se vr\u0161e neprekidno tokom rada programa. Program \u010duva u memoriji celu svoju strukturu podataka i obra\u0107a se njoj izvr\u0161avaju\u0107i razli\u010dite instrukcije. Instrukcije se tako\u0111e \u010duvaju u memoriji, tako da se pristup njima vr\u0161i na svaki zahtev za slede\u0107u instrukciju.<\/p>\n<h4>Klic malloc()<\/h4>\n<p>Oglejmo si naslednji program, ki dodeljuje pomnilni\u0161ki prostor z uporabo klica <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Operativni sistemi: Tri lagana dela. Deo 1: Uvod (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgram izvaja ve\u010d nalog. Najprej dodeli dolo\u010den volumen pomnilnika (vrsta 7), nato izpisuje naslov dodeljenega bloka (vrsta 9), zapi\u0161e ni\u010d v prvo mesto dodeljenega pomnilnika. Nato program vstopi v zanko, ki inkrementira vrednost, zapisano v pomnilniku na naslovu spremenljivke \u201cp\u201d. Prav tako izpisuje identifikator samega procesa. <b>Identifikator procesa je edinstven za vsak zagnan proces<\/b>. \u010ce za\u017eenemo ve\u010d kopij, se sre\u010damo z zanimivim rezultatom: V prvem primeru, \u010de ne storimo ni\u010desar in preprosto za\u017eenemo ve\u010d kopij, bodo naslovi razli\u010dni. To pa ne ustreza na\u0161i teoriji! Prav, ker je v sodobnih distribucijah privzeto vklju\u010dena funkcija naklju\u010dne razporeditve pomnilnika. \u010ce jo izklopimo, dobimo pri\u010dakovani rezultat \u2014 naslovi pomnilnika pri dveh hkrati delujo\u010dih programih se bodo ujemali. <\/p>\n<p><img decoding=\"async\" alt=\"Operativni sistemi: Tri lagana dela. Deo 1: Uvod (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Na koncu to pomeni, da dve neodvisni programi delujeta s svojimi lastnimi zasebnimi naslovi, ki jih operacijski sistem prika\u017ee v fizi\u010dnem pomnilniku.<\/b>Zato uporaba naslovov pomnilnika v okviru enega programa ne bo nikakor vplivala na druge, in vsakemu programu se zdi, da ima svoj kos fizi\u010dnega pomnilnika, celotno dodeljenega v njegovem upravljanju. Resni\u010dnost pa je taka, da je fizi\u010dni pomnilnik skupen vir, ki ga upravlja operacijski sistem.<\/p>\n<h3>Konsistenca<\/h3>\n<p>\n\u0160e ena pomembna tema v okviru operacijskih sistemov je <b>konsistenca<\/b>. Ta izraz se uporablja, ko govorimo o te\u017eavah v sistemu, ki se lahko pojavijo pri delu z ve\u010d stvarmi hkrati znotraj enega programa. Te\u017eave s konsistenco se pojavijo tudi v samem operacijskem sistemu. V prej\u0161njih primerih z virtualizacijo pomnilnika in procesorja smo ugotovili, da operacijski sistem upravlja z ve\u010d stvarmi hkrati \u2014 za\u017eene prvi proces, nato drugega in tako naprej. Izkazalo se je, da lahko tak\u0161no vedenje povzro\u010di nekatere te\u017eave. Na primer, sodobni ve\u010dnitni programi se soo\u010dajo s tak\u0161nimi te\u017eavami.<\/p>\n<p>Razmotrimo slede\u0107i program:<\/p>\n<p> <img decoding=\"async\" alt=\"Operativni sistemi: Tri lagana dela. Deo 1: Uvod (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgram v glavni funkciji ustvari dva toka, s pomo\u010djo klica <b>Pthread_create()<\/b>. V tem primeru lahko o toku razmi\u0161ljamo kot o funkciji, ki se izvaja v enem pomnilni\u0161kem prostoru skupaj z drugimi funkcijami, pri \u010demer je \u0161tevilo hkrati zagnanih funkcij o\u010ditno ve\u010d kot ena. V tem primeru vsak tok za\u010dne in izvaja funkcijo <b>worker(), ki preprosto pove\u010duje spremenljivko<\/b>,.<\/p>\n<p>. Zagnali bomo to program s parameter 1000. Kot ste morda \u017ee uganili, bi moral biti rezultat 2000, saj vsak tok pove\u010da spremenljivko 1000-krat. Vendar stvar ni tako enostavna. Poskusimo zagnati program s \u0161tevilom ponovitev za red ve\u010d.<\/p>\n<p><img decoding=\"async\" alt=\"Operativni sistemi: Tri lagana dela. Deo 1: Uvod (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKo kot vhodno \u0161tevilo damo, na primer, 100000, pri\u010dakujemo, da bomo na izhodu videli \u0161tevilo 200000. Vendar, ko ve\u010dkrat zagnamo \u0161tevilko 100000, ne zgolj da ne bomo videli pravilnega odgovora, temve\u010d bomo dobili tudi razli\u010dne nepravilne odgovore. Razlaga ti\u010di v tem, da za pove\u010danje \u0161tevila potrebujemo tri operacije - nalaganje \u0161tevila iz pomnilnika, pove\u010danje in nato zapis \u0161tevila nazaj. Ker te instrukcije niso izvedene atomarno (vse hkrati), se lahko dogajajo tak\u0161ne \u010dudne stvari. Ta problem se imenuje v programiranju <b>race condition \u2014 stanje dirke<\/b>. Ko lahko neznane sile v neznanem trenutku vplivajo na izvajanje katere koli od va\u0161ih operacij.<br \/>\n<br \/>Izvor: <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\/sl\/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=\"sl_SI\" \/>\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\/sl\/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 (prevod) | ProHoster","description":"Uvod v operacijske sisteme Pozdrav, Habr! Rad bi vam predstavil serijo \u010dlankov-prevedb nekaterih zanimivih knjig \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}