{"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\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Operating Systems: Three Easy Pieces. Part 2: Abstraktsioon: Protsess (t\u00f5lge)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Sissejuhatus operatsioonis\u00fcsteemidesse<\/h1>\n<p>\nTere, Habr! Soovin esitleda teile huvitavate artiklite t\u00f5lgitud seeriat \u2014 OSTEP. K\u00e4esolevas materjalis uuritakse s\u00fcgavalt unix-laadsete operatsioonis\u00fcsteemide toimimist, nimelt \u2014 protsesside, erinevate planeerijate, m\u00e4lu ja teiste sarnaste komponentide t\u00f6\u00f6tamist, mis koosnevad kaasaegsest operatsioonis\u00fcsteemist. K\u00f5iki materjale saate n\u00e4ha siin <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">siit<\/a><\/noindex>. Palun arvestage, et t\u00f5lge on tehtud mitteprofessionaalselt (piisavalt vaba), kuid loodan, et \u00fcldine m\u00f5te on s\u00e4ilinud.<\/p>\n<p>K\u00e4esoleva aine laborit\u00f6id saab leida siit:<\/p>\n<ul>\n<li>originaal: <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>originaal: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>minu isiklik kohandamine: <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>\nTeised osad:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Osa 1: Sissejuhatus<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nJa v\u00f5ite ka k\u00fclastada minu kanalit <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">Telegramis<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Vaatame k\u00f5ige fundamentaalsemat abstraktsiooni, mida operatsioonis\u00fcsteem kasutajatele pakub: protsess. Protsessi m\u00e4\u00e4ratlemine on \u00fcsna lihtne \u2014 see on <b>t\u00f6\u00f6tav programm<\/b>. Programm iseenesest on elutu asi, mis paikneb kettal \u2014 see on juhiste kogum ja v\u00f5ib-olla m\u00f5ned staatilised andmed, oodates k\u00e4ivitamise hetke. Just operatsioonis\u00fcsteem v\u00f5tab need baitid ja k\u00e4ivitab need, muutes programmi millegi kasulikuks.<br \/>\n Sagedamini soovivad kasutajad k\u00e4ivitada rohkem kui \u00fchte programmi korraga, n\u00e4iteks v\u00f5ite oma s\u00fclearvutis avada brauseri, m\u00e4ngu, meediapleieri, tekstiredaktori ja nii edasi. Tegelikult v\u00f5ib t\u00fc\u00fcpiline s\u00fcsteem k\u00e4ivitada korraga k\u00fcmneid ja sadu protsesse. See asjaolu muudab s\u00fcsteemi kasutamise lihtsamaks, te ei pea kunagi muretsema, kas CPU on vaba, lihtsalt k\u00e4ivitada programmid.<\/p>\n<p><i>Sealt tuleneb probleem: kuidas tagada mitme CPU illusioon? Kuidas operatsioonis\u00fcsteem loob illusiooni peaaegu piiramatust arvust CPU-dest, isegi kui teil on ainult \u00fcks f\u00fc\u00fcsiline CPU?<\/i><\/p>\n<p>Operatsioonis\u00fcsteem loob seda illusiooni CPU virtualiseerimise kaudu. K\u00e4ivitades \u00fche protsessi, seej\u00e4rel peatades selle, k\u00e4ivitades teise protsessi jne, suudab operatsioonis\u00fcsteem s\u00e4ilitada mulje, et eksisteerib palju virtuaalseid CPU-sid, kuigi tegelikult on see \u00fcks v\u00f5i mitu f\u00fc\u00fcsilist protsessorit. Seda tehnikat nimetatakse <b>CPU ressursside ajajaotuseks<\/b>See tehnika v\u00f5imaldab kasutajatel k\u00e4ivitada nii palju samaseid protsesse kui nad soovivad. Sellise lahenduse hind on j\u00f5udlus \u2013 kuna kui mitu protsessi jagavad CPU-d, siis iga protsess t\u00f6\u00f6deldakse aeglasemalt.<br \/>\n Virtuaalsuse elluviimiseks on CPU-le vajalik nii madala kui ka k\u00f5rge taseme tugi. Madala taseme toeks nimetatakse <b>mehhanismideks<\/b> \u2014 need on madala taseme meetodid v\u00f5i protokollid, mis rakendavad vajaliku funktsionaalsuse osa. \u00dcheks selliseks funktsionaalsuseks on konteksti vahetamine, mis annab operatsioonis\u00fcsteemile v\u00f5imaluse peatada \u00fche programmi ja k\u00e4ivitada protsessoril teise programmi. Selline ajajagamine on rakendatud k\u00f5igis kaasaegsetes operatsioonis\u00fcsteemides.<br \/>\n Nende mehhanismide tipus on m\u00f5ningane loogika, mis on kirjutatud operatsioonis\u00fcsteemi, vormis \u201epoliitika\u201d. <b>Poliitika<\/b> on teatud otsuste tegemise algoritm operatsioonis\u00fcsteemis. Sellised poliitikad otsustavad n\u00e4iteks, millist programmi tuleks (k\u00e4skude loendist) esmaj\u00e4rjekorras k\u00e4ivitada. N\u00e4iteks lahendab seda \u00fclesannet poliitika, mida nimetatakse <b>plaanijaks (scheduling policy)<\/b> ja otsuste tegemisel tugineb ta sellistele andmetele nagu: k\u00e4ivitamise ajalugu (milline programm on viimase minuti jooksul k\u00f5ige kauem k\u00e4ivitatud), millist koormust see protsess tekitab (milliseid t\u00fc\u00fcpe programme on k\u00e4ivitatud), j\u00f5udluse m\u00f5\u00f5dikud (kas s\u00fcsteem on optimeeritud interaktiivseks suhtlemiseks v\u00f5i l\u00e4bilaskev\u00f5imeks) jne.<\/p>\n<h3>Abstraktsioon: protsess<\/h3>\n<p>\n Abstraktsioon t\u00f6\u00f6tavast programmist, mida operatsioonis\u00fcsteem t\u00e4idab, on see, mida me nimetame <b>protsess<\/b>. Nagu varem mainitud, on protsess lihtsalt t\u00f6\u00f6tav programm, igal hetkel. Programm, mille abil saame saada kokkuv\u00f5tlikku teavet erinevatest s\u00fcsteemiressurssidest ja millele see programm viitab v\u00f5i millele see programmi t\u00e4itmise k\u00e4igus juurdub.<br \/>\n Selleks, et m\u00f5ista protsessi komponente, on oluline m\u00f5ista s\u00fcsteemi olekuid: mida programm oma t\u00f6\u00f6 ajal lugeda v\u00f5i muuta saab. Igal hetkel tuleb m\u00f5ista, millised s\u00fcsteemi elemendid on programmi t\u00e4itmiseks olulised.<br \/>\n \u00dcks silmapaistvamaid s\u00fcsteemi seisundi elemente, mida protsess sisaldab, on <b>m\u00e4lu<\/b>. Juhised asuvad m\u00e4lus. Andmed, mida programm loeb v\u00f5i kirjutab, asuvad samuti m\u00e4lus. Seet\u00f5ttu on m\u00e4lu, millele protsess saab juurdep\u00e4\u00e4su (nn adresseerimisruum), osa protsessist.<br \/>\n S\u00fcsteemi seisundi osana on ka registrid. Paljud juhised on suunatud registrite v\u00e4\u00e4rtuste muutmisele v\u00f5i nende v\u00e4\u00e4rtuste lugemisele, mist\u00f5ttu on registrid samuti olulised protsessi t\u00f6\u00f6 jaoks. <br \/>\nPeab m\u00e4rkima, et masina seisund koosneb ka m\u00f5nest spetsiaalsest registrist. N\u00e4iteks<b> IP \u2014 k\u00e4skluse n\u00e4itaja<\/b> \u2014 juhib juhiseid, mida programm hetkel t\u00e4idab. Veel on olemas <b>stack pointer<\/b> ja sellega seotud <b>frame pointer<\/b>, mida kasutatakse funktsioonide parameetrite, lokaalsete muutujate ja tagasip\u00f6\u00f6rdumisaadresside haldamiseks.<br \/>\nL\u00f5puks p\u00f6\u00f6rduvad programmid sageli p\u00fcsiv\u00e4lemisse (ROM). Selline \u201eI\/O\u201d (sisendi\/v\u00e4ljundi) teave peaks sisaldama loendit failidest, mis on protsessi k\u00e4igus avatud.<\/p>\n<h3>Process API<\/h3>\n<p>\n Protsessi t\u00f6\u00f6 m\u00f5istmise parandamiseks vaatleme s\u00fcsteemik\u00f5nede n\u00e4iteid, mis peaksid olema mis tahes operatsioonis\u00fcsteemi liideses. Need API-d on mingil kujul saadaval igas operatsioonis\u00fcsteemis.<\/p>\n<p>\u25cf <b>Loo<\/b> (loomine): Operatsioonis\u00fcsteemis peab olema m\u00f5ni meetod, mis v\u00f5imaldab luua uusi protsesse. Kui sisestate k\u00e4su terminalis v\u00f5i k\u00e4ivitate rakenduse ikoonile kahekordse klikiga, saadetakse operatsioonis\u00fcsteemile p\u00e4ring uue protsessi loomiseks ja m\u00e4\u00e4ratud programmi k\u00e4ivitamiseks.<br \/>\n\u25cf <b>Kustutamine<\/b>: Kui protsessi loomise liides on olemas, peab operatsioonis\u00fcsteem ka v\u00f5imaldama protsessi sunniviisilist kustutamist. Enamik programme k\u00e4ivitatakse ja l\u00f5petatakse loomulikult omaette nende t\u00f6\u00f6 k\u00e4igus. Vastupidisel juhul sooviks kasutaja neid katkestada, mist\u00f5ttu oleks protsessi peatamise liides teretulnud.<br \/>\n\u25cf <b>Oota <\/b>(oodamine): M\u00f5nikord on kasulik oodata protsessi l\u00f5petamist, seet\u00f5ttu pakutakse m\u00f5ningaid liideseid, mis v\u00f5imaldavad ootamist.<br \/>\n\u25cf <b>Muu juhtimine<\/b> (erinev juhtimine): Lisaks protsessi l\u00f5petamisele ja ootamisele on olemas ka muid erinevaid juhtimismeetodeid. N\u00e4iteks pakuvad enamik operatsioonis\u00fcsteeme v\u00f5imalust protsessi k\u00fclmutada (st l\u00f5petada selle t\u00e4itmine teatud ajaks) ja hiljem taastada (tegevuse j\u00e4tkamine)<br \/>\n\u25cf <b>Oleku <\/b>(olek): On olemas erinevad liideseed, et saada teavet protsessi oleku kohta, n\u00e4iteks selle t\u00f6\u00f6 kestus v\u00f5i millises olekus see praegu on.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktsioon: Protsess (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Protsessi loomine: \u00fcksikasjad<\/h3>\n<p>\u00dcks huvitav asi on see, kuidas programmid t\u00e4pselt protsessideks muudetakse. Eriti, kuidas operatsioonis\u00fcsteem t\u00f5stab ja k\u00e4ivitab programmi. Kuidas t\u00e4pselt protsess luuakse.<br \/>\nEsiteks peab operatsioonis\u00fcsteem laadima programmi koodi ja staatilised andmed m\u00e4llu (protsessi aadressiruumi). Programmid asuvad tavaliselt kettal v\u00f5i tahkisketasel mingis k\u00e4ivitatavas formaadis. Seega n\u00f5uab programmi ja staatiliste andmete laadimine m\u00e4llu, et operatsioonis\u00fcsteem saaks lugeda neid baite kettalt ja paigutada need kuhugi m\u00e4llu.<\/p>\n<p>Varasemates operatsioonis\u00fcsteemides tehti laadimist protsessi k\u00e4rsitult (eagerly), see t\u00e4hendab, et kood laaditi m\u00e4llu tervikuna enne, kui programm k\u00e4ivitati. Kaasaegsed operatsioonis\u00fcsteemid teevad seda laiskalt (lazily), laadides koodi v\u00f5i andmeid ainult siis, kui neid vajatakse programmi t\u00e4itmise ajal.<\/p>\n<p>P\u00e4rast seda, kui kood ja staatilised andmed on m\u00e4llu laetud, peab operatsioonis\u00fcsteem enne protsessi k\u00e4ivitamist veel m\u00f5ned asjad \u00e4ra tegema. Teatud hulk m\u00e4lu peab olema eraldatud virnaks. <b>Programmid kasutavad virna kohalikeks muutujateks, funktsioonide parameetriteks ja tagasituleku aadressideks.<\/b>. Operatsioonis\u00fcsteem eraldab selle m\u00e4lu ja annab selle protsessile. Virn v\u00f5ib samuti olla eraldatud teatud argumentidega, t\u00e4pselt t\u00e4idab see peafunktsiooni main() parameetreid, n\u00e4iteks massiiviga argc ja argv.<\/p>\n<p>Operatsioonis\u00fcsteem v\u00f5ib samuti eraldada teatud hulga m\u00e4lu programmi kuhja (heap) jaoks. <b>Kuhja kasutatakse programmide poolt selgelt k\u00fcsitud d\u00fcnaamiliselt eraldatud andmete jaoks.<\/b>. Programmid k\u00fcsivad seda ruumi, kutsudes v\u00e4lja funktsiooni. <b>malloc()<\/b> ja puhastavad selgelt, kutsudes v\u00e4lja funktsiooni. <b>free()<\/b>. Kuhja on vajalik selliste andmestructuuride jaoks nagu: seotud loendid, hajus-tabelid, puud ja teised. Alguses eraldatakse kuhja jaoks v\u00e4ike kogus m\u00e4lu, kuid aja jooksul v\u00f5ib programmi t\u00f6\u00f6 k\u00e4igus kuhja kaudu rohkem m\u00e4lu taotleda, kasutades raamatukogu API kutset malloc(). Operatsioonis\u00fcsteem on kaasatud protsessi, kus eraldatakse rohkem m\u00e4lu, et aidata neid kutseid rahuldada.<\/p>\n<p>Operatsioonis\u00fcsteem t\u00e4idab ka initsialiseerimise \u00fclesandeid, eriti neid, mis on seotud sisendi-v\u00e4ljundi funktsioonidega. N\u00e4iteks UNIX s\u00fcsteemides on igal protsessil vaikimisi 3 avatud failik\u00e4sitletajat, mis on seotud standardse sisendi, v\u00e4ljundi ja vigadega. Need k\u00e4sitletajad v\u00f5imaldavad programmidel lugeda sisendit terminalist ja v\u00e4ljastada teavet ekraanile. <\/p>\n<p>Seega, laadides koodi ja staatilisi andmeid m\u00e4llu, luues ja initsialiseerides kuhja ning tehes teisi sisendi-v\u00e4ljundi \u00fclesandeid, valmistab operatsioonis\u00fcsteem ette keskkonna protsessi k\u00e4ivitamiseks. L\u00f5puks j\u00e4\u00e4b viimane \u00fclesanne: k\u00e4ivitada programm selle sisenemispunktist, mida nimetatakse funktsiooniks main(). Funktsioonile main() \u00fcleminekul annab operatsioonis\u00fcsteem juhtimise CPU-le, mis oli just loodud protsess, mist\u00f5ttu programm hakkab t\u00f6\u00f6tama. <\/p>\n<h3>Protsessi seisund<\/h3>\n<p>\n N\u00fc\u00fcd, kui meil on mingisugune arusaam sellest, mis on protsess ja kuidas see luuakse, loetleme protsessi seisundid, milles see v\u00f5ib asuda. K\u00f5ige lihtsamal kujul v\u00f5ib protsess olla \u00fches j\u00e4rgmistest seisunditest:<br \/>\n\u25cf <b>K\u00e4imas<\/b>. K\u00e4ivitamise seisundis t\u00e4idetakse protsess protsessoril. See t\u00e4hendab, et toimub k\u00e4su t\u00e4itmine.<br \/>\n\u25cf <b>Valmis<\/b>. Valmiduse seisundis on protsess valmis k\u00e4ivituma, kuid mingil p\u00f5hjusel operatsioonis\u00fcsteem ei t\u00e4ida seda antud hetkel.<br \/>\n\u25cf <b>Blokeeritud<\/b>. Blokeeritud seisundis t\u00e4idab protsess mingeid toiminguid, mis ei lase tal olla valmis t\u00e4itmiseks, kuni mingisugune s\u00fcndmus toimub. \u00dcks levinud n\u00e4ide on see, kui protsess initsialiseerib IO-operatsiooni, muutub see blokeerituks ning seega v\u00f5ib m\u00f5ni teine protsess kasutada protsessorit.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktsioon: Protsess (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKujutame vaimu need seisundid graafina. Nagu pildilt n\u00e4ha, v\u00f5ib protsessi olek varieeruda RUNNING ja READY vahel operatsioonis\u00fcsteemi (OS) valikul. Kui protsessi olek muutub READY-lt RUNNING-iks, t\u00e4hendab see, et protsess on kavandatud. Vastupidises suunas \u2014 on kavandamisest eemaldatud. Hetkel, kui protsess muutub BLOCKED-iks, n\u00e4iteks IO operatsiooni algatamise korral, hoiab OS seda olekut kuni mingi s\u00fcndmuse toimumiseni, n\u00e4iteks IO l\u00f5petamiseni. Sel hetkel toimub \u00fcleminek olekusse READY ja v\u00f5imalik, et koheselt olekusse RUNNING, kui OS nii otsustab. <br \/>\nVaatame n\u00e4idet, kuidas kaks protsessi l\u00e4bivad neid olekuid. Esiteks kujutame ette, et m\u00f5lemad protsessid on k\u00e4ivitatud ja iga\u00fcks kasutab ainult CPU-d. Sel juhul n\u00e4evad nende seisundid v\u00e4lja j\u00e4rgmiselt.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktsioon: Protsess (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ\u00e4rgmisel n\u00e4itel k\u00fcsib esimene protsess p\u00e4rast teatud t\u00f6\u00f6 tegemist IO-d ja l\u00e4heb BLOCKED olekusse, andes teisele protsessile v\u00f5imaluse k\u00e4ivituda (Joonis 1.4). OS n\u00e4eb, et protsess 0 ei kasuta CPU-d ning k\u00e4ivitab protsessi 1. Protsessi 1 t\u00e4itmise ajal \u2014 IO l\u00f5ppeb ja protsessi 0 staatus muutub READY-ks. L\u00f5puks l\u00f5petab protsess 1 oma t\u00f6\u00f6 ja selle l\u00f5petamisel k\u00e4ivitatakse protsess 0, kes t\u00e4idab oma \u00fclesande ja l\u00f5petab t\u00f6\u00f6.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktsioon: Protsess (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Andmestruktuur<\/h3>\n<p>\n OS ise on programm ja nagu iga teine programm, omab ka teatud v\u00f5tme andmestruktuure, mis j\u00e4lgivad erinevat vastavat teavet. Iga protsessi oleku j\u00e4lgimiseks toetatakse OS-is teatud <b>protsesside nimekirja<\/b> k\u00f5igi READY olekus olevate protsesside kohta ja teatud lisainfot t\u00f6\u00f6protsesside j\u00e4lgimiseks, mis on hetkel k\u00e4imas. Samuti peab OS j\u00e4lgima ka blokeeritud protsesse. P\u00e4rast IO l\u00f5petamist peab OS \u00e4ratama vajaliku protsessi ja viima selle k\u00e4ivitamiseks valmisolekusse.<\/p>\n<p>Seega peab OS s\u00e4ilitama protsessori registrite oleku. Protsessi peatamise hetkel salvestatakse registrite olek protsessi aadressiruumi ja selle j\u00e4tkamine toimub registrite v\u00e4\u00e4rtuste taastamisega, v\u00f5imaldades selle protsessi j\u00e4tkamist.<\/p>\n<p>Lisaks olekutele ready, blocked, running on veel m\u00f5ned teised olekud. M\u00f5nikord loomise hetkel v\u00f5ib protsess olla olekus INIT. L\u00f5puks v\u00f5ib protsess olla viidud olekusse FINAL, kui see on juba l\u00f5petatud, kuid informatsioon selle kohta ei ole veel kustutatud. UNIX-s\u00fcsteemides nimetatakse seda seisundiks <b>zombi-protsess<\/b>. See olek on kasulik juhtudel, kui vanemprotsess soovib teada j\u00e4rglase tagastuskoodi, n\u00e4iteks tavaliselt 0 signaali \u00f5nnestumise kohta, ja 1 vea korral, kuid programmeerijad v\u00f5ivad kasutada t\u00e4iendavaid v\u00e4ljastuskoode, signaalides erinevaid probleeme. Protsessi l\u00f5petamisel teeb vanemprotsess viimase s\u00fcsteemik\u00f5ne, n\u00e4iteks wait(), et oodata j\u00e4rglase t\u00f6\u00f6 l\u00f5petamist ja teavitada operatsioonis\u00fcsteemi, et on v\u00f5imalik kustutada k\u00f5ik hiljuti l\u00f5petatud protsessiga seotud andmed.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktsioon: Protsess (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Loengu v\u00f5tmeletked:<\/h3>\n<p>\n\u25cf <b>Protsess <\/b> \u2014 peamine abstraktsioon t\u00f6\u00f6tavast programmist operatsioonis\u00fcsteemis. Igal hetkel saab protsessi kirjeldada selle oleku j\u00e4rgi: m\u00e4lu sisu selle aadressiruumis, protsessori registrite sisu, sealhulgas instruction pointer ja stack pointer, samuti IO teave, n\u00e4iteks avatud failid, millega tegeletakse lugemise v\u00f5i kirjutamisega.<br \/>\n\u25cf <b>Process API<\/b> koosneb kutsetest, mida programmid v\u00f5ivad protsesside suhtes teha. Tavaliselt on need kutsed loomise, kustutamise v\u00f5i teistega.<br \/>\n\u25cf Protsess on \u00fches paljusid olekuid, sealhulgas running, ready, blocked. Erinevad s\u00fcndmused, nagu ajakava muutmine, ajakava v\u00e4ljaarvamine v\u00f5i ootamine, v\u00f5ivad protsessi olekut \u00fchest teise muuta.<br \/>\n\u25cf <b>Protsesside loend<\/b> sisaldab teavet s\u00fcsteemis olevate k\u00f5igi protsesside kohta. Iga kirje selles on tuntud kui protsessi juhtimise plokk, mis reaalsuses on struktuur, mis sisaldab kogu vajalikku teavet konkreetse protsessi kohta.\u2003<br \/>\n<br \/>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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. Osa 2: Abstraktsioon: Protsess (t\u00f5lge) | ProHoster","description":"Sissejuhatus operatsioonis\u00fcsteemidesse Tere, Habr! Soovin tutvustada teile huvitavat artiklite seeriat, mis on t\u00f5lgitud \u00fcritustest, mis mulle meeldivad \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/30992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}