{"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\/sv\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Operativsystem: Tre enkla delar. Del 1: Introduktion (\u00f6vers\u00e4ttning)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduktion till operativsystem<\/h1>\n<p>Hej, Habr! Jag vill presentera en serie artiklar med \u00f6vers\u00e4ttningar av en intressant litteratur \u2014 OSTEP. I detta material behandlas arbetet med Unix-liknande operativsystem p\u00e5 djupet, speciellt \u2014 hantering av processer, olika schemal\u00e4ggare, minne och andra liknande komponenter som utg\u00f6r ett modernt OS. Originalet av allt material kan du se h\u00e4r <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>. Observera att \u00f6vers\u00e4ttningen \u00e4r utf\u00f6rd oprofessionellt (relativt fritt), men jag hoppas att jag har bevarat den \u00f6vergripande meningen.<\/p>\n<p>Laborationsarbeten f\u00f6r detta \u00e4mne kan hittas h\u00e4r:<br \/>\n \u2014 originalet: <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 originalet: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 min personliga anpassning: <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>Och du kan ocks\u00e5 kolla in 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 arbete<\/h3>\n<p>\nVad h\u00e4nder egentligen n\u00e4r ett program k\u00f6rs? Ett startat program utf\u00f6r en enkel uppgift \u2014 det exekverar instruktioner. Varje sekund h\u00e4mtas miljoner, kanske till och med miljarder instruktioner av processorn fr\u00e5n det interna minnet, som sedan dekoderar dem (till exempel identifierar vilken typ av instruktioner detta \u00e4r) och exekverar dem. Detta kan inkludera att addera tv\u00e5 siffror, f\u00e5 \u00e5tkomst till minnet, kontrollera ett villkor, hoppa till en funktion och s\u00e5 vidare. Efter att en instruktion har genomf\u00f6rts g\u00e5r processorn vidare till att utf\u00f6ra n\u00e4sta. P\u00e5 s\u00e5 s\u00e4tt exekveras instruktionerna en efter en tills programmet avslutas.<br \/>\nDetta exempel \u00e4r naturligtvis f\u00f6renklat \u2014 i verkligheten g\u00f6r modern h\u00e5rdvara det m\u00f6jligt f\u00f6r processorn att exekvera instruktioner utanf\u00f6r sin ordning, ber\u00e4kna m\u00f6jliga resultat, exekvera instruktioner samtidigt och andra liknande knep f\u00f6r att snabba upp arbetet.<\/p>\n<h3>Von Neumann-modellen f\u00f6r ber\u00e4kning<\/h3>\n<p>\nDen f\u00f6renklade form som vi har beskrivit liknar Von Neumann-modellen f\u00f6r ber\u00e4kningar. <i>Von Neumann var en av pionj\u00e4rerna inom datorsystem och en av f\u00f6rfattarna till spelteorin.<\/i>. Under programk\u00f6rningen intr\u00e4ffar m\u00e5nga andra h\u00e4ndelser, m\u00e5nga andra processer och extern logik arbetar, vars huvudsakliga syfte \u00e4r att f\u00f6renkla starten, driften och underh\u00e5llet av systemet.<br \/>\nDet finns en upps\u00e4ttning programvara som ansvarar f\u00f6r att f\u00f6renkla k\u00f6rningen av program (eller till och med m\u00f6jligg\u00f6r k\u00f6rning av flera program samtidigt), den l\u00e5ter program dela samma minne samt interagera med olika enheter. Denna programupps\u00e4ttning kallas i grunden operativsystem och dess uppgifter inkluderar att \u00f6vervaka s\u00e5 att systemet fungerar korrekt och effektivt, samt att s\u00e4kerst\u00e4lla att systemet \u00e4r l\u00e4tt att hantera. <\/p>\n<h2>Operativsystem<\/h2>\n<p>\n<b>Operativsystem, f\u00f6rkortat OS, \u00e4r en upps\u00e4ttning relaterade program som \u00e4r avsedda att hantera datorresurser och organisera anv\u00e4ndarens interaktion med datorn.<\/b>. <br \/>\nOS uppn\u00e5r sin effektivitet fr\u00e4mst genom den viktigaste tekniken \u2014 tekniken <b>f\u00f6r virtualisering.<\/b>. OS interagerar med fysiska resurser (processor, minne, disk och liknande) och omvandlar dem till en mer generell, mer kapabel och enklare att anv\u00e4nda form av sig sj\u00e4lv. D\u00e4rf\u00f6r kan man mycket grovt j\u00e4mf\u00f6ra operativsystemet med en virtuell maskin f\u00f6r allm\u00e4n f\u00f6rst\u00e5else.<br \/>\nF\u00f6r att m\u00f6jligg\u00f6ra f\u00f6r anv\u00e4ndare att ge kommandon till operativsystemet och d\u00e4rmed anv\u00e4nda funktionerna hos den virtuella maskinen (s\u00e5som: k\u00f6ra program, tilldela minne, f\u00e5 tillg\u00e5ng till filer och s\u00e5 vidare), erbjuder operativsystemet ett gr\u00e4nssnitt som kallas <b>API<\/b> (application programming interface) och som man kan g\u00f6ra anrop (call) till. Ett typiskt operativsystem ger m\u00f6jlighet att g\u00f6ra hundratals systemanrop.<br \/>\nOch slutligen, eftersom virtualisering till\u00e5ter m\u00e5nga program att fungera (p\u00e5 s\u00e5 s\u00e4tt dela CPU), och samtidigt f\u00e5 tillg\u00e5ng till deras instruktioner och data (d\u00e4rigenom dela minnet), samt f\u00e5 tillg\u00e5ng till diskar (p\u00e5 s\u00e5 s\u00e4tt dela I\/O-enheter), kallas operativsystemet ocks\u00e5 f\u00f6r resursf\u00f6rvaltare. Varje processor, disk och minne \u00e4r systemresurser och d\u00e4rf\u00f6r blir en av operativsystemets roller att hantera dessa resurser, p\u00e5 ett effektivt, r\u00e4ttvist eller, tv\u00e4rtom, beroende p\u00e5 uppgiften, som det operativsystemet \u00e4r utvecklat f\u00f6r.<\/p>\n<h3>Virtualisering av CPU<\/h3>\n<p>\nL\u00e5t oss titta p\u00e5 f\u00f6ljande program:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Operativsystem: Tre enkla delar. Del 1: Introduktion (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet utf\u00f6r inga s\u00e4rskilda \u00e5tg\u00e4rder, allt det g\u00f6r \u00e4r att anropa funktionen <b>spin<\/b>(), vars uppgift \u00e4r att cykliskt kontrollera tiden och returnera efter att en sekund har passerat. P\u00e5 s\u00e5 s\u00e4tt upprepar den o\u00e4ndligt den str\u00e4ng som anv\u00e4ndaren skickade som argument.<br \/>\nL\u00e5t oss k\u00f6ra detta program och ge den argumentet tecknet \u201cA\u201d. Resultatet blir inte s\u00e4rskilt intressant \u2014 systemet k\u00f6r helt enkelt programmet som periodiskt skriver ut tecknet \u201cA\u201d.<br \/>\nNu ska vi prova ett alternativ d\u00e4r flera instanser av samma program k\u00f6rs men skriver ut olika bokst\u00e4ver f\u00f6r att g\u00f6ra det tydligare. I detta fall kommer resultatet att bli n\u00e5got annat. Trots att vi har en processor k\u00f6r programmen samtidigt. Hur kan det vara s\u00e5? Det \u00e4r s\u00e5 att operativsystemet, med hj\u00e4lp av h\u00e5rdvarans m\u00f6jligheter, skapar en illusion. Illusionen av att det finns flera virtuella processorer i systemet, vilket g\u00f6r att en fysisk processor teoretiskt kan fungera som o\u00e4ndligt m\u00e5nga och d\u00e4rmed l\u00e5ta programmen se ut som om de k\u00f6rs samtidigt. Denna illusion kallas <i>CPU-virtualisering<\/i>.<br \/>\n Denna bild ger upphov till m\u00e5nga fr\u00e5gor, till exempel, om flera program vill starta samtidigt, vilket program kommer att startas? Denna fr\u00e5ga besvaras av \u201cpolicyer\u201d inom operativsystemet. Policyer anv\u00e4nds p\u00e5 m\u00e5nga st\u00e4llen i operativsystemet och svarar p\u00e5 liknande fr\u00e5gor, och de \u00e4r \u00e4ven de grundl\u00e4ggande mekanismer som operativsystemet implementerar. H\u00e4rifr\u00e5n kommer operativsystemets roll som resurshanterare.<\/p>\n<h3>Minnevirtualisering<\/h3>\n<p>\n Nu l\u00e5t oss titta p\u00e5 minnet. <b>Den fysiska modellen av minnet i moderna system representeras som en matris av byte<\/b>. F\u00f6r att l\u00e4sa fr\u00e5n minnet m\u00e5ste man ange <b>adress f\u00f6r cellen<\/b>, f\u00f6r att f\u00e5 tillg\u00e5ng till den. F\u00f6r att skriva eller uppdatera data beh\u00f6ver man ocks\u00e5 ange data samt adressen p\u00e5 cellen d\u00e4r de ska skrivas.<br \/>\n \u00c5tkomster till minnet sker kontinuerligt under programmets k\u00f6rning. Programmet lagrar hela sin dataskruktur i minnet och kommer \u00e5t den medan det utf\u00f6r olika instruktioner. Instruktioner lagras ocks\u00e5 i minnet, s\u00e5 \u00e5tkomst sker ocks\u00e5 vid varje beg\u00e4ran f\u00f6r n\u00e4sta instruktion.<\/p>\n<h4>Anrop av malloc()<\/h4>\n<p>L\u00e5t oss \u00f6verv\u00e4ga f\u00f6ljande program som allokerar minne genom ett anrop <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystem: Tre enkla delar. Del 1: Introduktion (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrammet g\u00f6r flera saker. F\u00f6rst allokerar det en viss m\u00e4ngd minne (rad 7), sedan skriver det ut adressen f\u00f6r den allokerade cellen (rad 9), och skriver noll i den f\u00f6rsta sloten av det allokerade minnet. D\u00e4refter g\u00e5r programmet in i en loop d\u00e4r det inkrementerar v\u00e4rdet som skrivs i minnet vid adressen i variabeln \u201cp\u201d. Det skriver ocks\u00e5 ut processens eget ID. <b>Process-ID:t \u00e4r unikt f\u00f6r varje k\u00f6rd process<\/b>. Om vi k\u00f6r flera instanser av programmet kommer vi att st\u00f6ta p\u00e5 ett intressant resultat: I det f\u00f6rsta fallet, om vi inte g\u00f6r n\u00e5got s\u00e4rskilt och bara k\u00f6r flera kopior, s\u00e5 kommer adresserna att vara olika. Men det h\u00e4r st\u00e4mmer inte med v\u00e5r teori! R\u00e4tt, eftersom den moderna distributionen har funktionen f\u00f6r minnesrandomisering aktiverad som standard. Om vi st\u00e4nger av den, f\u00e5r vi det f\u00f6rv\u00e4ntade resultatet \u2014 minnesadresserna f\u00f6r tv\u00e5 program som k\u00f6rs samtidigt kommer att \u00f6verensst\u00e4mma. <\/p>\n<p><img decoding=\"async\" alt=\"Operativsystem: Tre enkla delar. Del 1: Introduktion (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>S\u00e5 det visar sig att tv\u00e5 oberoende program arbetar med sina egna privata adressutrymmen, som i sin tur tilldelas av operativsystemet i det fysiska minnet.<\/b>. D\u00e4rf\u00f6r kommer anv\u00e4ndningen av minnesadresser inom ett program inte att p\u00e5verka andra, och varje program tror att det har sin egen bit av det fysiska minnet till sj\u00e4lvkostnadspris. Verkligheten \u00e4r dock att det fysiska minnet \u00e4r en delad resurs, vars hantering utf\u00f6rs av operativsystemet.<\/p>\n<h3>Konsistens<\/h3>\n<p>\nEn annan viktig fr\u00e5ga inom operativsystem \u00e4r <b>konsistens<\/b>. Detta begrepp anv\u00e4nds n\u00e4r man talar om problem i systemet som kan uppst\u00e5 n\u00e4r man arbetar med m\u00e5nga saker samtidigt inom ett och samma program. Konsistensproblem kan uppst\u00e5 \u00e4ven i sj\u00e4lva operativsystemet. I de tidigare exemplen med minnes- och processorvirtualisering f\u00f6rstod vi att operativsystemet hanterar m\u00e5nga saker samtidigt \u2014 det startar den f\u00f6rsta processen, sedan den andra och s\u00e5 vidare. Det visar sig att detta beteende kan leda till vissa problem. Till exempel upplever moderna flerm\u00e5lsprogram s\u00e5dana sv\u00e5righeter.<\/p>\n<p>L\u00e5t oss titta p\u00e5 f\u00f6ljande program:<\/p>\n<p> <img decoding=\"async\" alt=\"Operativsystem: Tre enkla delar. Del 1: Introduktion (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrammet i huvudfunktionen skapar tv\u00e5 tr\u00e5dar genom ett anrop <b>Pthread_create()<\/b>. I det h\u00e4r exemplet kan vi t\u00e4nka p\u00e5 en tr\u00e5d som en funktion som k\u00f6rs i ett minnesutrymme bredvid andra funktioner, d\u00e4r antalet funktioner som k\u00f6rs samtidigt tydligt \u00e4r mer \u00e4n en. I det h\u00e4r exemplet startar varje tr\u00e5d och utf\u00f6r funktionen <b>worker() som i sin tur helt enkelt inkrementerar en variabel.<\/b>,.<\/p>\n<p>Vi k\u00f6r detta program med argumentet 1000. Som du kanske har gissat, b\u00f6r resultatet bli 2000, eftersom varje tr\u00e5d inkrementerade variabeln 1000 g\u00e5nger. Men allt \u00e4r inte s\u00e5 enkelt. L\u00e5t oss f\u00f6rs\u00f6ka k\u00f6ra programmet med ett antal upprepningar som \u00e4r en ordning st\u00f6rre.<\/p>\n<p><img decoding=\"async\" alt=\"Operativsystem: Tre enkla delar. Del 1: Introduktion (\u00f6vers\u00e4ttning)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGenom att mata in ett nummer, till exempel 100000, f\u00f6rv\u00e4ntar vi oss att se ett utg\u00e5ngsv\u00e4rde p\u00e5 200000. Men n\u00e4r vi k\u00f6r nummer 100000 flera g\u00e5nger, ser vi inte bara fel svar, utan vi f\u00e5r olika felaktiga svar. G\u00e5tan ligger i att f\u00f6r att \u00f6ka talet kr\u00e4vs tre operationer \u2014 att h\u00e4mta talet fr\u00e5n minnet, inkrementera och sedan skriva tillbaka talet. Eftersom dessa instruktioner inte utf\u00f6rs atom\u00e4rt (alla samtidigt), kan s\u00e5dana konstiga saker h\u00e4nda. Detta problem kallas i programmering <b>race condition \u2014 t\u00e4vlingsvillkor<\/b>. N\u00e4r ok\u00e4nda krafter vid ok\u00e4nda tidpunkter kan p\u00e5verka utf\u00f6randet av vissa av dina operationer.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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 (\u00f6vers\u00e4ttning) | ProHoster","description":"Introduktion till operativsystem Hej, Habr! Jag vill presentera f\u00f6r er en serie \u00f6versatta artiklar av en intressant litteratur som jag tycker \u00e4r \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}