{"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\/no\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Operativsystemer: Tre enkle deler. Del 1: Introduksjon (oversettelse)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Innledning til operativsystemer<\/h1>\n<p>Hei, Habr! Jeg vil gjerne presentere en serie artikler som oversettelser av en litteratur som jeg synes er interessant - OSTEP. I dette materialet blir det grundig behandlet hvordan unix-lignende operativsystemer fungerer, nemlig hvordan prosesser, forskjellige planleggere, minne og andre lignende komponenter som utgj\u00f8r et moderne OS, jobber. Du kan se originalen av alt materialet her: <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">here<\/a><\/noindex>. Vennligst merk at oversettelsen er gjort uprofesjonelt (temmelig fritt), men jeg h\u00e5per jeg har bevart den generelle meningen.<\/p>\n<p>Laboratoriearbeid knyttet til emnet kan finnes her:<br \/>\n \u2014 original: <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 original: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 min personlige tilpasning: <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>Og du kan ogs\u00e5 sjekke kanalen min p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegram<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Programmets arbeid<\/h3>\n<p>\nHva skjer n\u00e5r et program kj\u00f8rer? Det kj\u00f8rte programmet utf\u00f8rer \u00e9n enkel oppgave - det kj\u00f8rer instruksjoner. Hver sekund hentes millioner, om ikke milliarder, av instruksjoner av prosessoren fra RAM, som deretter dekoder dem (for eksempel gjenkjenner hvilken type disse instruksjonene tilh\u00f8rer) og utf\u00f8rer dem. Dette kan v\u00e6re \u00e5 legge sammen to tall, f\u00e5 tilgang til minne, sjekke en betingelse, g\u00e5 til en funksjon, og s\u00e5 videre. Etter at en instruksjon er ferdig, g\u00e5r prosessoren videre til neste. Og slik, instruksjon etter instruksjon, blir de kj\u00f8rt til programmet er over.<br \/>\nDette eksempelet er selvf\u00f8lgelig forenklet - faktisk tillater moderne maskinvare at instruksjoner kj\u00f8res uten rekkef\u00f8lge, beregner mulige resultater, utf\u00f8rer instruksjoner samtidig, og slikt.<\/p>\n<h3>Von Neumann-modellen for beregning<\/h3>\n<p>\nDen forenklede formen for arbeid vi har beskrevet ligner p\u00e5 Von Neumann-modellen for beregning. <i>Von Neumann er en av pionerene innen datamaskinsystemer, og ogs\u00e5 en av forfatterne til spillteorien.<\/i>. Under programkj\u00f8ringen skjer det ytterligere mange hendelser, mange andre prosesser og tredjeparts logikk er i drift, hvis hovedm\u00e5l er \u00e5 forenkle oppstart, drift og vedlikehold av systemet.<br \/>\nDet finnes en programvarepakke som ansvarer for hvor enkelt det er \u00e5 starte programmer (eller til og med la flere programmer kj\u00f8re samtidig), og som lar programmene dele samme minne og interagere med ulike enheter. Denne programvarepakken kalles i bunn og grunn operativsystemet, og oppgavene det har inkluderer \u00e5 overv\u00e5ke at systemet fungerer korrekt og effektivt, samt \u00e5 sikre enkel styring av systemet. <\/p>\n<h2>Operativsystem<\/h2>\n<p>\n<b>Operativsystem, forkortet OS, er et sett med sammenkoblede programmer som er ment for \u00e5 h\u00e5ndtere datamaskinens ressurser og organisere brukerens interaksjon med datamaskinen.<\/b>. <br \/>\nOS oppn\u00e5r sin effektivitet f\u00f8rst og fremst gjennom den viktigste teknikken \u2014 teknikken <b>for virtualisering.<\/b>OS interagerer med fysiske ressurser (prosessor, minne, disk og lignende) og transformerer dem til en mer generell, mer funksjonsrik og enklere form \u00e5 bruke. Derfor kan man, for overordnet forst\u00e5else, ganske grovt sammenligne operativsystemet med en virtuell maskin.<br \/>\nFor at brukerne skal kunne gi kommandoer til operativsystemet og dermed benytte seg av mulighetene til den virtuelle maskinen (som: kj\u00f8re program, tildele minne, f\u00e5 tilgang til filer osv.), gir operativsystemet et grensesnitt, kalt <b>API<\/b> (application programming interface), som man kan gj\u00f8re kallelser (calls) til. Et typisk operativsystem gir mulighet for \u00e5 gj\u00f8re hundrevis av systemkall.<br \/>\nOg til slutt, ettersom virtualisering tillater mange programmer \u00e5 kj\u00f8re (dermed dele CPU), og samtidig f\u00e5 tilgang til deres instruksjoner og data (dermed dele minne), samt f\u00e5 tilgang til diskene (dermed dele inndata-utdata-enheter), kalles operativsystemet ogs\u00e5 ressursforvalter. Hver prosessor, disk og minne er en ressurs i systemet, og p\u00e5 den m\u00e5ten blir en av operativsystemets roller \u00e5 h\u00e5ndtere disse ressursene, gj\u00f8re det effektivt, rettferdig, eller motsatt, avhengig av oppgaven operativsystemet er designet for.<\/p>\n<h3>Virtualisering av CPU<\/h3>\n<p>\nLa oss se p\u00e5 f\u00f8lgende program:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Operativsystemer: Tre enkle deler. Del 1: Introduksjon (oversettelse)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet utf\u00f8rer ingen spesielle handlinger, i hovedsak det den gj\u00f8r er \u00e5 kalle funksjonen <b>spin<\/b>(), hvis oppgave er \u00e5 sjekke tiden i en syklus og returnere etter at ett sekund har g\u00e5tt. Dermed gjentar den uendelig strengen som brukeren har sendt som argument.<br \/>\nLa oss kj\u00f8re dette programmet og sende det argumentet symbolet \u201cA\u201d. Resultatet blir ikke spesielt interessant \u2014 systemet utf\u00f8rer bare programmet som periodisk viser symbolet \u201cA\u201d p\u00e5 skjermen.<br \/>\nN\u00e5 skal vi pr\u00f8ve en variant der mange instanser av det samme programmet kj\u00f8rer samtidig, men viser forskjellige bokstaver, for \u00e5 gj\u00f8re det klarere. I dette tilfellet vil resultatet bli noe annerledes. Til tross for at vi har \u00e9n prosessor, kj\u00f8rer programmet samtidig. Hvordan er det mulig? Det viser seg at operativsystemet, med hjelp fra maskinvarekapasitetene, skaper en illusjon. Illusjonen av at det finnes flere virtuelle prosessorer i systemet, og forvandler \u00e9n fysisk prosessor til teoretisk uendelig antall, og dermed lar programmene tilsynelatende kj\u00f8re samtidig. Denne illusjonen kalles <i>CPU-virtualisering<\/i>.<br \/>\n Et slikt bilde gir mange sp\u00f8rsm\u00e5l, for eksempel, hvis flere programmer \u00f8nsker \u00e5 starte samtidig, hvilket vil da bli startet? Dette sp\u00f8rsm\u00e5let besvares av \u201cpolitikker\u201d i operativsystemet. Politikker brukes mange steder i OS og svarer p\u00e5 slike sp\u00f8rsm\u00e5l, og er grunnleggende mekanismer som OS implementerer. Herav rollen til OS som ressursforvalter.<\/p>\n<h3>Minnevirtualisering<\/h3>\n<p>\n La oss n\u00e5 se p\u00e5 minnet. <b>Den fysiske modellen av minnet i moderne systemer representeres som et array av bytes<\/b>. For \u00e5 lese fra minnet m\u00e5 man spesifisere <b>adressen til cellen<\/b>, for \u00e5 f\u00e5 tilgang til den. For \u00e5 skrive eller oppdatere data m\u00e5 man ogs\u00e5 spesifisere dataene og adressen til cellen der de skal skrives.<br \/>\n Tilgang til minnet skjer kontinuerlig i l\u00f8pet av programmet. Programmet lagrer hele sin datakonstruksjon i minnet, og f\u00e5r tilgang til den ved \u00e5 utf\u00f8re ulike instruksjoner. Instruksjonene lagres ogs\u00e5 i minnet, s\u00e5 n\u00e5 til neste instruksjon skjer derfor ogs\u00e5 med hver foresp\u00f8rsel.<\/p>\n<h4>Kall til malloc()<\/h4>\n<p>La oss se p\u00e5 f\u00f8lgende program som allokerer minne ved hjelp av et kall <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystemer: Tre enkle deler. Del 1: Introduksjon (oversettelse)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrammet gj\u00f8r flere ting. For det f\u00f8rste allokerer det en viss mengde minne (linje 7), deretter skriver det ut adressen til den tildelte cellen (linje 9), og skriver null i den f\u00f8rste plassen av det tildelte minnet. Videre g\u00e5r programmet inn i en l\u00f8kke der det inkrementerer verdien som er skrevet inn i minnet p\u00e5 adressen i variabelen \u201cp\u201d. Det skriver ogs\u00e5 ut prosess-ID-en til seg selv. <b>Prosess-ID-en er unik for hver kj\u00f8rende prosess<\/b>. N\u00e5r vi derimot starter flere eksemplarer, vil vi st\u00f8te p\u00e5 et interessant resultat: I det f\u00f8rste tilfellet, hvis vi ikke gj\u00f8r noe og bare starter flere kopier, vil adressene v\u00e6re forskjellige. Men dette stemmer jo ikke med teorien v\u00e5r! Riktig, fordi i moderne distribusjoner er minnerandomisering aktivert som standard. Hvis vi deaktiverer den, vil vi f\u00e5 det forventede resultatet \u2014 minneadressene til to programmer som kj\u00f8rer samtidig vil v\u00e6re like. <\/p>\n<p><img decoding=\"async\" alt=\"Operativsystemer: Tre enkle deler. Del 1: Introduksjon (oversettelse)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Resultatet blir at to uavhengige programmer arbeider med sine egne private adresseomr\u00e5der, som igjen avbildes i det fysiske minnet av operativsystemet<\/b>. Derfor vil bruk av minneadresser innen \u00e9n enkelt program ikke p\u00e5virke andre, og hvert program opplever at det har sitt eget stykke fysiske minnet, fullstendig overgitt til dets disposisjon. Virkeligheten er imidlertid at det fysiske minnet er en delt ressurs, hvis administrasjon utf\u00f8res av operativsystemet.<\/p>\n<h3>Konsistens<\/h3>\n<p>\nEn annen viktig tema innen operativsystemer er <b>konsistens<\/b>. Dette begrepet brukes n\u00e5r det refereres til problemer i systemet som kan oppst\u00e5 ved h\u00e5ndtering av mange ting samtidig innen ett program. Konsistensproblemer oppst\u00e5r til og med i operativsystemet selv. I de tidligere eksemplene med minne- og prosessvirtualisering forsto vi at OS-et h\u00e5ndterer mange ting samtidig - det starter f\u00f8rst \u00e9n prosess, s\u00e5 en annen, og s\u00e5 videre. Det viste seg at denne oppf\u00f8rselen kan f\u00f8re til visse problemer. Moderne flertr\u00e5dede programmer opplever slik vanskeligheter.<\/p>\n<p>La oss se p\u00e5 f\u00f8lgende program:<\/p>\n<p> <img decoding=\"async\" alt=\"Operativsystemer: Tre enkle deler. Del 1: Introduksjon (oversettelse)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrammet i hovedfunksjonen oppretter to tr\u00e5der ved hjelp av kallet <b>Pthread_create()<\/b>. I dette eksempelet kan vi tenke p\u00e5 en tr\u00e5d som en funksjon som kj\u00f8rer i et minneomr\u00e5de sammen med andre funksjoner, og antallet kj\u00f8rende funksjoner er \u00e5penbart mer enn \u00e9n. I dette eksempelet starter hver tr\u00e5d og utf\u00f8rer funksjonen <b>worker(), som p\u00e5 sin side ganske enkelt inkrementerer en variabel.<\/b>,.<\/p>\n<p>Vi vil kj\u00f8re dette programmet med argumentet 1000. Som du kanskje allerede har gjettet, b\u00f8r resultatet bli 2000, siden hver tr\u00e5d inkrementerer variabelen 1000 ganger. Men alt er ikke s\u00e5 enkelt. La oss pr\u00f8ve \u00e5 kj\u00f8re programmet med et antall repetisjoner som er en orden st\u00f8rre.<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystemer: Tre enkle deler. Del 1: Introduksjon (oversettelse)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVed \u00e5 gi tallet, for eksempel 100000 som inndata, forventer vi \u00e5 se tallet 200000 som utdata. Men n\u00e5r vi kj\u00f8rer tallet 100000 flere ganger, vil vi ikke bare se et feil svar, men ogs\u00e5 forskjellige feil svar. L\u00f8sningen ligger i at for \u00e5 \u00f8ke tallet kreves det tre operasjoner - hente tallet fra minnet, inkrementere det, og deretter skrive tallet tilbake. Siden alle disse instruksjonene ikke utf\u00f8res atomisk (alle samtidig), kan slike merkelige ting skje. Dette problemet kalles i programmering <b>race condition - tilstand av kappl\u00f8p<\/b>. N\u00e5r ukjente krefter p\u00e5 ukjente tidspunkter kan p\u00e5virke utf\u00f8relsen av dine operasjoner.<br \/>\n<br \/>Kilde: <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.5 - 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\/no\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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. Part 1: Intro (oversettelse) | ProHoster","description":"Innledning til operativsystemer Hei, Habr! Jeg vil gjerne presentere deg for en serie oversatte artikler om noe jeg synes er interessant - OSTEP.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}