{"id":32158,"date":"2019-10-31T21:45:27","date_gmt":"2019-10-31T18:45:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod\/"},"modified":"2019-10-31T21:45:27","modified_gmt":"2019-10-31T18:45:27","slug":"operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-perevod","title":{"rendered":"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Sissejuhatus operatsioonis\u00fcsteemidesse<\/h1>\n<p>\nTere, Habr! Soovin tutvustada teile artiklite seeriat, mis on t\u00f5lkinud minu arvates huvitavat kirjandust \u2014 OSTEP. Selles materjalis k\u00e4sitletakse s\u00fcgavalt unix-sarnaste operatsioonis\u00fcsteemide toimimist, sealhulgas protsesside, erinevate planeerijate, m\u00e4luhalduse ja muude sarnaste komponentide t\u00f6\u00f6tamise aspekte, mis moodustavad t\u00e4nap\u00e4eva operatsioonis\u00fcsteemi. Originaali k\u00f5iki materjale saate vaadata siit: <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">siin<\/a><\/noindex>. Palun arvestage, et t\u00f5lge on tehtud mitteprofessionaalselt (piisavalt vabalt), kuid loodan, et olen p\u00f5hisisu s\u00e4ilitanud.<\/p>\n<p>Laborit\u00f6\u00f6d selle aine kohta leiate siit:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">originaal<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">originaal<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">minu isiklik kohandamine<\/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<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446866\/\">Osa 2: Abstraktsioon: protsess<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/447182\/\">Osa 3: Sissejuhatus protsesside API-sse<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/449026\/\">Osa 4: Planeerija sissejuhatus<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nLisaks v\u00f5ite minna minu kanalile <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">Telegraam<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Planeerija sissejuhatus<\/h2>\n<p>\n<u>Probleemi olemus: Kuidas v\u00e4lja t\u00f6\u00f6tada planeerimise poliitika<br \/>\nKuidas peaksid olema kujundatud planeerimise poliitikate p\u00f5hiraamid? Millised peaksid olema peamised eeldused? Millised on olulised m\u00f5\u00f5dikud? Milliseid p\u00f5hitehnikaid on varasemates arvutis\u00fcsteemides kasutatud?<\/u><\/p>\n<h3>Koormuse eeldused<\/h3>\n<p>\n Enne v\u00f5imalike poliitikate arutamist teeme esmalt m\u00f5ned \u00fcldistavad t\u00e4helepanekud s\u00fcsteemis k\u00e4ivitatud protsesside kohta, mida koos nimetatakse <b>koormuseks.<\/b>M\u00e4\u00e4ratledes koormust kui poliitikate koostamise kriitilist osa, saate te kirjutada kvaliteetseid poliitikaid, mida rohkem te koormusest teate.<\/p>\n<p>Teeme j\u00e4rgmised eeldused s\u00fcsteemis k\u00e4itatud protsesside kohta, mida m\u00f5nikord nimetatakse ka <b>t\u00f6\u00f6deks.<\/b> (\u00fclesanded). Praktikas ei ole peaaegu \u00fckski neist eeldustest realistlik, kuid need on m\u00f5ttearendamiseks vajalikud.<\/p>\n<ol>\n<li> Iga \u00fclesanne toimub sama kaua,<\/li>\n<li> K\u00f5ik \u00fclesanded k\u00e4ivitatakse samaaegselt,<\/li>\n<li> K\u00e4ivitatud \u00fclesanne t\u00f6\u00f6tab kuni selle l\u00f5petamiseni,<\/li>\n<li> K\u00f5ik \u00fclesanded kasutavad ainult CPU-d,<\/li>\n<li> Iga \u00fclesande t\u00f6\u00f6aeg on teada.<\/li>\n<\/ol>\n<h3>Planeerija m\u00f5\u00f5dikud<\/h3>\n<p>\n M\u00f5ningate koormushinnangute k\u00f5rval on vajalik ka erinevate planeerimispoliitikate v\u00f5rdlemiseks mingisugune t\u00f6\u00f6riist: planeerijate metoodika. Metoodika on lihtsalt mingi m\u00f5\u00f5tmisviis millelegi. On olemas mitmeid metoodikaid, mida saab kasutada planeerijate v\u00f5rdlemiseks.<\/p>\n<p>N\u00e4itena kasutame metoodikat, mida nimetatakse <b>t\u00e4itmisajaks<\/b> (turnaround time). \u00dclesande t\u00e4itmise aeg m\u00e4\u00e4ratletakse kui erinevus \u00fclesande valmimise ja \u00fclesande s\u00fcsteemi saabumise aja vahel.<\/p>\n<p><u>Tturnaround=Tcompletion\u2212Tarrival<\/u><\/p>\n<p>Kuna oletame, et k\u00f5ik \u00fclesanded saabusid \u00fchel ja samal ajal, siis Ta=0 ning seega Tt=Tc. See v\u00e4\u00e4rtus muutub loomulikult, kui muudame \u00fclaltoodud oletusi.<\/p>\n<p>Teine metoodika on <b>fairness<\/b> (\u00f5iglus). Tootlikkus ja \u00f5iglus on planeerimises sageli vastandlikud omadused. N\u00e4iteks v\u00f5ib planeerija optimeerida tootlikkust, kuid teiste \u00fclesannete k\u00e4ivitamise ooteaja arvelt, mist\u00f5ttu kannatab \u00f5iglus.<\/p>\n<h3>FIRST IN FIRST OUT (FIFO)<\/h3>\n<p>\n K\u00f5ige lihtsam algoritm, mida saame kasutada, nimetatakse FIFO-ks v\u00f5i <b>kes tuleb (sisse), see l\u00e4heb (v\u00e4lja) esimesena<\/b>. Sellel algoritmil on mitmeid eeliseid: see on v\u00e4ga lihtne rakendada ja sobib k\u00f5igi meie eelduste alla, tehes t\u00f6\u00f6d \u00fcsna h\u00e4sti.<\/p>\n<p>Vaadakem lihtsat n\u00e4idet. Oletame, et 3 \u00fclesannet esitati samaaegselt. Kuid oletame, et \u00fclesanne A tuli veidi varem kui k\u00f5ik teised, seega on see teostamisnimekirjas esikohal, t\u00e4pselt nagu B on suhte V. Oletame, et iga\u00fche t\u00e4itmine kestab 10 sekundit. Mis siis on nende \u00fclesannete keskmine t\u00e4itmise aeg?<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/8c17c29e10ac8c2e15f5f9d865922e49.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nArvutades v\u00e4\u00e4rtused \u2014 10+20+30 ja jagades selle 3-ga, saame programmi keskmiseks t\u00e4itmise ajaks 20 sekundit.<br \/>\n N\u00fc\u00fcd proovime muuta oma eeldusi. Eelk\u00f5ige muutsime eeldust 1 ja seega ei eelda enam, et iga \u00fclesanne kestab v\u00f5rdse aja. Kuidas k\u00e4itub FIFO seekord?<\/p>\n<p>Kuid selgub, et erinevad \u00fclesannete t\u00e4itmise ajad m\u00f5jutavad FIFO algoritmi t\u00f6\u00f6viljakust \u00e4\u00e4rmiselt negatiivselt. Oletame, et \u00fclesanne A kestab 100 sekundit, samas kui B ja V j\u00e4\u00e4vad m\u00f5lemad 10 sekundi pikkuseks.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/a375f3d1571f24df30f446b9bc7a9a9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Kuna joonisel on n\u00e4ha, et keskmine aeg s\u00fcsteemis on (100+110+120)\/3=110. Seda efekti nimetatakse <b>konvoiefektiks<\/b>, kus m\u00f5ned l\u00fchiajalised ressursikasutajad seisavad pikaajalise kasutaja j\u00e4rel. See on nagu j\u00e4rjekord poe kassas, kus teie ees on klient t\u00e4is ostuk\u00e4ru. Parim lahendus probleemile on proovida vahetada kassat v\u00f5i lihtsalt rahuneda ja s\u00fcgavalt hingata.<\/p>\n<h3>L\u00fchim t\u00f6\u00f6 k\u00f5igepealt<\/h3>\n<p>\n Kas on v\u00f5imalik lahendada sarnane olukord raskete protsessidega? Muidugi. Teine planeerimise t\u00fc\u00fcp on<b>L\u00fchim t\u00f6\u00f6 k\u00f5igepealt<\/b> (SJF). Selle algoritm on samuti piisavalt primitiivne \u2014 nagu nimigi \u00fctleb, k\u00e4ivituvad esimesena k\u00f5ige l\u00fchemad \u00fclesanded \u00fcksteise j\u00e4rel.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/d0723e313adc9ce7367da611216bf3ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAntud n\u00e4ites on nende samade protsesside k\u00e4ivitamise tulemuseks keskmise t\u00f6\u00f6tlusaja paranemine ja see on v\u00f5rdne <b>50 asemel 110<\/b>, mis on praktiliselt 2 korda parem.<\/p>\n<p>Seega, antud juhul, et k\u00f5ik \u00fclesanded saabuvad \u00fchel ja samal ajal, tundub SJF algoritm k\u00f5ige optimaalsemana. Siiski ei tundu meie eeldused endiselt realistlikud. Seekord muudame eeldust 2 ning kujutame ette, et \u00fclesanded saavad saabuda igal ajal, mitte k\u00f5ik korraga. Millistele probleemidele see v\u00f5ib viia?<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/2f0145551779f2733281d12bffad3a45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKujutame ette, et \u00fclesanne A (100s) saabub esimesena ja hakkab t\u00e4ituma. Moment t=10 saabuvad \u00fclesanded B ja C, kummagi t\u00e4itmine kestab 10 sekundit. Seega on keskmine t\u00e4itmise aeg (100+(110-10)+(120-10))\/3 = 103. Mida v\u00f5iks ajakava teha, et olukorda paremaks muuta?<\/p>\n<h3>L\u00fchim t\u00e4itmisaeg esimesena (STCF)<\/h3>\n<p>\n Et olukorda parandada, loobume eeldusest 3, et programm k\u00e4ivitub ja t\u00f6\u00f6tab l\u00f5puni. Samuti on meil vaja riistvara tuge ja nagu v\u00f5isite arvata, kasutame me <b>taimerit<\/b> t\u00f6\u00f6s oleva \u00fclesande katkestamiseks ja <b>konteksti vahetamiseks.<\/b>. Nii saab ajakava teha midagi \u00fclesannete B ja V saabumise hetkest \u2013 l\u00f5petada \u00fclesande A t\u00e4itmine ja tegeleda \u00fclesannetega B ja V ning p\u00e4rast nende l\u00f5petamist j\u00e4tkata \u00fclesande A t\u00e4itmist. Sellist ajakava nimetatakse <b>STCF<\/b>v\u00f5i <b>Eelnev \u00dclesanne Esiteks<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/81644f82b7b1489f239ebbdc5d78000b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSelle ajakava t\u00f6\u00f6 tulemuseks on selline tulemus: ((120-0)+(20-10)+(30-10))\/3=50. Nii muutub selline ajakava meie \u00fclesannete jaoks veelgi optimaalsemaks.<\/p>\n<h3>M\u00f5\u00f5dik Vastusaeg (Response Time)<\/h3>\n<p>\n Seega, kui me teame \u00fclesannete t\u00f6\u00f6aega ja et need \u00fclesanded kasutavad ainult CPU-d, on STCF parim lahendus. Kunagi ammu t\u00f6\u00f6tasid need algoritmid v\u00e4ga h\u00e4sti. Kuid n\u00fc\u00fcd veedab kasutaja enamiku ajast terminalis ja ootab sellelt tootlikku interaktiivset suhtlemist. Nii s\u00fcndis uus m\u00f5\u00f5dik \u2013 <b>vastusaeg<\/b> (reaktsioon).<\/p>\n<p>Vastusaeg arvestatakse j\u00e4rgmiselt:<\/p>\n<p><u>Tresponse=Tfirstrun\u2212Tarrival<\/u><\/p>\n<p>Seega, eelmise n\u00e4ite puhul on vastusaeg: A=0, B=0, V=10 (abg=3,33).<\/p>\n<p>Ja selgub, et STCF algoritm pole sugugi nii hea olukorras, kus 3 \u00fclesannet saabuvad samal ajal \u2014 see peab ootama, kuni v\u00e4iksed \u00fclesanded on t\u00e4ielikult l\u00f5petatud. Seega on algoritm hea ringlusaega m\u00f5\u00f5tva metrika jaoks, kuid halb interaktiivsuse m\u00f5\u00f5tmiseks. Kujutage ette, et istute terminali taga ja proovite redigeerijas s\u00fcmboleid tr\u00fckkida, kuid peate ootama \u00fcle 10 sekundi, sest m\u00f5ni teine \u00fclesanne kasutab protsessorit. See pole just meeldiv.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/f1412665826f845fdc685ec3c1a5bdad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSeega seisame silmitsi teise probleemiga \u2014 kuidas saame ehitada ajatundliku planeerija?<\/p>\n<h3>Ringkonnaga<\/h3>\n<p>\n Selle probleemi lahendamiseks t\u00f6\u00f6tati v\u00e4lja algoritm <b>Ringkonnaga<\/b> (RR). Peamine idee on \u00fcsna lihtne: selle asemel, et k\u00e4ivitada \u00fclesandeid t\u00e4ies mahus, k\u00e4ivitame \u00fclesande teatud ajavahemikuks (nimetatakse ajakvandiks) ja seej\u00e4rel l\u00fclitume j\u00e4rjekorrast j\u00e4rgmisele \u00fclesandele. Algoritm kordab oma t\u00f6\u00f6d, kuni k\u00f5ik \u00fclesanded on l\u00f5pule viidud. Samal ajal peab programmi t\u00f6\u00f6tamise aeg olema jagatav ajaga, mil kell peatab protsessi. N\u00e4iteks, kui kell peatab protsessi iga x=10 ms j\u00e4rel, peab protsessi t\u00e4itmise akna suurus olema jagatav 10 ja olema 10, 20 v\u00f5i x*10.<\/p>\n<p>Vaatame n\u00e4idet: \u00dclesanded A, B ja C saabuvad s\u00fcsteemi samaaegselt ning iga\u00fcks neist soovib t\u00f6\u00f6tada 5 sekundit. Algoritm SJF t\u00e4idab iga \u00fclesande l\u00f5puni, enne kui l\u00fclitub teise. Vastupidiselt algoritmile RR, mille k\u00e4ivitamise aken on 1 s, l\u00e4bib see \u00fclesandeid j\u00e4rgmisel viisil (joonis 4.3):<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/a7790cb63c880b286db2a2e3782d59b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(SJF Again (Halb vastuse aeg)<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/f7e82d68a6118828ea4561a4911744e2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(Ringlojale (Hea vastuse aeg)<\/p>\n<p>Algoritmi RR keskmine vastuse aeg (0+1+2)\/3=1, samas kui SJF jaoks (0+5+10)\/3=5.<\/p>\n<p>On loogiliselt eeldada, et ajakenk on RR jaoks v\u00e4ga oluline parameeter; mida l\u00fchem see on, seda k\u00f5rgem on vastusaeg. Kuid seda ei tohi ka liiga v\u00e4ikseks teha, kuna konteksti vahetamise aeg m\u00f5jutab samuti \u00fcldist sooritust. Seega, akna t\u00e4itmise aeg valitakse OS arhitekti poolt ning see s\u00f5ltub \u00fclesannetest, mida seal plaanitakse t\u00e4ita. Konteksti vahetamine ei ole ainus teenindusoperatsioon, mis aega kulutab \u2014 k\u00e4ivitatud programm tegeleb paljude muude aspektidega, n\u00e4iteks erinevate vahem\u00e4ludega, ja iga vahetuse korral tuleb see keskkond talletada ja taastada, mis v\u00f5ib samuti aega v\u00f5tta.<\/p>\n<p>RR on suurep\u00e4rane planeerija, kui r\u00e4\u00e4kida ainult vastusaega m\u00f5\u00f5tvast metrikast. Kuid kuidas k\u00e4itub \u00fclesande k\u00e4ibe aeg selle algoritmi juures? Vaadakem \u00fclaltoodud n\u00e4idet, kus A, B, C t\u00f6\u00f6tavad 5 sekundit ja saabuvad samal ajal. \u00dclesanne A l\u00f5petab 13. sekundil, B 14. ja C 15. sekundil, mis annab keskmiseks k\u00e4ibe ajaks 14 sekundit. Seega on RR k\u00f5ige kehvem algoritm k\u00e4ibe m\u00f5\u00f5tmise jaoks.<\/p>\n<p>\u00dcldiselt \u00f6eldes on iga RR t\u00fc\u00fcpi algoritm aus, jaotades CPU t\u00f6\u00f6aja v\u00f5rdselt k\u00f5igi protsesside vahel. Seet\u00f5ttu j\u00e4\u00e4vad need m\u00f5\u00f5dikud pidevalt konfliktiks.<\/p>\n<p>Seega on meil mitu vastandlikku algoritmi ja samas on veel mitmeid eeldusi \u2014 et \u00fclesande t\u00f6\u00f6aeg on teada ja et \u00fclesanne kasutab ainult CPU-d.<\/p>\n<h3>Segamine I\/O-ga<\/h3>\n<p>\n Esiteks eemaldame eelduse 4, et protsess kasutab ainult CPU-d, mis pole t\u00f5si, kuna protsessid v\u00f5ivad p\u00f6\u00f6rduda ka teiste seadmete poole.<\/p>\n<p>Hetkel, kui m\u00f5ni protsess taotleb sisendi- ja v\u00e4ljundioperatsiooni, l\u00e4heb protsess blokeeritud olekusse, oodates I\/O l\u00f5petamist. Kui I\/O suunatakse k\u00f5vakettale, v\u00f5ib see operatsioon kesta isegi mitu ms v\u00f5i kauem, ja sel ajal on CPU ootel. Sel perioodil saab planeerija CPU-d kasutada m\u00f5ne muu protsessi jaoks. J\u00e4rgmine otsus, mille planeerija peab tegema, on see, millal protsess l\u00f5petab oma I\/O. Kui see juhtub, toimub katkestus ja operatsioonis\u00fcsteem viib I\/O k\u00e4ivitanud protsessi valmis olekusse.<\/p>\n<p>Vaatame n\u00e4idet mitmest \u00fclesandest. Iga\u00fchel neist on vaja 50 ms protsessoriaega. Kuid esimene p\u00f6\u00f6rdub iga 10 ms j\u00e4rel I\/O poole (mis toimub samuti 10 ms). Protsess B kasutab lihtsalt 50 ms protsessorit ilma I\/O-ta.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/a32f5346eda86042c18d6424c19ad6b9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00e4esolevas n\u00e4ites kasutame STCF planeerijat. Kuidas k\u00e4itub planeerija, kui k\u00e4ivitame selle protsessi nagu A? See k\u00e4itub j\u00e4rgmiselt \u2014 esmalt t\u00f6\u00f6tleb see t\u00e4ielikult protsessi A ja seej\u00e4rel protsessi B.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 4: Planeerija sissejuhatus\" src=\"\/wp-content\/uploads\/2019\/04\/9fb709a822b9fc35871b8a342ac38c7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTraditsiooniline l\u00e4henemine seda probleemi lahendada on t\u00f5lgendada iga 10 ms alam\u00fclesanne protsessist A kui eraldiseisvat \u00fclesannet. Seega, alustades algoritmiga STJF, on valik 50 ms \u00fclesande ja 10 ms \u00fclesande vahel ilmselge. Kui alam\u00fclesanne A l\u00f5petatakse, k\u00e4ivitatakse protsess B ja I\/O. P\u00e4rast I\/O l\u00f5petamist otsustatakse uuesti k\u00e4ivitada 10 ms protsess A asemel protsessi B. Seega on v\u00f5imalik realiseerida kattuvust, kui CPU-d kasutab teine protsess, samal ajal kui esimene ootab I\/O-d. Ja l\u00f5pptulemusena on s\u00fcsteem paremini kasutuses \u2014 hetkel, kui interaktiivsed protsessid ootavad I\/O-d, v\u00f5ivad protsessoril t\u00f6\u00f6tada ka teised protsessid.<\/p>\n<h3>Oraakel on kadunud<\/h3>\n<p>\n Proovime n\u00fc\u00fcd vabaneda eeldusest, et \u00fclesande t\u00f6\u00f6tamise aeg on teada. See on \u00fcldiselt halvim ja ebareaalne eeldus kogu nimekirjas. Tegelikult teab keskmine tavap\u00e4rane operatsioonis\u00fcsteem tavaliselt v\u00e4ga v\u00e4he \u00fclesannete t\u00e4itmise ajast, kuidas siis ehitada ajastust ilma teadmata, kui kaua \u00fclesanne kestab? Kas me v\u00f5iksime kasutada m\u00f5ningaid RR-p\u00f5him\u00f5tteid selle probleemiga tegelemiseks?<\/p>\n<h3>Kokkuv\u00f5te<\/h3>\n<p>\n Oleme uurinud \u00fclesannete ajastamise p\u00f5hiteooriaid ja vaadanud kahte planeerijate peret. Esimene k\u00e4ivitab k\u00f5ige l\u00fchema \u00fclesande esimesena, suurendades seel\u00e4bi p\u00f6\u00f6rdeaega, teine aga jaotab koormuse k\u00f5igi \u00fclesannete vahel v\u00f5rdselt, parandades reageerimisaega. M\u00f5lemad algoritmid on halvad seal, kus on head teise pereliigi algoritmid. Samuti oleme k\u00e4sitlenud, kuidas CPU ja I\/O paralleelne kasutamine v\u00f5ib t\u00f5sta tootlikkust, kuid ei ole lahendanud operatsioonis\u00fcsteemi selgeltn\u00e4gemise probleemi. J\u00e4rgmises tunnis vaatame planeerijat, mis vaatab l\u00e4hiajalukku ja proovib tulevikku ette ennustada. See kannab nime mitme taseme tagasiside j\u00e4rjekord.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449026\/\">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":23990,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - 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. \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.\" \/>\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-4-vvedenie-v-planirovshhik-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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 4: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a (\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. \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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-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:45:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:45:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Operating Systems: Three Easy Pieces. Part 4: Sissejuhatus planeerijasse (t\u00f5lge) | ProHoster","description":"Sissejuhatus operatsioonis\u00fcsteemidesse Tere, Habr! Tahan tutvustada teile artiklite seeriat, mis on t\u00f5lgitud minu arvates huvitavast kirjandusest \u2014 OSTEP. K\u00e4esolevas materjalis k\u00e4sitletakse s\u00fcvitsi Unix-taoliste operatsioonis\u00fcsteemide toimimist, sealhulgas protsesside haldamist, erinevaid planeerijaid, m\u00e4lu ja muid sarnaseid komponente, mis moodustavad kaasaegse operatsioonis\u00fcsteemi. Originaale k\u00f5igist materjalidest saate vaadata siit.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-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 4: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a (\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. \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.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-4-vvedenie-v-planirovshhik-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:45:27+00:00","article:modified_time":"2019-10-31T18:45:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32158","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 09:34:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:03:25","updated":"2026-01-21 09:34:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32158","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=32158"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32158\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/23990"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=32158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=32158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=32158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}