{"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\/da\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Operativsystemer: Tre Enkle Deler. Del 1: Introduktion (overs\u00e6ttelse)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduktion til operativsystemer<\/h1>\n<p>Hej, Habr! Jeg vil gerne pr\u00e6sentere en serie af overs\u00e6ttelser af en interessant litteratur \u2014 OSTEP. I dette materiale beskrives arbejdet med Unix-lignende operativsystemer i dybden, nemlig h\u00e5ndtering af processer, forskellige planl\u00e6ggere, hukommelse og andre lignende komponenter, der udg\u00f8r et moderne OS. Du kan se originalen af alt materialet her <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">her<\/a><\/noindex>. V\u00e6r opm\u00e6rksom p\u00e5, at overs\u00e6ttelsen er lavet uprofessionelt (temmelig frit), men jeg h\u00e5ber, at jeg har bevaret den overordnede mening.<\/p>\n<p>Laboratoriearbejder om dette emne kan findes her:<br \/>\n \u2014 originalen: <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 originalen: <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 tjekke min kanal 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 drift<\/h3>\n<p>\nHvad sker der, n\u00e5r et program k\u00f8rer? Et k\u00f8rende program udf\u00f8rer \u00e9n enkel opgave \u2014 det udf\u00f8rer instruktioner. Hver sekund tr\u00e6kkes millioner og endda muligvis milliarder af instruktioner ud af RAM'en af processoren, som s\u00e5 dekoder dem (for eksempel genkender hvilken type disse instruktioner tilh\u00f8rer) og udf\u00f8rer dem. Det kan v\u00e6re at l\u00e6gge to tal sammen, adgang til hukommelse, kontrol af betingelse, spring til en funktion og s\u00e5 videre. Efter afslutningen p\u00e5 \u00e9n instruktion g\u00e5r processoren videre til at udf\u00f8re den n\u00e6ste. Og s\u00e5 videre instruktion for instruktion, indtil programmet afsluttes.<br \/>\nDette eksempel er naturligvis forenklet \u2014 faktisk tillader moderne hardware at udf\u00f8re instruktioner uden for r\u00e6kkef\u00f8lge, beregne mulige resultater, udf\u00f8re instruktioner samtidigt og s\u00e5 videre.<\/p>\n<h3>Von Neumann-modellen for beregning<\/h3>\n<p>\nDen forenklede arbejdsform, vi har beskrevet, ligner Von Neumann-modellen for beregning. <i>Von Neumann er en af pionererne inden for computersystemer, og han er ogs\u00e5 en af forfatterne til spilteori.<\/i>. Under programudf\u00f8relsen sker der mange andre begivenheder, mange andre processer og diskr\u00e9 logik arbejder, hvis hovedform\u00e5l er at forenkle start, drift og vedligeholdelse af systemet.<br \/>\nDer findes en r\u00e6kke softwareprogrammer, der er ansvarlige for at g\u00f8re det nemt at k\u00f8re programmer (eller endda tillade k\u00f8rsel af flere programmer samtidigt). Disse programmer giver mulighed for, at programmer kan dele det samme hukommelse samt interagere med forskellige enheder. Denne softwarepakke kaldes grundl\u00e6ggende et operativsystem, og dets opgaver inkluderer at overv\u00e5ge, at systemet fungerer korrekt og effektivt samt at sikre nem styring af systemet. <\/p>\n<h2>Operativsystem<\/h2>\n<p>\n<b>Et operativsystem, forkortet OS, er et s\u00e6t sammenkoblede programmer, der er designet til at styre computerens ressourcer og organisere brugerens interaktion med computeren.<\/b>. <br \/>\nOS opn\u00e5r sin effektivitet prim\u00e6rt gennem den mest grundl\u00e6ggende teknik - teknikken <b>virtualisering<\/b>. OS interagerer med fysiske ressourcer (processor, hukommelse, disk osv.) og transformer dem til en mere generel, mere alsidig og lettere anvendelig form af sig selv. Derfor kan man meget groft sammenligne et operativsystem med en virtuel maskine.<br \/>\nFor at muligg\u00f8re, at brugerne giver kommandoer til operativsystemet og derved udnytter mulighederne i den virtuelle maskine (s\u00e5som: k\u00f8rsel af programmer, tildeling af hukommelse, adgang til filer osv.), tilbyder operativsystemet et interface kaldet <b>API<\/b> (application programming interface), som man kan foretage opkald til (call). Et typisk operativsystem giver mulighed for at udf\u00f8re hundredvis af systemopkald.<br \/>\nOg endelig, da virtualisering muligg\u00f8r, at mange programmer kan arbejde (dermed dele CPU), og samtidig f\u00e5 adgang til deres instruktioner og data (dermed dele hukommelse), samt f\u00e5 adgang til disks (dermed dele input\/output-enheder), kaldes operativsystemet ogs\u00e5 ressourceforvalter. Hver processor, disk og hukommelse er et systemressource, og derfor bliver en af operativsystemets roller at administrere disse ressourcer effektivt, retf\u00e6rdigt eller, afh\u00e6ngig af opgaven, som operativsystemet er designet til.<\/p>\n<h3>CPU-virtualisering<\/h3>\n<p>\nLad os 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: Introduktion (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet udf\u00f8rer ikke nogen s\u00e6rlige handlinger, i bund og grund g\u00f8r det bare at kalde funktionen <b>spin<\/b>(), hvis opgave er at cyklistisk tjekke tiden og returnere efter at der er g\u00e5et et sekund. S\u00e5ledes gentager det uendeligt den linje, som brugeren har givet som argument.<br \/>\nLad os k\u00f8re dette program og give det argumentet symbolet \u201cA\u201d. Resultatet er ikke s\u00e6rlig interessant \u2014 systemet k\u00f8rer simpelthen programmet, som periodisk viser symbolet \u201cA\u201d p\u00e5 sk\u00e6rmen.<br \/>\nNu pr\u00f8ver vi en variant, hvor mange instanser af det samme program k\u00f8res, men viser forskellige bogstaver for at g\u00f8re det mere forst\u00e5eligt. I dette tilf\u00e6lde vil resultatet v\u00e6re en smule anderledes. Selvom vi har \u00e9n processor, k\u00f8rer programmet samtidig. Hvordan kan det lade sig g\u00f8re? Det sker, fordi operativsystemet, med hj\u00e6lp fra hardware-funktionerne, skaber en illusion. En illusion af, at systemet har flere virtuelle processorer, som omdanner \u00e9n fysisk processor til teoretisk uendeligt antal og dermed g\u00f8r det muligt for programmerne at synes at k\u00f8re samtidig. Denne illusion kaldes <i>CPU-virtualisering<\/i>.<br \/>\n Et s\u00e5dant billede rejser mange sp\u00f8rgsm\u00e5l, for eksempel, hvis flere programmer \u00f8nsker at starte samtidig, hvilket program vil s\u00e5 blive startet? Dette sp\u00f8rgsm\u00e5l besvares af \u201cpolitikkerne\u201d i OS. Politikker anvendes mange steder i OS og besvarer s\u00e5danne sp\u00f8rgsm\u00e5l, og de er ogs\u00e5 grundl\u00e6ggende mekanismer, som OS implementerer. Heraf f\u00f8lger ogs\u00e5 OS's rolle som ressourcemanager.<\/p>\n<h3>Hukommelsesvirtualisering<\/h3>\n<p>\n Lad os nu se p\u00e5 hukommelsen. <b>Den fysiske model af hukommelse i moderne systemer repr\u00e6senteres som et array af bytes<\/b>. For at l\u00e6se fra hukommelsen skal man angive en <b>celleadresse<\/b>, for at f\u00e5 adgang til den. For at skrive eller opdatere data skal man ogs\u00e5 angive dataene og celleadressen, hvor de skal skrives.<br \/>\n Der opst\u00e5r konstant adgang til hukommelsen under programmets udf\u00f8relse. Programmet gemmer hele sin datastruktur i hukommelsen og tilg\u00e5r den, mens det udf\u00f8rer forskellige instruktioner. Instruktionerne opbevares ogs\u00e5 i hukommelsen, s\u00e5 adgangen til den sker ogs\u00e5 for hver anmodning om den n\u00e6ste instruktion.<\/p>\n<h4>Kald malloc()<\/h4>\n<p>Lad os overveje f\u00f8lgende program, der allokerer et omr\u00e5de af hukommelsen ved hj\u00e6lp af kaldet <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystemer: Tre Enkle Deler. Del 1: Introduktion (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrammet udf\u00f8rer flere opgaver. For det f\u00f8rste allokerer det en vis m\u00e6ngde hukommelse (linje 7), derefter udskriver det adressen p\u00e5 den allokerede celle (linje 9) og skriver nul i den f\u00f8rste slot af den allokerede hukommelse. Derefter g\u00e5r programmet ind i en l\u00f8kke, hvor det inkrementerer v\u00e6rdien, der er gemt i hukommelsen ved adressen i variablen \u201cp\u201d. Det udskriver ogs\u00e5 proces-id\u2019et for sig selv. <b>Proces-id\u2019et er unikt for hver k\u00f8rende proces<\/b>. Hvis vi k\u00f8rer flere kopier, vil vi st\u00f8de p\u00e5 et interessant resultat: I det f\u00f8rste tilf\u00e6lde, hvis vi ikke g\u00f8r noget og blot k\u00f8rer flere kopier, s\u00e5 vil adresserne v\u00e6re forskellige. Men det stemmer ikke overens med vores teori! Rigtigt, fordi funktionen til hukommelsesrandomisering som standard er aktiveret i moderne distributioner. Hvis vi slukker den, vil vi f\u00e5 det forventede resultat \u2013 adresserne til to samtidige k\u00f8rende programmer vil v\u00e6re de samme. <\/p>\n<p><img decoding=\"async\" alt=\"Operativsystemer: Tre Enkle Deler. Del 1: Introduktion (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Det viser sig, at to uafh\u00e6ngige programmer arbejder med deres egne private adresseomr\u00e5der, som igen bliver kortlagt af operativsystemet til den fysiske hukommelse<\/b>. Derfor vil brugen af hukommelsesadresser inden for \u00e9t program ikke p\u00e5virke andre, og hvert program synes at have sin egen del af den fysiske hukommelse, der er helt til r\u00e5dighed for dets brug. Virkeligheden er dog, at den fysiske hukommelse er en delt ressource, hvis styring foretages af operativsystemet.<\/p>\n<h3>Konsistens<\/h3>\n<p>\nEt andet vigtigt emne inden for operativsystemer er <b>konsistens<\/b>. Denne term bruges, n\u00e5r der tales om problemer i systemet, der kan opst\u00e5, n\u00e5r man arbejder med mange ting samtidigt inden for \u00e9t program. Konsistensproblemer opst\u00e5r endda i selve operativsystemet. I de tidligere eksempler med virtualisering af hukommelse og processor forstod vi, at OS h\u00e5ndterer mange ting p\u00e5 \u00e9n gang \u2013 starter den f\u00f8rste proces, derefter den anden og s\u00e5 videre. Det viste sig, at s\u00e5dan adf\u00e6rd kan f\u00f8re til nogle problemer. For eksempel oplever moderne multitr\u00e5dede programmer s\u00e5danne vanskeligheder.<\/p>\n<p>Lad os se p\u00e5 f\u00f8lgende program:<\/p>\n<p> <img decoding=\"async\" alt=\"Operativsystemer: Tre Enkle Deler. Del 1: Introduktion (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrammet i hovedfunktionen opretter to tr\u00e5de ved hj\u00e6lp af kaldet <b>Pthread_create()<\/b>. I dette eksempel kan man t\u00e6nke p\u00e5 en tr\u00e5d som en funktion, der k\u00f8rer i et hukommelsesomr\u00e5de sammen med andre funktioner, hvor antallet af k\u00f8rende funktioner bestemt er mere end \u00e9n. I dette eksempel starter hver tr\u00e5d og udf\u00f8rer funktionen <b>worker(), der i sin tur blot inkrementerer en variabel<\/b>,.<\/p>\n<p>. Vi k\u00f8rer dette program med argumentet 1000. Som du m\u00e5ske allerede har g\u00e6ttet, skal resultatet blive 2000, da hver tr\u00e5d inkrementerede variablen 1000 gange. Men det er ikke s\u00e5 enkelt. Lad os pr\u00f8ve at k\u00f8re programmet med et antal gentagelser, der er betydeligt h\u00f8jere.<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystemer: Tre Enkle Deler. Del 1: Introduktion (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVed at give et tal som 100000, forventer vi at se tallet 200000 som resultat. Men ved at k\u00f8re tallet 100000 flere gange, vil vi ikke kun opleve, at svaret er forkert, men vi vil ogs\u00e5 f\u00e5 forskellige forkerte svar. G\u00e5den ligger i, at for at \u00f8ge tallet kr\u00e6ves der tre operationer - at hente tallet fra hukommelsen, inkrementere det, og derefter skrive tallet tilbage. Da alle disse instruktioner ikke udf\u00f8res atomarisk (alle p\u00e5 \u00e9n gang), kan der opst\u00e5 s\u00e5danne m\u00e6rkelige ting. Dette problem kaldes i programmering <b>race condition \u2014 race tilstand<\/b>. N\u00e5r usete kr\u00e6fter p\u00e5 et ukendt tidspunkt kan p\u00e5virke udf\u00f8relsen af dine operationer.<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.3 - 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\/da\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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. Del 1: Intro (overs\u00e6ttelse) | ProHoster","description":"Introduktion til operativsystemer Hej, Habr! Jeg vil gerne pr\u00e6sentere en serie af artikler\/overs\u00e6ttelser af en interessant litteratur \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}