{"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\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Kasutuss\u00fcsteemid: Kolm lihtsat osa. Osa 1: Sissejuhatus (t\u00f5lge)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Sissejuhatus operatsioonis\u00fcsteemidesse<\/h1>\n<p>Tere, Habr! Soovin teile tutvustada artiklite seeriat, mis on t\u00f5lgitud huvitavast, minu arvates, kirjandusest - OSTEP. Selles materjalis k\u00e4sitletakse s\u00fcvitsi Unix-laadsete operatsioonis\u00fcsteemide t\u00f6\u00f6d, nimelt protsesside, erinevate ajastajate, m\u00e4lu ja muude sarnaste komponentide tegemist, mis moodustavad kaasaegse OS-i. Originaali k\u00f5iki materjale saate vaadata siit <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:<br \/>\n \u2014 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><br \/>\n \u2014 originaal: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 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><\/p>\n<p>Ja 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<h3>Programmi t\u00f6\u00f6<\/h3>\n<p>\nMis toimub, kui m\u00f5ni programm t\u00f6\u00f6tab? K\u00e4ivitatud programm teeb \u00fchte lihtsat asja - see t\u00e4idab juhiseid. Iga sekundi jooksul t\u00f5mbab protsessor m\u00e4lust v\u00e4lja miljonid ja isegi v\u00f5imalik, et miljardid juhiseid, samal ajal dekodeerides neid (n\u00e4iteks tuvastab, kuhu t\u00fc\u00fcpi need juhised kuuluvad) ja t\u00e4idab. Need v\u00f5ivad olla kahe numbri liitmine, m\u00e4lu juurde p\u00e4\u00e4semine, tingimuse kontrollimine, funktsiooni juurde \u00fcleminek ja nii edasi. P\u00e4rast \u00fche juhise t\u00e4itmist liigub protsessor j\u00e4rgmise t\u00e4itmise juurde. Ja nii juhis juhise j\u00e4rel, nad t\u00e4idetakse, kuni programm l\u00f5petatakse.<br \/>\nAntud n\u00e4ide on loomulikult lihtsustatud - tegelikult v\u00f5imaldab kaasaegne riistvara protsessori t\u00f6\u00f6tamise kiirusel t\u00e4ita juhiseid v\u00e4ljaspool j\u00e4rjekorda, arvutada v\u00f5imalikke tulemusi, t\u00e4ita juhiseid samaaegselt ja palju muid sarnaseid nippe.<\/p>\n<h3>Von Neumani arvutusmudel<\/h3>\n<p>\nMeie kirjeldatud lihtsustatud vorm t\u00f6\u00f6tab sarnaselt Von Neumani arvutusmudelile. <i>Von Neumann on \u00fcks arvutuss\u00fcsteemide pioneeridest, samuti \u00fcks m\u00e4nguteooria autoritest.<\/i>. Programmi t\u00f6\u00f6tamise ajal toimub veel mitmeid muid s\u00fcndmusi, t\u00f6\u00f6tavad paljusid teisi protsesse ja k\u00f5rvalisi loogika, mille peamine eesm\u00e4rk on s\u00fcsteemi k\u00e4ivitamine, toimimine ja hooldamine lihtsustamine.<br \/>\nOn olemas tarkvarakomplekt, mis vastutab programmide k\u00e4ivitamise lihtsuse eest (v\u00f5i isegi v\u00f5imaldab mitme programmi samaaegset k\u00e4ivitamist); see v\u00f5imaldab programmidel jagada \u00fchte ja sama m\u00e4lu ning suhelda erinevate seadmetega. Sellist tarkvarakomplekti nimetatakse operatsioonis\u00fcsteemiks, mille \u00fclesanne on j\u00e4lgida, et s\u00fcsteem t\u00f6\u00f6taks korrektselt ja t\u00f5husalt, ning tagada selle haldamise lihtsus. <\/p>\n<h2>Operatsioonis\u00fcsteem<\/h2>\n<p>\n<b>Operatsioonis\u00fcsteem, l\u00fchendatult OS \u2014 omavahel seotud programmide kogum, mis on m\u00f5eldud arvuti ressursside haldamiseks ja kasutaja suhtlemiseks arvutiga.<\/b>. <br \/>\nOS saavutab oma efektiivsuse peamiselt l\u00e4bi k\u00f5ige olulisema tehnika \u2014 tehnika <b>virtualiseerimine<\/b>. OS suhtleb f\u00fc\u00fcsiliste ressurssidega (protsessor, m\u00e4lu, ketas jne) ja muudab need \u00fcldiseks, suuremate v\u00f5imalustega ja kasutamiseks lihtsamaks vormiks. Seet\u00f5ttu v\u00f5ib operatsioonis\u00fcsteemi \u00fcldiseks m\u00f5istmiseks v\u00e4ga j\u00e4medalt v\u00f5rrelda virtuaalmasinaga.<br \/>\nKasutajate k\u00e4su andmiseks operatsioonis\u00fcsteemile ja seega virtuaalmaski v\u00f5imaluste kasutamiseks (nt programmi k\u00e4ivitamine, m\u00e4lu eraldamine, faili juurde p\u00e4\u00e4semine jne) pakub operatsioonis\u00fcsteem mingit liidest, mida nimetatakse <b>API<\/b> (rakenduste programmeerimise liides) ja kellele saab teha v\u00e4ljakutseid (call). T\u00fc\u00fcpiline operatsioonis\u00fcsteem v\u00f5imaldab teha sadu s\u00fcsteemi v\u00e4ljakutseid.<br \/>\nJa l\u00f5puks, kuna virtualiseerimine v\u00f5imaldab paljude programmide t\u00f6\u00f6tamist (seega CPU jagamine) ja samal ajal juurdep\u00e4\u00e4su nende juhistele ja andmetele (jagades seega m\u00e4lu) ning juurdep\u00e4\u00e4su ketastele (seega seadmete jagamine), nimetatakse operatsioonis\u00fcsteemi veel ka ressursside halduriks. Iga protsessor, ketas ja m\u00e4lu on s\u00fcsteemi ressurss ning seega on operatsioonis\u00fcsteemi \u00fcheks rolliks nende ressursside t\u00f5hus ja \u00f5iglane haldamine v\u00f5i vastupidi, s\u00f5ltuvalt \u00fclesandest, mille jaoks operatsioonis\u00fcsteem on loodud.<\/p>\n<h3>CPU virtualiseerimine<\/h3>\n<p>\nVaatame j\u00e4rgmist programmi:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Kasutuss\u00fcsteemid: Kolm lihtsat osa. Osa 1: Sissejuhatus (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee ei tee mingeid erilisi toiminguid, p\u00f5him\u00f5tteliselt teeb see vaid funktsiooni kutsumise <b>spin<\/b>(), milleks on ajavahemiku ts\u00fckliline kontrollimine ja tagasip\u00f6\u00f6rdumine p\u00e4rast \u00fche sekundi m\u00f6\u00f6dumist. Seega kordab see l\u00f5putult kasutaja antud argumenti.<br \/>\nK\u00e4ivitame selle programmi ja viime sinna argumendiks s\u00fcmboli 'A'. Tulemuseks on mitte kuigi huvitav \u2014 s\u00fcsteem lihtsalt t\u00e4idab programmi, mis perioodiliselt kuvab ekraanile s\u00fcmbolit 'A'.<br \/>\nN\u00fc\u00fcd proovime varianti, kus t\u00f6\u00f6tavad mitu sama programmi eksemplari, aga n\u00e4itavad erinevaid t\u00e4hti, et asja selgemaks teha. Sellisel juhul saab tulemus veidi teistsugune. Ehkki meil on ainult \u00fcks protsessor, t\u00f6\u00f6tab programm samal ajal. Kuidas see v\u00f5imalik on? See juhtub nii, et operatsioonis\u00fcsteem, kasutades riistvara v\u00f5imalusi, loob illusiooni. Illusiooni, et s\u00fcsteemis on mitu virtuaalset protsessorit, muutes \u00fche f\u00fc\u00fcsilise protsessori teoreetiliselt l\u00f5pmatuks hulgaks ja lubades seega programmidel n\u00e4iliselt t\u00f6\u00f6tada samal ajal. Sellist illusiooni nimetatakse <i>CPU virtualiseerimiseks<\/i>.<br \/>\n Sarnane pilt tekitab palju k\u00fcsimusi, n\u00e4iteks kui mitu programmi soovivad samal ajal k\u00e4ivituda, siis milline neist k\u00e4ivitatakse? Selle k\u00fcsimuse eest vastutavad operatsioonis\u00fcsteemi \u201cpoliitikad\u201d. Poliitikaid kasutatakse paljudes kohtades operatsioonis\u00fcsteemis ja need vastavad sellistele k\u00fcsimustele, ning on ka p\u00f5himehanismid, mida operatsioonis\u00fcsteem rakendab. Seega on operatsioonis\u00fcsteemi roll ressursside haldurina.<\/p>\n<h3>M\u00e4lu virtualiseerimine<\/h3>\n<p>\n N\u00fc\u00fcd vaatame m\u00e4lu. <b>Kaasaegsete s\u00fcsteemide f\u00fc\u00fcsiline m\u00e4lumudel esindab end kui baitide massi.<\/b>M\u00e4lust lugemiseks peab n\u00e4itama <b>m\u00e4lurakenduse aadressi<\/b>, et sellele juurde p\u00e4\u00e4seda. Andmete salvestamiseks v\u00f5i uuendamiseks peab samuti n\u00e4itama andmed ja see aadress, kuhu need salvestada.<br \/>\n M\u00e4lu juurde p\u00e4\u00e4semine toimub pidevalt programmi t\u00f6\u00f6 k\u00e4igus. Programm salvestab m\u00e4llu kogu oma andmestruktuuri ja p\u00e4\u00e4seb sellele juurde, tehes erinevaid juhiseid. Juhised ise salvestatakse m\u00e4llu, seet\u00f5ttu juhtub m\u00e4luga kontakteerumine samuti iga kord, kui j\u00e4rgmise juhise jaoks tehtakse p\u00e4ring.<\/p>\n<h4>Kutsumine malloc()<\/h4>\n<p>Vaadake j\u00e4rgmist programmi, mis eraldab m\u00e4luala, kasutades v\u00e4ljakutset <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Kasutuss\u00fcsteemid: Kolm lihtsat osa. Osa 1: Sissejuhatus (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgramm teeb mitmeid asju. Esiteks eraldab see teatud hulga m\u00e4lu (rida 7), seej\u00e4rel prindib v\u00e4lja eraldatud m\u00e4luse vea aadressi (rida 9), salvestab nulli esimesse eraldatud m\u00e4lu sloti. Seej\u00e4rel siseneb programm ts\u00fcklisse, milles suurendab v\u00e4\u00e4rtust, mis on salvestatud aadressil muutuja \u201ep\u201d j\u00e4rgi. Samuti prindib see v\u00e4lja enda protsessi identifikaatori. <b>Protsessi identifikaator on iga k\u00e4ivitatud protsessi jaoks ainulaadne<\/b>. K\u00e4ivitades mitu koopia, seisame silmitsi huvitava tulemusega: esimesel juhul, kui mitte midagi teha ja lihtsalt k\u00e4ivitada mitu koopia, siis aadressid on erinevad. Kuid see ei sobi meie teooriaga! \u00d5ige, kuna kaasaegsetes jaotustes on vaikimisi lubatud m\u00e4lu randomiseerimise funktsioon. Kui selle v\u00e4lja l\u00fclitame, saame oodatud tulemuse - kahe samaaegselt t\u00f6\u00f6tava programmi m\u00e4luaadressid kattuvad. <\/p>\n<p><img decoding=\"async\" alt=\"Kasutuss\u00fcsteemid: Kolm lihtsat osa. Osa 1: Sissejuhatus (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Kokkuv\u00f5ttes t\u00f6\u00f6tab kaks s\u00f5ltumatut programmi oma erakordsete aadressiruumidega, mis seej\u00e4rel kaardistatakse operatsioonis\u00fcsteemi poolt f\u00fc\u00fcsilisse m\u00e4llu.<\/b>. Seet\u00f5ttu ei m\u00f5juta m\u00e4lu aadresside kasutamine \u00fches programmis kuidagi teisi ja igale programmile n\u00e4ib, et tal on oma f\u00fc\u00fcsilise m\u00e4lu osa, mis on t\u00e4ielikult tema k\u00e4sutuses. Kuid reaalsus on see, et f\u00fc\u00fcsiline m\u00e4lu on jagatud ressurss, mille haldamise eest vastutab operatsioonis\u00fcsteem.<\/p>\n<h3>J\u00e4rjepidevus<\/h3>\n<p>\nVeel \u00fcks oluline teema operatsioonis\u00fcsteemides on <b>j\u00e4rjepidevus<\/b>. See termin kasutatakse, kui r\u00e4\u00e4gitakse s\u00fcsteemi probleemidest, mis v\u00f5ivad tekkida, kui t\u00f6\u00f6tatakse samaaegselt paljude asjadega \u00fche programmi piires. J\u00e4rjepidevuse probleemid tekivad isegi operatsioonis\u00fcsteemis endas. Eelmistes n\u00e4idetes m\u00e4lude ja protsessori virtualiseerimisega m\u00f5istsime, et operatsioonis\u00fcsteem haldab samaaegselt palju asju - k\u00e4ivitab esmakordse protsessi, siis teise ja nii edasi. Selgus, et selline k\u00e4itumine v\u00f5ib p\u00f5hjustada teatud probleeme. N\u00e4iteks kannatavad kaasaegsed mitme l\u00e4bip\u00e4\u00e4suga programmid selliste raskuste all.<\/p>\n<p>Vaatame j\u00e4rgmist programmi:<\/p>\n<p> <img decoding=\"async\" alt=\"Kasutuss\u00fcsteemid: Kolm lihtsat osa. Osa 1: Sissejuhatus (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPeamine funktsioon loob kaks niiti, kasutades funktsiooni <b>Pthread_create()<\/b>. Selles n\u00e4ites v\u00f5ib niiti m\u00f5ista kui funktsiooni, mis k\u00e4ivitatakse \u00fches m\u00e4luruumis koos teiste funktsioonidega, kusjuures samal ajal on selgelt rohkem kui \u00fcks k\u00e4ivitatud funktsioon. Selles n\u00e4ites k\u00e4ivitab iga niit ja t\u00e4idab funktsiooni <b>worker(), mis omakorda lihtsalt suurendab mingit muutuja v\u00e4\u00e4rtust.<\/b>,.<\/p>\n<p>K\u00e4ivitame selle programmi argumendiga 1000. Nagu v\u00f5isite arvata, peaks tulemuseks olema 2000, kuna iga niit suurendas muutuja v\u00e4\u00e4rtust 1000 korda. Kuid asi pole nii lihtne. Proovime k\u00e4ivitada programmi kordusega, mis on oluliselt suurem.<\/p>\n<p><img decoding=\"async\" alt=\"Kasutuss\u00fcsteemid: Kolm lihtsat osa. Osa 1: Sissejuhatus (t\u00f5lge)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSisestades n\u00e4iteks arvu 100000, loodame n\u00e4ha v\u00e4ljundis arvu 200000. Kuid kui k\u00e4ivitame arvu 100000 mitu korda, ei saa me mitte ainult \u00f5iget vastust, vaid saame ka erinevaid valesid vastuseid. Lahendus peitub selles, et numbri suurendamiseks on vajalik kolm sammu \u2014 arvu m\u00e4lust lugemine, suurendamine ja seej\u00e4rel numbri tagasi kirjutamine. Kuna k\u00f5ik need juhised ei toimu aatomiliselt (korraga), v\u00f5ivad toimuda kummalised asjad. Seda probleemi nimetatakse programmeerimises <b>race condition \u2014 v\u00f5idujooks<\/b>. Kui tundmatud tegurid v\u00f5ivad tundmatul hetkel m\u00f5jutada m\u00f5ne teie operatsiooni t\u00e4itmist.<br \/>\n<br \/>Allikas: <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.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\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\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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 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\/et\/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. Osa 1: Sissejuhatus (t\u00f5lge) | ProHoster","description":"Sissejuhatus operatsioonis\u00fcsteemidesse Tere, Habr! Soovin tutvustada teile seeriat t\u00f5lgitud artikleid \u00fchest huvitavast, minu arvates, kirjandusest \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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 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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/30717","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=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}