{"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 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>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>\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<p>Vaatame k\u00f5ige fundamentaalsemat abstraktsiooni, mida ops\u00fcsteem kasutajatele pakub: protsess. Protsessi m\u00e4\u00e4ratlemine on \u00fcsna lihtne \u2014 see on <b>t\u00f6\u00f6tav programm<\/b>. Programm on iseenesest elutu objekt, mis asub kettal \u2014 see on juhiste kogum ja v\u00f5imalikud staatilise andmed, mis ootavad k\u00e4ivitamise hetke. Just ops\u00fcsteem v\u00f5tab need baitid ja k\u00e4ivitab need, muutes programmi millekski kasulikuks.<br \/>\n Kasutajad soovivad sageli k\u00e4ivitada rohkem kui \u00fchte programmi korraga, n\u00e4iteks v\u00f5ite oma s\u00fclearvutis k\u00e4ivitada brauseri, m\u00e4ngu, meediam\u00e4ngija, tekstiredaktori ja palju muud. Tegelikult v\u00f5ib t\u00fc\u00fcpiline s\u00fcsteem k\u00e4ivitada k\u00fcmneid ja sadu protsesse samaaegselt. See fakt muudab s\u00fcsteemi kasutamise lihtsamaks, te ei pea kunagi muretsema, kas CPU on vaba, vaid lihtsalt k\u00e4ivitate programmid.<\/p>\n<p><i>Siit t\u00f5useb probleem: kuidas luua illusioon mitmest CPU-st? Kuidas ops\u00fcsteem loob illusiooni praktiliselt l\u00f5putust arvust CPU-dest, isegi kui teil on vaid \u00fcks f\u00fc\u00fcsiline CPU?<\/i><\/p>\n<p>Operatsioonis\u00fcsteem loob selle illusiooni CPU virtualiseerimise kaudu. K\u00e4ivitades \u00fche protsessi, seej\u00e4rel seda peatades, k\u00e4ivitades teise protsessi ja nii edasi, suudab operatsioonis\u00fcsteem hoida illusiooni, et eksisteerib palju virtuaalseid CPU-sid, kuigi tegelikult on see \u00fcks v\u00f5i mitu f\u00fc\u00fcsilist protsessorit. Seda tehnikat nimetatakse <b>CPU ressursside ajaks jaotamiseks<\/b>. See tehnika v\u00f5imaldab kasutajatel k\u00e4ivitada nii palju samaaegseid protsesse, kui nad soovivad. Selle lahenduse hind on j\u00f5udlus \u2013 kuna kui CPU-d jagavad mitu protsessi, t\u00f6\u00f6tleb iga protsess aeglasemalt.<br \/>\n CPU virtualiseerimise elluviimiseks, eriti selle h\u00e4sti tegemiseks, vajab operatsioonis\u00fcsteem nii madala taseme kui ka k\u00f5rge taseme toetust. Madala taseme toetus on tuntud kui <b>mehhanismid<\/b> \u2014 need madalamal tasemed ja protokollid, mis implementivad vajaliku funktsionaalsuse. N\u00e4iteks selline funktsionaalsus on konteksti vahetamine, mis v\u00f5imaldab ops\u00fcsteemil peatada \u00fche programmi ja k\u00e4ivitada protsessoril teise programmi. Selline ajajaotus on rakendatud k\u00f5igis kaasaegsetes ops\u00fcsteemides.<br \/>\n Nende mehhanismide kohal asub ops\u00fcsteemis sisseehitatud mingi loogika, mis on esitatud \"poliitikatena\". <b>Poliitika<\/b> \u2014 see on teatud algoritm, mis m\u00e4\u00e4rab, kuidas ops\u00fcsteem otsuseid langetab. Sellised poliitikad otsustavad n\u00e4iteks, millist programmi tuleks k\u00e4ivitada (k\u00e4skude loendist) esmaj\u00e4rjekorras. N\u00e4iteks lahendab selle \u00fclesande poliitika, mida nimetatakse <b>planeerijaks (scheduling policy)<\/b> ja otsuse tegemisel juhindub sellistest andmetest nagu: k\u00e4ivitamise ajalugu (milline programm on olnud pikim aega k\u00e4ivitunud), millist koormust teostatakse antud protsessi poolt (milliseid programme on k\u00e4ivitatud), j\u00f5udluse m\u00f5\u00f5dikud (kas s\u00fcsteem on optimeeritud interaktiivseks suhtlemiseks v\u00f5i l\u00e4bilaskev\u00f5imeks) ja nii edasi.<\/p>\n<h3>Abstraktsioon: protsess<\/h3>\n<p>\n T\u00f6\u00f6tava programmi abstraktsioon, mille teostab operatsioonis\u00fcsteem, on see, mida me nimetame <b>protsess.<\/b>. Nagu eelnevalt \u00f6eldud, on protsess lihtsalt t\u00f6\u00f6tav programm, igas ajavahemikus. Programm, millega saame kokkuv\u00f5tlikku teavet erinevatest s\u00fcsteemiressurssidest, ja millele see programm p\u00f6\u00f6rdub v\u00f5i mis selles protsessis osalevad.<br \/>\n Et m\u00f5ista protsessi komponente, tuleb m\u00f5ista s\u00fcsteemi olekuid: mida programm saab lugeda v\u00f5i muuta oma t\u00f6\u00f6 k\u00e4igus. Igal hetkel tuleb m\u00f5ista, millised s\u00fcsteemi elemendid on programmiks t\u00e4itmiseks olulised.<br \/>\n \u00dcks ilmselge s\u00fcsteemi olekuelement, mida protsess sisaldab, on <b>m\u00e4lumaht<\/b>. Juhised asuvad m\u00e4lus. Andmed, mida programm loeb v\u00f5i kirjutab, asuvad samuti m\u00e4lus. Seega on m\u00e4lu, mida protsess saab aadressida (nn aadressiruum), osa protsessist.<br \/>\n Samuti on s\u00fcsteemi oleku osaks registrid. Palju juhiseid on suunatud registrite v\u00e4\u00e4rtuse muutmisele v\u00f5i nende v\u00e4\u00e4rtuse lugemisele, mist\u00f5ttu registrid on samuti t\u00f6\u00f6tlusprotsessi oluline osa. <br \/>\nTuleb m\u00e4rkida, et masina olek koosneb ka m\u00f5ningatest eriregistritest. N\u00e4iteks,<b> IP \u2014 instrutsioonide n\u00e4itaja<\/b> \u2014 viitab instruksioonile, mida programm hetkel t\u00e4idab. Lisaks on olemas <b>stack pointer<\/b> ja sellega seotud <b>frame pointer<\/b>, mida kasutatakse funktsioonide parameetrite, lokaalsete muutujate ja tagastusadresside haldamiseks.<br \/>\nL\u00f5puks p\u00f6\u00f6rdub programm sageli p\u00fcsiva m\u00e4lu poole (ROM). Selline teave \u201dI\/O\u201d (sisendi-v\u00e4ljundi) kohta peab sisaldama nimekirja failidest, mis on protsessi poolt hetkel avatud.<\/p>\n<h3>Protsessi API<\/h3>\n<p>\n Protsessi t\u00f6\u00f6 m\u00f5istmise parandamiseks vaatleme s\u00fcsteemik\u00f5nesid, mis peaksid olema kaasatud igasse operatsioonis\u00fcsteemi liidesesse. Need API-d on mingil kujul kergesti k\u00e4ttesaadavad igas operatsioonis\u00fcsteemis.<\/p>\n<p>\u25cf <b>Loo<\/b> (loomine): Operatsioonis\u00fcsteemis peab olema mingi meetod, mis v\u00f5imaldab luua uusi protsesse. Kui sisestate k\u00e4su terminalis v\u00f5i k\u00e4ivitate rakenduse ikoonile kahekordse kl\u00f5psuga, saadetakse p\u00e4ring operatsioonis\u00fcsteemile uue protsessi loomiseks ja m\u00e4\u00e4ratud programmi k\u00e4ivitamiseks.<br \/>\n\u25cf <b>Kustuta<\/b>: Kuna on olemas liides protsessi loomiseks, peab operatsioonis\u00fcsteem samuti pakkuma v\u00f5imalust protsessi sund_kustutamiseks. Enamik programme k\u00e4ivitatakse ja l\u00f5petatakse loomulikult nende toimimise k\u00e4igus. Vastupidisel juhul soovib kasutaja neid tappa, seega protsessi peatamise liides ei ole \u00fcleliigne.<br \/>\n\u25cf <b>Oota <\/b>(ootamine): M\u00f5nikord on kasulik oodata protsessi l\u00f5petamist, seet\u00f5ttu pakutakse teatud liideseid, mis v\u00f5imaldavad oote_kestuse.<br \/>\n\u25cf <b>Muu juhtimine<\/b> (erinev juhtimine): Peale protsessi tapmise ja ootamise on olemas ka muid mitmekesiseid juhtimisviise. N\u00e4iteks pakuvad enamik operatsioonis\u00fcsteeme v\u00f5imalust protsessi k\u00fclmutamiseks (k\u00e4sitlemine m\u00f5neks ajaks) ja sellele j\u00e4rgnevaks j\u00e4tkamiseks (t\u00e4itmise j\u00e4tkamine).<br \/>\n\u25cf <b>Olek <\/b>(olek): Erinevad liidesed v\u00f5imaldavad saada teavet protsessi oleku kohta, nagu t\u00f6\u00f6 kestus v\u00f5i kuidas see praegu seisab.<\/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 muunduvad. Eriti kuidas ops\u00fcsteem t\u00f5stab ja k\u00e4ivitab programmi. Kuidas protsess t\u00e4pselt luuakse.<br \/>\nEsiteks peab ops\u00fcsteem laadima programmi koodi ja staatilised andmed m\u00e4llu (protsessi aadressiruumi). Programmid asuvad tavaliselt kettal v\u00f5i tahkisdrivel mingis teatud t\u00e4idetavas vormingus. Seet\u00f5ttu n\u00f5uab programmi ja staatiliste andmete m\u00e4llu laadimise protsess ops\u00fcsteemilt nende baitide lugemist kettalt ja paigutamist kuhugi m\u00e4llu.<\/p>\n<p>Varasemates ops\u00fcsteemides toimus laadimisprotsess k\u00e4rsitult (eagerly), mis t\u00e4hendab, et kood laaditi m\u00e4llu t\u00e4ielikult enne programmi k\u00e4ivitamist. Kaasaegsed ops\u00fcsteemid teevad seda lohakalt (lazily), laadides koodil\u00f5ike v\u00f5i andmeid alles siis, kui need on programmi t\u00f6\u00f6 k\u00e4igus vajalikud.<\/p>\n<p>P\u00e4rast koodi ja staatiliste andmete laadimist ops\u00fcsteemi m\u00e4llu tuleb veel paar asja teha enne protsessi k\u00e4ivitamist. Teatud kogus m\u00e4lu peab olema eraldatud virnale. <b>Programmid kasutavad virna lokaalsete muutuja, funktsiooni parameetrite ja naasaddresside jaoks.<\/b>. Ops\u00fcsteem eraldab selle m\u00e4lu ja annab selle protsessile. Virn v\u00f5ib samuti olla eraldatud teatud argumentidega, t\u00e4psemalt t\u00e4idab see funktsiooni main() parameetreid, n\u00e4iteks massiiviga argc ja argv.<\/p>\n<p>Ops\u00fcsteem v\u00f5ib samuti eraldada teatud koguse m\u00e4lu programmi hunnik (heap) jaoks. <b>Hunnikku kasutatakse programmide poolt selgelt taotletud d\u00fcnaamiliselt eraldatud andmete jaoks.<\/b>. Programmid k\u00fcsivad seda ruumi, kutsudes v\u00e4lja funktsiooni <b>malloc()<\/b> ja puhastavad selle selges\u00f5naliselt, kutsudes v\u00e4lja funktsiooni. <b>free()<\/b>. Heap on vajalik selliste andmestruktuuride jaoks nagu: seotud loendid, hash tabelid, puud ja muud. Alguses eraldatakse v\u00e4ike kogus m\u00e4lu, kuid aja jooksul v\u00f5ib heap programmik\u00e4igus k\u00fcsida rohkem m\u00e4lu, kasutades raamatukogu API kutset malloc(). Operatsioonis\u00fcsteem on kaasatud suurema m\u00e4lu eraldamise protsessi, et aidata rahuldada neid kutseid.<\/p>\n<p>Operatsioonis\u00fcsteem t\u00e4idab samuti initsialiseerimise \u00fclesandeid, sealhulgas neid, mis on seotud sisendi ja v\u00e4ljundiga. N\u00e4iteks UNIX-s\u00fcsteemides on iga protsess vaikimisi avatud kolme failikirje descriptoriga, standardse sisendi, v\u00e4ljundi ja vigade jaoks. Need kirjeldajad v\u00f5imaldavad programmide lugeda sisendit terminalist ning v\u00e4ljundit ekraanile. <\/p>\n<p>Seega laadib operatsioonis\u00fcsteem koodi ja staatilisi andmeid m\u00e4lu, loob ja initsialiseerib kuhja ning teostab teisi sisend-v\u00e4ljundiga seotud t\u00f6id, valmistades ette keskkonda protsessi t\u00e4itmiseks. L\u00f5puks j\u00e4\u00e4b viimane \u00fclesanne: k\u00e4ivitada programm selle sisendpunktist, mida nimetatakse funktsiooniks main(). Funktsioonile main() liikudes edastab operatsioonis\u00fcsteem kontrolli taasluu enda protsessile, millega programm hakkab t\u00f6\u00f6le. <\/p>\n<h3>Protsessi seisund<\/h3>\n<p>\n N\u00fc\u00fcd, kui meil on teatud arusaam, mis on protsess ja kuidas see luuakse, loetleme protsessi seisundid, milles see v\u00f5ib viibida. K\u00f5ige lihtsamal kujul v\u00f5ib protsess olla \u00fches j\u00e4rgmistest seisunditest:<br \/>\n\u25cf <b>Running<\/b>. K\u00e4ivitamis seisundis t\u00e4idab protsess protsessoris k\u00e4sku. See t\u00e4hendab, et juhised on ootel.<br \/>\n\u25cf <b>Valmis<\/b>. Valmiduse seisundis on protsess valmis k\u00e4ivituma, kuid mingil p\u00f5hjusel ei k\u00e4ivita operatsioonis\u00fcsteem seda antud ajahetkel.<br \/>\n\u25cf <b>Blokeeritud<\/b>. Blokeeritud olekus teeb protsess teatud toiminguid, mis ei luba tal olla t\u00e4itmiseks valmis, kuni ei toimu mingit s\u00fcndmust. \u00dcks tavap\u00e4rane n\u00e4ide on see, kui protsess inicialiseerib IO-operatsiooni, muutub ta blokeerituks ja 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 \/>\nV\u00f5ime kujutada neid olekuid graafina. Nagu pildilt n\u00e4eme, v\u00f5ib protsessi olek muutuda RUNNING ja READY vahel vastavalt OPS-i otsusele. Kui protsessi olek muutub READY-st RUNNING-uks, t\u00e4hendab see, et protsess on kavandatud. Vastupidises suunas \u2014 on kavandamisest maha v\u00f5etud. Hetkel, kui protsess muutub BLOCKED-iks, n\u00e4iteks IO-operatsiooni inicialiseerimisel, hoiab OPS teda selles olekus kuni mingi s\u00fcndmuse toimumiseni, n\u00e4iteks IO l\u00f5petamiseni. Sellel hetkel toimub \u00fcleminek olekusse READY ja v\u00f5imalik, et kohe ka RUNNING-uks, kui OPS seda otsustab. <br \/>\nVaatame n\u00e4idet, kuidas kaks protsessi l\u00e4bivad neid olekuid. Alguseks kujutame ette, et m\u00f5lemad protsessid on k\u00e4ivitatud ja iga\u00fcks kasutab ainult CPU-d. Sel juhul n\u00e4evad nende olekud 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\u00e4rgmises n\u00e4ites k\u00fcsib esimene protsess m\u00f5ne t\u00f6\u00f6aja p\u00e4rast IO-d ja l\u00e4heb BLOCKED olekusse, pakkudes teisele protsessile v\u00f5imaluse k\u00e4ivituda (KUV 1.4). OS n\u00e4eb, et protsess 0 ei kasuta CPU-d ja k\u00e4ivitab protsessi 1. Protsessi 1 k\u00e4itamise ajal l\u00f5ppeb IO ja protsessi 0 olek muutub READY-ks. L\u00f5puks l\u00f5petab protsess 1 oma t\u00f6\u00f6 ja p\u00e4rast seda k\u00e4ivitatakse protsess 0, t\u00e4idetakse ja l\u00f5petatakse.<\/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 on ise programm ja nagu iga teine programm, on tal m\u00f5ned v\u00f5tme andmestruktuurid, mis j\u00e4lgivad erinevaid asjakohaseid teabe osi. Iga protsessi oleku j\u00e4lgimiseks hoiab OS teatud <b>protsesside nimekiri<\/b> READY seisundis olevate protsesside jaoks ja t\u00e4iendav teave protsesside j\u00e4lgimiseks, mis praegu k\u00e4ivad. Samuti peab operatsioonis\u00fcsteem j\u00e4lgima blokeeritud protsesse. I\/O l\u00f5petamisel peab operatsioonis\u00fcsteem \u00e4ratama vajaliku protsessi ja viima selle k\u00e4ivitamiseks valmisoleku seisundisse.<\/p>\n<p>N\u00e4iteks peab operatsioonis\u00fcsteem salvestama protsessori registrite oleku. Protsessi peatamise hetkel salvestatakse registrite olek protsessi aadressiruumi ning protsessi t\u00f6\u00f6 j\u00e4tkamisel taastatakse registrite v\u00e4\u00e4rtused, et j\u00e4tkata selle protsessi t\u00e4itmist.<\/p>\n<p>Lisaks ready, blocked, running olekutele on olemas veel m\u00f5ned muud olekud. M\u00f5nikord v\u00f5ib protsess loomise hetkel olla INIT olekus. L\u00f5puks v\u00f5ib protsess olla paigutatud FINAL olekusse, kui see on juba l\u00f5petatud, kuid teave selle kohta pole veel kustutatud. UNIX-s\u00fcsteemides nimetatakse seda olekuks <b>zombie-protsess<\/b>. See the benefits of this state when a parent process needs to know the return code of a child process. Typically, 0 indicates successful completion, while 1 signifies an error; however, programmers can define additional exit codes that signal different issues. When a parent process terminates, it makes a final system call, such as wait(), to wait for the child process to finish and informs the OS that it can clean up any data associated with the completed process.<\/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>Loengupunktid:<\/h3>\n<p>\n\u25cf <b>Protsess <\/b> \u2014 operatsiooni s\u00fcsteemi t\u00f6\u00f6tava programmi peamine abstraktsioon. Igal hetkel v\u00f5ib protsessi kirjeldada selle oleku kaudu: m\u00e4lu sisu selle aadressiruumis, protsessori registrite sisu, sealhulgas k\u00e4skude pointer ja stack pointer, samuti IO teave, nagu avatud failid, mida loetakse v\u00f5i kirjutatakse.<br \/>\n\u25cf <b>Protsessi API<\/b> koosneb kutsetest, mida programmid saavad protsesside suhtes teha. Tavaliselt on need kutse loomine, eemaldamine v\u00f5i muud.<br \/>\n\u25cf Protsess on \u00fches mitmest olekust, sealhulgas running, ready ja blocked. Erinevad s\u00fcndmused, nagu planeerimine, v\u00e4ljaheitmine v\u00f5i ooteaeg, v\u00f5ivad muuta protsessi olekut \u00fchest teisene.<br \/>\n\u25cf <b>Protsesside nimekiri<\/b> annab teavet k\u00f5igi s\u00fcsteemis olevate protsesside kohta. Iga kirje selles nimekirjas nimetatakse protsessi juhtplokiks, mis on tegelikult struktuur, mis sisaldab kogu vajalikku teavet konkreetse protsessi kohta.<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.0.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. \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-2-abstraktsiya-protsess-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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. \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-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. Part 2: Abstraktsioon: Protsess (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-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. \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-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}]}}