{"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\/sl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Operating Systems: Three Easy Pieces. Part 2: Abstrakcija: Proces (prevod)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Uvod v operacijske sisteme<\/h1>\n<p>\nPozdravljeni, Habr! \u017delim vam predstaviti serijo prevodnih \u010dlankov, ki se mi zdijo zanimivi \u2014 OSTEP. V tem gradivu se poglobljeno obravnava delovanje unix-podobnih operacijskih sistemov, in sicer obravnava procesov, razli\u010dnih pojedin\u0161kov, pomnilnika in ostalih podobnih komponent, 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:<\/p>\n<ul>\n<li>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><\/li>\n<li>izvirnik: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>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><\/li>\n<\/ul>\n<p>\nDruge dele:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Del 1: Uvod<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nLahko 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<p>Poglejmo najosnovnej\u0161o abstrakcijo, ki jo operacijski sistem ponuja uporabnikom: proces. Opredelitev procesa je dokaj preprosta \u2014 to je <b>delujo\u010d program<\/b>. Program sam po sebi je brez\u017eiv stvar, ki le\u017ei na disku \u2014 to je niz navodil in morda nekaterih stati\u010dnih podatkov, ki \u010dakajo na trenutek za zagon. Prav operacijski sistem vzame te bajte in jih za\u017eene, ter preobrazi program v nekaj uporabnega.<br \/>\n Najpogosteje uporabniki \u017eelijo zagnati ve\u010d kot en program hkrati, na primer na va\u0161em prenosniku lahko za\u017eenete brskalnik, igro, predvajalnik medijev, urejevalnik besedil in podobno. Dejansko lahko tipi\u010den sistem hkrati za\u017eene desetine in stotine procesov. Ta dejstvo naredi sistem enostavnej\u0161i za uporabo, nikoli se vam ni treba skrbeti, ali je CPU prost, preprosto za\u017eenete programe.<\/p>\n<p><i>Od tu izhaja problem: kako zagotoviti iluzijo ve\u010d CPU-jev? Kako lahko operacijski sistem ustvari iluzijo prakti\u010dno neskon\u010dnega \u0161tevila CPU-jev, tudi \u010de imate samo en fizi\u010dni CPU?<\/i><\/p>\n<p>Operacijski sistem ustvarja to iluzijo s pomo\u010djo virtualizacije CPU. Z zagonenjem enega procesa, nato ustavitvijo le-tega, z zagonom drugega procesa in tako dalje, operacijski sistem lahko ohranja iluzijo, da obstaja ve\u010d virtualnih CPU-jev, \u010deprav dejansko gre za en ali ve\u010d fizi\u010dnih procesorjev. Ta tehnika se imenuje <b>\u010dasovna delitev virov CPU<\/b>. Ta tehnika omogo\u010da uporabnikom zagon toliko so\u010dasnih procesov, kolikor jih \u017eelijo. Cena tak\u0161ne re\u0161itve je zmogljivost \u2013 ker, \u010de CPU deli ve\u010d procesov, bo vsak proces obravnavan po\u010dasneje.<br \/>\n Za uresni\u010ditev virtualizacije CPU, \u0161e posebej za to, da to po\u010dne dobro, operacijski sistem potrebuje tako nizkotasovno kot visokotaskovno podporo. Nizkotasovna podpora se imenuje <b>mehanizmi<\/b> \u2014 to so nizkotasovne metode ali protokoli, ki izvajajo potreben del funkcionalnosti. En primer take funkcionalnosti je preklapljanje kontekstov, ki omogo\u010da operacijskemu sistemu, da ustavi en program in na procesorju za\u017eene drugega. Tak\u0161na \u010dasovna delitev je vzpostavljena v vseh sodobnih operacijskih sistemih.<br \/>\n Na vrhu teh mehanizmov se nahaja neka logika, vgrajena v operacijski sistem v obliki 'politike'. <b>Politika<\/b> je nek algoritem za sprejemanje odlo\u010ditev s strani operacijskega sistema. Tak\u0161ne politike, na primer, odlo\u010dajo, katero program naj se najprej za\u017eene (iz seznama ukazov). Tako bo to nalogo re\u0161evala politika, ki se imenuje <b>na\u010drtovalec (scheduling policy)<\/b> in ob izbiri re\u0161itve bo upo\u0161tevala podatke, kot so: zgodovina zagonov (kateri program je bil najdlje zagnan v zadnji minuti), kak\u0161no obremenitev ima ta proces (kateri tipi programov so bili zagnani), metrike zmogljivosti (ali je sistem optimiziran za interaktivno delovanje ali za kapaciteto) in tako naprej.<\/p>\n<h3>Abstrakcija: proces<\/h3>\n<p>\n Abstraktna delujo\u010da programa, ki ga izvaja operacijski sistem, je tisto, kar imenujemo <b>proces<\/b>. Kot je bilo \u017ee omenjeno, je proces preprosto delujo\u010d program v kateremkoli trenutku. Program, s katerim lahko pridobimo celovite informacije iz razli\u010dnih virov sistema, ter do katerih se ta program sklicuje ali ki jih ta program obravnava med izvajanjem.<br \/>\n Za razumevanje sestavin procesa je potrebno razumeti stanja sistema: kaj lahko program bere ali spreminja med svojim delovanjem. V vsakem trenutku je treba razumeti, kateri elementi sistema so pomembni za delovanje programa.<br \/>\n Eden od o\u010ditnih elementov stanja sistema, ki ga vklju\u010duje proces, je <b>pomnilnik<\/b>. Navodila so shranjena v pomnilniku. Podatki, ki jih program bere ali pi\u0161e, so prav tako shranjeni v pomnilniku. Tako je pomnilnik, ki ga proces lahko naslovi (t.i. naslovni prostor), del procesa.<br \/>\n Del stanja sistema so tudi registri. \u0160tevilna navodila so usmerjena v spreminjanje vrednosti registrov ali branje njihovih vrednosti, tako da registri tudi postanejo pomemben del delovanja procesa. <br \/>\nTreba je omeniti, da stanje naprave sestavljajo tudi nekateri posebni registri. Na primer,<b> IP \u2014 kazalec na navodilo (instruction pointer)<\/b> je kazalec na navodilo, ki ga program trenutno izvaja. Obstaja tudi <b>kazalec na kup (stack pointer)<\/b> in povezan z njim <b>kazalec okvira (frame pointer)<\/b>, ki se uporabljajo za upravljanje: parametrov funkcij, lokalnih spremenljivk in vrnitev naslovov.<br \/>\nNazadnje, programi pogosto dostopajo do trdne programske opreme (ROM). Te informacije o \u201cI\/O\u201d (vhodu-izhodu) morajo vklju\u010devati seznam datotek, ki jih proces trenutno odpre.<\/p>\n<h3>Process API<\/h3>\n<p>\n Da bi izbolj\u0161ali razumevanje delovanja procesov, si oglejmo primere sistemskih klicev, ki bi morali biti vklju\u010deni v vsako vmesnik operacijskega sistema. Ti API-ji so na voljo v neki obliki v vsakem OS.<\/p>\n<p>\u25cf <b>Stworzy\u0107<\/b> (ustvarjanje): OS mora vklju\u010devati kakr\u0161en koli na\u010din za ustvarjanje novih procesov. Ko v terminal vnesete ukaz ali za\u017eenete aplikacijo z dvojno klikom na ikono, se po\u0161lje zahteva OS-ju za ustvarjanje novega procesa in zagon navedene aplikacije.<br \/>\n\u25cf <b>Odstranjevanje<\/b>: Ker obstaja vmesnik za ustvarjanje procesa, mora OS tudi omogo\u010diti mo\u017enost prisilnega odstranjevanja procesa. Ve\u010dina programov se bo seveda zagnala in kon\u010dala sama po sebi v procesu delovanja. V nasprotnem primeru bi \u017eelel uporabnik imeti mo\u017enost, da jih ustavi, zato bi bil vmesnik za zaustavitev procesa dobrodo\u0161el.<br \/>\n\u25cf <b>\u010cakanje <\/b>(\u010dakanje): V\u010dasih je koristno po\u010dakati na dokon\u010danje procesa, zato so na voljo nekateri vmesniki, ki omogo\u010dajo \u010dakanje.<br \/>\n\u25cf <b>Misc Control<\/b> (razli\u010dno upravljanje): Poleg ubijanja in \u010dakanja na proces obstajajo \u0161e druge razli\u010dne metode nadzora. Na primer, ve\u010dina OS ponuja mo\u017enost zamrznitve procesa (ustavitev njegovega izvajanja za dolo\u010den \u010das) in kasnej\u0161o obnovitev (nadaljevanje izvajanja).<br \/>\n\u25cf <b>Status <\/b>(stanje): Obstajajo razli\u010dni vmesniki za pridobivanje nekaterih informacij o statusu procesa, kot so trajanje njegovega delovanja ali v katerem stanju se trenutno nahaja.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakcija: Proces (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Ustvarjanje procesa: podrobnosti<\/h3>\n<p>Ena izmed zanimivih stvari je, kako se programi to\u010dno pretvorijo v procese. \u0160e posebej, kako operacijski sistem dvigne in za\u017eene program. Kako se to\u010dno ustvari proces.<br \/>\nNajprej mora operacijski sistem nalo\u017eiti program zaradi kode in stati\u010dnih podatkov v pomnilnik (v naslovno obmo\u010dje procesa). Programi so obi\u010dajno shranjeni na disku ali trdem disku v nekem izvr\u0161ljivem formatu. Tako postopek nalaganja programa in stati\u010dnih podatkov v pomnilnik od operacijskega sistema zahteva, da lahko prebere te bite s diska in jih postavi nekam v pomnilnik.<\/p>\n<p>V zgodnjih operacijskih sistemih je postopek nalaganja potekal netrpno (eagerly), kar pomeni, da se je koda nalagala v pomnilnik v celoti pred zagonom programa. Sodobni operacijski sistemi to po\u010dnejo leno (lazily), kar pomeni, da nalagajo ko\u0161\u010dke kode ali podatkov le takrat, ko jih program potrebuje med izvajanjem.<\/p>\n<p>Ko sta koda in stati\u010dni podatki nalo\u017eeni v pomnilnik, mora operacijski sistem izvesti \u0161e nekaj korakov, preden spro\u017ei proces. Nekoliko pomnilnika mora biti dodeljenega za sklad. <b>Programi uporabljajo sklad za lokalne spremenljivke, parametre funkcij in naslove vrnitve.<\/b>. Operacijski sistem dodeli ta pomnilnik in ga preda procesu. Sklad se lahko tudi dodeli s nekaterimi argumenti, konkretno napolni parametre funkcije main(), kot sta polje argc in argv.<\/p>\n<p>Operacijski sistem lahko prav tako dodeli nek koli\u010dino pomnilnika za kup (heap) programa. <b>Kup se uporablja za podatke, ki jih programi dinami\u010dno izrecno zahtevajo.<\/b>. Programi zahtevajo to podro\u010dje z klicem funkcije. <b>malloc()<\/b> in ga izrecno o\u010distijo z klicem funkcije. <b>free()<\/b>. Kup je potreben za take podatkovne strukture kot so: seznami, hash tabele, drevesa in druge. Sprva se dodeli malo pomnilnika za kup, vendar s\u010dasoma, med delovanjem programa, lahko kup zahteva ve\u010d pomnilnika preko klica knji\u017eni\u010dnega API-ja malloc(). Operacijski sistem je vklju\u010den v postopek dodeljevanja ve\u010d pomnilnika, da bi pomagal zadovoljiti te klice.<\/p>\n<p>Operacijski sistem bo prav tako izvajal naloge inicializacije, posebej tiste, ki se nana\u0161ajo na vhod-izhod. Na primer, v sistemih UNIX ima vsak proces privzeto 3 odprte datote\u010dne descriptorje za standardni vhod, izhod in napake. Ti descriptorji omogo\u010dajo programom, da berejo vhod iz terminala in tudi izpisujejo informacije na zaslon. <\/p>\n<p>Tako da, ko nalo\u017ei kodo in stati\u010dne podatke v pomnilnik, ustvari in inicializira sklad ter opravi druge naloge, povezane z izvajanjem vhodno-izhodnih nalog, operacijski sistem pripravi prostor za izvajanje procesa. Na koncu ostane \u0161e zadnja naloga: zagnati program preko njegove vstopne to\u010dke, imenovane funkcija main(). Pri prehodu na izvajanje funkcije main() operacijski sistem prenese nadzor CPU-ju novo ustvarjenemu procesu, tako da se program za\u010dne izvajati. <\/p>\n<h3>Stanje procesa<\/h3>\n<p>\n Sedaj, ko imamo nekaj razumevanja o tem, kaj je proces in kako se ustvari, na\u0161tejmo stanja procesa, v katerih se lahko nahaja. V svoji najpreprostej\u0161i obliki se proces lahko nahaja v enem od teh stanj:<br \/>\n\u25cf <b>Running<\/b>. V stanju izvajanja se proces izvaja na procesorju. To pomeni, da se izvajajo ukazi.<br \/>\n\u25cf <b>Ready<\/b>. V stanju pripravljenosti je proces pripravljen na zagon, vendar iz nekega razloga operacijski sistem ne izvaja v danem trenutku.<br \/>\n\u25cf <b>Blokirano<\/b>. V blokiranem stanju proces izvaja nekatere operacije, ki mu ne dovolijo, da bi bil pripravljen na izvajanje, dokler se ne zgodi neko dogajanje. Eden pogostih primerov je, ko proces inicializira operacijo IO, postane blokiran in tako lahko drug proces uporablja procesor.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakcija: Proces (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTa stanja si lahko predstavljamo v obliki grafa. Kot lahko vidimo na sliki, se stanje procesa lahko spreminja med RUNNING in READY po odlo\u010ditvi operacijskega sistema. Ko se stanje procesa spremeni iz READY v RUNNING, to pomeni, da je bil proces na\u010drtovan. V obratni smeri \u2014 odstranjen iz na\u010drtovanja. V trenutku, ko proces postane BLOCKED, na primer, ko inicializira operacijo IO, ga bo operacijski sistem dr\u017eal v tem stanju, dokler se ne zgodi nek dogodek, na primer zaklju\u010dek IO. V tem trenutku prehod v stanje READY in morda takoj v stanje RUNNING, \u010de tako odlo\u010di operacijski sistem. <br \/>\nPoglejmo primer, kako dva procesa prehajata skozi ta stanja. Na za\u010detku si predstavljamo, da sta oba procesa zagnana in vsaka uporablja samo CPU. V tem primeru bosta njuni stanji izgledala takole.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakcija: Proces (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV naslednjem primeru prvi proces po dolo\u010denem \u010dasu delovanja zahteva IO in preide v stanje BLOCKED, kar omogo\u010da zagon drugemu procesu (RIS 1.4). OS vidi, da proces 0 ne uporablja CPU in za\u017eene proces 1. Med izvajanjem procesa 1 se IO zaklju\u010di in status procesa 0 se spremeni v READY. Kon\u010dno se proces 1 kon\u010da, proces 0 se za\u017eene, izvaja in kon\u010da svoje delo.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakcija: Proces (prevod)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Struktura podatkov<\/h3>\n<p>\n OS je sama program in, tako kot vsak drug program, ima nekatere klju\u010dne strukture podatkov, ki spremljajo razli\u010dne pomembne informacije. Za spremljanje stanja vsakega procesa bo OS imela <b>seznam procesov<\/b> za vse procese v stanju READY ter dodatne informacije za spremljanje procesov, ki se trenutno izvajajo. Poleg tega mora OS spremljati tudi blokirane procese. Po zaklju\u010dku IO mora OS zbuditi potreben proces in ga prenesti v stanje pripravljenosti za zagon.<\/p>\n<p>Na primer, OS mora shraniti stanje register procesorja. Ob ustavitvi procesa se stanje register shrani v naslovnem prostoru procesa, ob nadaljevanju njegovega dela pa se obnovijo vrednosti register in tako se nadaljuje izvajanje tega procesa.<\/p>\n<p>Poleg stanj ready, blocked, running obstajajo \u0161e nekatere druge dr\u017eave. V\u010dasih ob ustvarjanju proces lahko ima stanje INIT. Kon\u010dno je proces lahko postavljen v stanje FINAL, ko je \u017ee kon\u010dan, vendar informacije o njem \u0161e niso odstranjene. V sistemih UNIX se to stanje imenuje <b>proces-zombi<\/b>. To stanje je koristno za primere, ko \u017eeli star\u0161evski proces izvedeti kodo vrnitve otroka, na primer obi\u010dajno 0 signalizira uspe\u0161en zaklju\u010dek, 1 pa napako, vendar lahko programerji dodajo dodatne kode izhoda, ki signalizirajo razli\u010dne te\u017eave. Ob zaklju\u010dku star\u0161evski proces izvede zadnji sistemski klic, na primer wait(), da po\u010daka na zaklju\u010dek dela procesa otroka in obvesti OS, da lahko o\u010disti vse podatke, povezane z zaklju\u010dnim procesom.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstrakcija: Proces (prevod)\" 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>Postopek <\/b> \u2014 glavna abstrakcija delujo\u010dega programa v operacijskem sistemu. V vsakem trenutku \u010dasa se proces lahko opi\u0161e po svojem stanju: vsebina pomnilnika v njegovem naslovnem prostoru, vsebina registrskih procesorjev, vklju\u010dno z kazalnikom ukazov in kazalnikom sklada, prav tako informacije o IO, na primer odprti datoteki, ki se berejo ali zapisujejo.<br \/>\n\u25cf <b>Process API<\/b> sestavljeni so iz klicev, ki jih programi lahko izvajajo v zvezi s procesi. Obi\u010dajno so to klici za ustvarjanje, brisanje ali druge.<br \/>\n\u25cf Proces je v enem od \u0161tevilnih stanj, vklju\u010dno z izvajanjem, pripravljenostjo, blokiranjem. Razli\u010dni dogodki, kot so na\u010drtovanje, izklju\u010ditev iz na\u010drtovanja ali \u010dakanje, lahko spremenijo stanje procesa iz enega v drugo.<br \/>\n\u25cf <b>Seznam procesov<\/b> vsebuje informacije o vseh procesih v sistemu. Vsaka vnos v njem se imenuje procesna kontrolna enota, ki je v resnici struktura, ki vsebuje vse potrebne informacije o dolo\u010denem procesu.<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\/sl\/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=\"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 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\/sl\/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\udd47Operacijski sistemi: Tri enostavne kose. Del 2: Abstrakcija: Proces (prevod) | ProHoster","description":"Uvod v operacijske sisteme. Pozdravljen, Habr! Rad bi vam predstavil serijo prevodnih \u010dlankov zanimive literature - OSTEP.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-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 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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/30992","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=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}