{"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\/hr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Operacijski sustavi: Tri jednostavna dijela. Dio 2: Apstrakcija: Proces (prijevod)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Uvod u operacijske sustave<\/h1>\n<p>\nPozdrav, Habr! \u017delim predstaviti seriju \u010dlanaka-prijevoda jedne zanimljive literature po mom mi\u0161ljenju \u2014 OSTEP. U ovom materijalu duboko se razmatra rad unix-sli\u010dnih operacijskih sustava, a posebno \u2014 rad s procesima, raznim planerima, memorijom i drugim sli\u010dnim komponentama koji \u010dine moderni OS. Original svih materijala mo\u017eete pogledati ovdje <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">ovdje<\/a><\/noindex>. Molim vas, imajte na umu da je prijevod izveden neprofesionalno (dovoljno slobodno), ali se nadam da sam zadr\u017eao op\u0107i smisao.<\/p>\n<p>Laboratorijske vje\u017ebe vezane uz ovu temu mo\u017eete prona\u0107i ovdje:<\/p>\n<ul>\n<li>original: <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>original: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>moja osobna adaptacija: <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>\nOstali dijelovi:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">DIO 1: Uvod<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nA tako\u0111er mo\u017eete zaviriti na moj kanal u <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>Razmotrit \u0107emo najosnovniju apstrakciju koju OS pru\u017ea korisnicima: proces. Definicija procesa je prili\u010dno jednostavna \u2014 to je <b>radni program<\/b>. Program sam po sebi je bezdu\u0161na stvar, smje\u0161tena na disku \u2014 to je skup uputa i mo\u017eda nekih stati\u010dnih podataka koji \u010dekaju trenutak pokretanja. Upravo OS uzima te bajtove i pokre\u0107e ih, pretvaraju\u0107i program u ne\u0161to korisno.<br \/>\n Naj\u010de\u0161\u0107e korisnici \u017eele pokretati vi\u0161e od jednog programa istovremeno, na primjer, mo\u017eete pokrenuti preglednik, igru, multimedijske player, ure\u0111iva\u010d teksta i sli\u010dno na svom prijenosniku. U stvari, tipi\u010dan sustav mo\u017ee pokretati desetke i stotine procesa istovremeno. Ova \u010dinjenica \u010dini sustav jednostavnijim za kori\u0161tenje, nikada se ne morate brinuti je li CPU slobodan, jednostavno pokre\u0107ete programe.<\/p>\n<p><i>Odavde proizlazi problem: kako stvoriti iluziju mnogih CPU-a? Kako OS mo\u017ee stvoriti iluziju prakti\u010dki beskona\u010dnog broja CPU-a, \u010dak i ako imate samo jedan fizi\u010dki CPU?<\/i><\/p>\n<p>OS stvara tu iluziju putem virtualizacije CPU-a. Pokre\u0107u\u0107i jedan proces, zatim ga zaustavljaju\u0107i, pokre\u0107u\u0107i drugi proces i tako dalje, OS mo\u017ee odr\u017eavati iluziju da postoji mnogo virtualnih CPU-a, iako zapravo postoji samo jedan ili nekoliko fizi\u010dkih procesora. Ova tehnika se naziva <b>vremensko dijeljenje CPU resursa<\/b>. Ova tehnika omogu\u0107uje korisnicima pokretanje onoliko istodobnih procesa koliko \u017eele. Cijena ovog rje\u0161enja je performansa \u2013 jer ako CPU dijele vi\u0161e procesa, svaki proces \u0107e se obra\u0111ivati sporije.<br \/>\n Za ostvarenje virtualizacije CPU-a, a osobito kako bi to u\u010dinili dobro, OS treba i nisko- i visoko-nivoj podr\u0161ci. Nisko-nivojna podr\u0161ka se naziva <b>mehanizmima<\/b> \u2014 to su nisko-nivojne metode ili protokoli koji implementiraju potrebni dio funkcionalnosti. Primjer takve funkcionalnosti je prebacivanje konteksta, \u0161to omogu\u0107ava OS-u da zaustavi jedan program i pokrene drugi program na procesoru. Ova vremenska dioba implementirana je u svim modernim OS-ima.<br \/>\n Na vrhu tih mehanizama nalazi se odre\u0111ena logika ugra\u0111ena u OS, u obliku 'politika'. <b>Politika<\/b> \u2014 to je neki algoritam dono\u0161enja odluka od strane operativnog sustava. Takve politike, na primjer, odlu\u010duju koju program treba pokrenuti (iz liste naredbi) kao prvu. Tako, primjerice, ovu \u0107e odluku donijeti politika koja se naziva <b>planer (scheduling policy)<\/b> i pri odabiru rje\u0161enja oslanjat \u0107e se na podatke kao \u0161to su: povijest pokretanja (koji je program bio najdu\u017ee pokrenut u posljednjoj minuti), koju optere\u0107enost taj proces predstavlja (koje vrste programa su pokrenute), metrike performansi (je li sistem optimiziran za interaktivnu interakciju ili za propusnost) i tako dalje.<\/p>\n<h3>Apstrakcija: proces<\/h3>\n<p>\n Apstrakcija radnog programa, koju izvr\u0161ava operativni sustav, to je ono \u0161to nazivamo <b>procedura<\/b>. Kako je ranije re\u010deno, proces je samo radni program u bilo kojem trenutku. Program putem kojeg mo\u017eemo dobiti ukupne informacije s raznih resursa sustava, i na koje se taj program obra\u0107a ili koje program zahva\u0107a tijekom svog izvr\u0161avanja.<br \/>\n Za razumijevanje sastavnica procesa potrebno je shvatiti stanja sustava: \u0161to program mo\u017ee \u010ditati ili mijenjati tijekom svog rada. U bilo kojem trenutku treba razumjeti koji su elementi sustava va\u017eni za izvr\u0161enje programa.<br \/>\n Jedan od o\u010ditih elemenata stanja sustava koji uklju\u010duje proces je <b>memorija<\/b>. Upute se nalaze u memoriji. Podaci koje program \u010dita ili zapisuje tako\u0111er se nalaze u memoriji. Tako, memorija koju proces mo\u017ee adresirati (takozvani adresni prostor) je dio procesa.<br \/>\n Tako\u0111er, dio stanja sustava su registri. Mnoge upute su usmjerene na promjenu vrijednosti registara ili \u010ditanje njihovih vrijednosti, pa registari postaju va\u017ean dio rada procesa. <br \/>\nValja napomenuti da se stanje ma\u0161ine tako\u0111er sastoji od nekih specijalnih registara. Na primjer,<b> IP \u2014 pokaziva\u010d instrukcija<\/b> \u2014 pokazuje na instrukciju koju program izvr\u0161ava u trenutku. Tako\u0111er postoji <b>pokaziva\u010d stoga<\/b> i s njim povezan <b>pokaziva\u010d okvira<\/b>, koji se koriste za upravljanje: parametrima funkcija, lokalnim varijablama i adresama povratka.<br \/>\nNa kraju, programi \u010desto pristupaju ROM-u (trajnom memorijskom ure\u0111aju). Takve informacije o \"I\/O\" (ulaz-izlaz) trebaju uklju\u010divati popis datoteka koje su trenutno otvorene od strane procesa.<\/p>\n<h3>API procesa<\/h3>\n<p>\n Kako bismo pobolj\u0161ali razumijevanje rada procesa, prou\u010dimo primjere sistemskih poziva koji trebaju biti uklju\u010deni u svaki operacijski sustav. Ovi API-ji su na bilo kojem OS-u dostupni u nekom obliku.<\/p>\n<p>\u25cf <b>Create<\/b> (kreiranje): OS mora sadr\u017eavati neku metodu koja omogu\u0107ava stvaranje novih procesa. Kada unesete naredbu u terminal ili pokrenete aplikaciju dvostrukim klikom na ikonu, \u0161alje se poziv OS-u za stvaranje novog procesa i pokretanje navedene aplikacije.<br \/>\n\u25cf <b>Brisanje<\/b>: Kako postoji su\u010delje za stvaranje procesa, OS tako\u0111er mora omogu\u0107iti prisilno brisanje procesa. Ve\u0107ina programa \u0107e se prirodno pokrenuti i zavr\u0161iti sama po sebi tijekom izvr\u0161avanja. U suprotnom, korisnik bi trebao imati mogu\u0107nost da ih prekine, stoga \u0107e su\u010delje za zaustavljanje procesa biti korisno.<br \/>\n\u25cf <b>\u010cekanje <\/b>(\u010dekanje): Ponekad je korisno sa\u010dekati zavr\u0161etak procesa, stoga se osiguravaju neka su\u010delja koja pru\u017eaju mogu\u0107nost \u010dekanja.<br \/>\n\u25cf <b>Razno upravljanje<\/b> (razli\u010dito upravljanje): Osim ubijanja i \u010dekanja procesa, postoje i druge raznovrsne metode kontrole. Na primjer, ve\u0107ina operativnih sustava nudi mogu\u0107nost zamrzavanja procesa (zaustavljanje njegove izvr\u0161nje na odre\u0111eno vrijeme) i kasnijeg ponovnog pokretanja (nastavak izvr\u0161enja)<br \/>\n\u25cf <b>Status <\/b>(stanje): Postoje razni su\u010delja za dobivanje odre\u0111enih informacija o statusu procesa, kao \u0161to su trajanje njegove uspje\u0161nosti ili u kojem je stanju trenutno.<\/p>\n<p><img decoding=\"async\" alt=\"Operacijski sustavi: Tri jednostavna dijela. Dio 2: Apstrakcija: Proces (prijevod)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Izrada procesa: detalji<\/h3>\n<p>Jedna od zanimljivih stvari je kako se programi zapravo transformiraju u procese. Osobito, kako operativni sustav pokre\u0107e i starta program. Kako se konkretno stvara proces.<br \/>\nPrvo, operativni sustav mora u\u010ditati kod programa i stati\u010dke podatke u memoriju (u adresni prostor procesa). Programi se obi\u010dno nalaze na disku ili \u010dvrstom stanju u nekom izvr\u0161nom formatu. Tako da proces u\u010ditavanja programa i stati\u010dkih podataka u memoriju zahtijeva od operativnog sustava sposobnost da pro\u010dita te bajtove s diska i smjesti ih negdje u memoriji.<\/p>\n<p>U ranim operativnim sustavima proces u\u010ditavanja izvodio se nestrpljivo (eagerly), \u0161to zna\u010di da je kod u\u010ditan u memoriju u cijelosti prije nego \u0161to je program pokrenut. Moderni operativni sustavi to rade lijeno (lazily), u\u010ditavaju\u0107i komade koda ili podataka samo kada su potrebni programu tijekom njegovog izvr\u0161avanja.<\/p>\n<p>Nakon \u0161to su kod i stati\u010dki podaci u\u010ditani u memoriju, operativni sustav treba izvesti jo\u0161 nekoliko stvari prije nego \u0161to zapo\u010dne proces. Odre\u0111en broj memorije mora se dodijeliti za stog. <b>Programi koriste stog za lokalne varijable, parametre funkcija i adrese povratka.<\/b>. Operativni sustav dodjeljuje tu memoriju i dodaje je procesu. Stog se tako\u0111er mo\u017ee dodijeliti s odre\u0111enim argumentima, konkretno popunjava parametre funkcije main(), primjerice nizom argc i argv.<\/p>\n<p>Operativni sustav tako\u0111er mo\u017ee dodijeliti odre\u0111enu koli\u010dinu memorije za hrpu (heap) programa. <b>Hrpa se koristi od strane programa za eksplicitno tra\u017eene dinami\u010dki dodijeljene podatke.<\/b>. Programi tra\u017ee ovaj prostor pozivaju\u0107i funkciju <b>malloc()<\/b> i eksplicitno ga osloba\u0111aju pozivaju\u0107i funkciju <b>free()<\/b>. Heap je potreban za strukture podataka kao \u0161to su: povezane liste, hash tabele, stabla i druge. U po\u010detku se za heap rezervira malo memorije, ali kako program radi, heap mo\u017ee zatra\u017eiti vi\u0161e memorije putem poziva malloc() bibliote\u010dkog API-a. Operacijski sustav je uklju\u010den u proces dodjeljivanja ve\u0107e koli\u010dine memorije kako bi pomogao u zadovoljavanju tih poziva.<\/p>\n<p>Operacijski sustav tako\u0111er obavlja inicijalizacijske zadatke, posebno one koji se odnose na ulaz-izlaz. Na primjer, u UNIX sustavima svaki proces po defaultu ima 3 otvorena deskriptora datoteka za standardni ulaz, izlaz i gre\u0161ke. Ovi deskriptori omogu\u0107uju programima da \u010ditaju unos s terminala, kao i da ispisuju informacije na ekran. <\/p>\n<p>Dakle, u\u010ditavanjem koda i stati\u010dkih podataka u memoriju, stvaranjem i inicijaliziranjem stoga, te izvr\u0161avanjem drugih zadataka vezanih za ulaz-izlaz, OS priprema teren za izvr\u0161avanje procesa. Na kraju, ostaje posljednji zadatak: pokrenuti program kroz njegovu ulaznu to\u010dku, koja se naziva funkcija main(). Prelaze\u0107i na izvr\u0161avanje funkcije main(), OS predaje kontrolu CPU-u novostvorenom procesu, \u010dime program po\u010dinje s izvr\u0161avanjem. <\/p>\n<h3>Stanje procesa<\/h3>\n<p>\n Sada kada imamo neko razumijevanje o tome \u0161to je proces i kako se stvara, navedimo stanja procesa u kojima mo\u017ee biti. U najjednostavnijem obliku, proces mo\u017ee biti u jednom od ovih stanja:<br \/>\n\u25cf <b>Ispunjeno<\/b>. U ispunjenom stanju, proces se izvr\u0161ava na procesoru. To zna\u010di da se izvr\u0161avaju instrukcije.<br \/>\n\u25cf <b>Spremno<\/b>. U stanju spremnosti, proces je spreman za pokretanje, ali iz nekog razloga OS ga ne izvr\u0161ava u tom trenutku.<br \/>\n\u25cf <b>Zalo\u017eeno<\/b>. U zablokiranom stanju, proces izvr\u0161ava neke operacije koje ga spre\u010davaju da bude spreman za izvr\u0161avanje dok se ne dogodi neki doga\u0111aj. Jedan od uobi\u010dajenih primjera je kada proces inicijalizira IO operaciju, postaje blokiran i tako drugi proces mo\u017ee koristiti procesor.<\/p>\n<p><img decoding=\"async\" alt=\"Operacijski sustavi: Tri jednostavna dijela. Dio 2: Apstrakcija: Proces (prijevod)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZamislite te stanje kao graf. Kao \u0161to mo\u017eemo vidjeti na slici, stanje procesa mo\u017ee se mijenjati izme\u0111u RUNNING i READY prema odluci OS-a. Kada se stanje procesa mijenja s READY na RUNNING to zna\u010di da je proces zakazano izvr\u0161en. U suprotnom slu\u010daju \u2014 uklonjen iz rasporeda. U trenutku kada proces postane BLOCKED, na primjer, prilikom inicijalizacije IO operacije, OS \u0107e ga zadr\u017eati u tom stanju do nastanka nekog doga\u0111aja, kao \u0161to je zavr\u0161etak IO. U tom trenutku dolazi do prijelaza u stanje READY, a mogu\u0107e i trenuta\u010dno u stanje RUNNING, ako to odlu\u010di OS. <br \/>\nPogledajmo primjer kako dva procesa prolaze kroz ta stanja. Za po\u010detak zamislimo da su oba procesa pokrenuta i da svaki koristi samo CPU. U tom slu\u010daju, njihova stanja \u0107e izgledati ovako.<\/p>\n<p><img decoding=\"async\" alt=\"Operacijski sustavi: Tri jednostavna dijela. Dio 2: Apstrakcija: Proces (prijevod)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU sljede\u0107em primjeru prvi proces nakon nekog vremena rada zahtijeva IO i prelazi u stanje BLOCKED, omogu\u0107avaju\u0107i drugom procesu da se pokrene (SLO 1.4). OS vidi da proces 0 ne koristi CPU i pokre\u0107e proces 1. Tijekom izvr\u0161avanja procesa 1 \u2014 IO se zavr\u0161ava i status procesa 0 se mijenja u READY. Na kraju, proces 1 zavr\u0161ava, a nakon njegovog zavr\u0161etka, proces 0 se pokre\u0107e, izvr\u0161ava i zavr\u0161ava svoj rad.<\/p>\n<p><img decoding=\"async\" alt=\"Operacijski sustavi: Tri jednostavna dijela. Dio 2: Apstrakcija: Proces (prijevod)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Struktura podataka<\/h3>\n<p>\n OS je sama program, i kao i svaki drugi program ima odre\u0111ene klju\u010dne strukture podataka koje prate razne relevantne dijelove informacija. Za pra\u0107enje stanja svakog procesa, OS \u0107e odr\u017eavati neki <b>popis procesa<\/b> za sve procese u stanju READY i neku dodatnu informaciju za pra\u0107enje procesa koji se trenutno izvr\u0161avaju. Tako\u0111er, OS mora pratiti i blokirane procese. Nakon zavr\u0161etka IO, OS je obvezan probuditi potreban proces i prevesti ga u stanje spremnosti za pokretanje.<\/p>\n<p>Tako, na primjer, OS mora sa\u010duvati stanje registara procesora. U trenutku zaustavljanja procesa, stanje registara se pohranjuje u adresnom prostoru procesa, a u trenutku nastavka njegovog rada \u2014 vra\u0107aju se vrijednosti registara i tako se nastavlja izvr\u0161enje tog procesa.<\/p>\n<p>Osim stanja ready, blocked i running, postoje jo\u0161 neka druga stanja. Ponekad, u trenutku stvaranja, proces mo\u017ee imati stanje INIT. Na kraju, proces mo\u017ee biti stavljen u stanje FINAL kada je ve\u0107 zavr\u0161en, ali informacije o njemu jo\u0161 nisu o\u010di\u0161\u0107ene. U UNIX sustavima to stanje se naziva <b>zombie proces<\/b>. Ovo stanje je korisno u slu\u010dajevima kada roditeljski proces \u017eeli saznati kod povratka potomka, na primjer, obi\u010dno 0 signalizira uspje\u0161an zavr\u0161etak, a 1 o gre\u0161ci, me\u0111utim, programeri mogu praviti dodatne kodove izlaza, signaliziraju\u0107i o razli\u010ditim problemima. Kada zavr\u0161i, roditeljski proces izvr\u0161ava posljednji sistemski poziv, kao \u0161to je wait(), kako bi \u010dekao zavr\u0161etak rada procesa potomka i signalizirao OS-u da mo\u017ee o\u010distiti sve podatke povezane sa zavr\u0161enim procesom.<\/p>\n<p><img decoding=\"async\" alt=\"Operacijski sustavi: Tri jednostavna dijela. Dio 2: Apstrakcija: Proces (prijevod)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Klju\u010dne to\u010dke predavanja:<\/h3>\n<p>\n\u25cf <b>Proces <\/b> \u2014 glavna apstrakcija aktivnog programa u operativnom sustavu. U bilo kojem trenutku, proces se mo\u017ee opisati prema svom stanju: sadr\u017eaju memorije u njegovom adresnom prostoru, sadr\u017eaju registara procesora, uklju\u010duju\u0107i pokaziva\u010d instrukcija i pokaziva\u010d stoga, kao i informacijama o IO-u, na primjer otvorenim datotekama koje se \u010ditaju ili zapisuju.<br \/>\n\u25cf <b>API procesa<\/b> sastoji se od poziva koje programi mogu raditi u vezi s procesima. Obi\u010dno su to pozivi za stvaranje, brisanje ili drugi.<br \/>\n\u25cf Proces se nalazi u jednom od mnogih stanja, uklju\u010duju\u0107i running, ready, blocked. Razli\u010diti doga\u0111aji, kao \u0161to su planiranje, izuze\u0107e iz planiranja ili \u010dekanje, mogu prevesti stanje procesa iz jednog u drugo.<br \/>\n\u25cf <b>Popis procesa<\/b> sadr\u017ei informacije o svim procesima u sustavu. Svaki unos u njemu naziva se process control block, koja je zapravo struktura koja sadr\u017ei sve potrebne informacije o konkretnom procesu.\u2003<br \/>\n<br \/>Izvor: <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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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. Dio 2: Apstrakcija: Proces (prijevod) | ProHoster","description":"Uvod u operativne sustave Pozdrav, Habr! \u017delim vam predstaviti seriju \u010dlanaka-prijevoda jedne zanimljive literature \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/30992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}