{"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\/da\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Operating Systems: Three Easy Pieces. Part 2: Abstraktion: Proces (overs\u00e6ttelse)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduktion til operativsystemer<\/h1>\n<p>\nHej, Habr! Jeg vil gerne pr\u00e6sentere for dig en serie af artikelovers\u00e6ttelser af en interessant litteratur \u2014 OSTEP. Dette materiale unders\u00f8ger grundigt, hvordan unix-lignende operativsystemer fungerer, nemlig hvordan man arbejder med processer, forskellige scheduler, hukommelse og andre lignende komponenter, der udg\u00f8r et moderne OS. Originalen af alt materiale kan du se 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:<\/p>\n<ul>\n<li>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><\/li>\n<li>original: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>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><\/li>\n<\/ul>\n<p>\nAndre dele:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Del 1: Introduktion<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nOg 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<p>Lad os overveje den mest fundamentale abstraktion, som operation systemet tilbyder brugere: processen. Definitionen af en proces er ret simpel - det er <b>et k\u00f8rende program<\/b>. Programmet i sig selv er en livl\u00f8s ting, der ligger p\u00e5 disken - det er en samling af instruktioner og muligvis nogle statiske data, der venter p\u00e5 at blive startet. Det er netop OS, der tager disse bytes og starter dem, omdanner programmet til noget nyttigt.<br \/>\n Ofte \u00f8nsker brugerne at k\u00f8re mere end \u00e9t program samtidigt, for eksempel kan du starte en browser, et spil, en medieafspiller, en tekstbehandler og s\u00e5 videre p\u00e5 din b\u00e6rbare computer. Faktisk kan et typisk system k\u00f8re titusinder af processer samtidigt. Denne kendsgerning g\u00f8r systemet lettere at bruge, du beh\u00f8ver aldrig at bekymre dig om, hvorvidt CPU'en er ledig, du skal blot starte programmerne.<\/p>\n<p><i>Her opst\u00e5r problemet: hvordan skaber man illusionen af flere CPU'er? Hvordan kan OS skabe illusionen af et n\u00e6sten uendeligt antal CPU'er, selvom du kun har \u00e9n fysisk CPU?<\/i><\/p>\n<p>OS skaber denne illusion gennem CPU-virtualisering. Ved at starte \u00e9n proces, derefter stoppe den, starte en anden proces og s\u00e5 videre, kan OS opretholde illusionen om, at der findes mange virtuelle CPU'er, selvom det faktisk kun vil v\u00e6re en eller flere fysiske processorer. Denne teknik kaldes <b>tidsm\u00e6ssig ressourceopdeling af CPU'en<\/b>. Denne teknik tillader brugerne at k\u00f8re s\u00e5 mange samtidige processer, de \u00f8nsker. Prisen for en s\u00e5dan l\u00f8sning er ydeevne - eftersom hvis CPU'en deles af flere processer, vil hver proces blive behandlet langsommere.<br \/>\n For at realisere CPU-virtualisering, og is\u00e6r for at g\u00f8re dette godt, har OS brug for b\u00e5de lavniveau- og h\u00f8jniveau-underst\u00f8ttelse. Lavniveauunderst\u00f8ttelse kaldes <b>mekanismer<\/b> \u2014 det er lavniveau metoder eller protokoller, der implementerer den n\u00f8dvendige del af funktionaliteten. Et eksempel p\u00e5 en s\u00e5dan funktionalitet er konteksskift, som giver OS mulighed for at stoppe \u00e9t program og starte et andet program p\u00e5 processoren. Denne tidsm\u00e6ssige opdeling er implementeret i alle moderne OS.<br \/>\n P\u00e5 toppen af disse mekanismer ligger der en vis logik, indlejret i operativsystemet, i form af 'politikker'. <b>Politik<\/b> er en algoritme til beslutningstagning i operativsystemet. S\u00e5danne politikker bestemmer for eksempel, hvilket program der skal starte (fra kommandoernes liste) f\u00f8rst. For eksempel vil denne opgave blive l\u00f8st af politikken kaldet <b>planl\u00e6gningspolitik (scheduling policy)<\/b> og ved valget af l\u00f8sning vil den styres af data som: opstartshistorik (hvilket program har k\u00f8rt l\u00e6ngst i det sidste minut), hvilken belastning denne proces har (hvilke typer programmer der er blevet k\u00f8rt), pr\u00e6stationsmetrikker (er systemet optimeret til interaktivt samspil eller b\u00e5ndbredde) og s\u00e5 videre.<\/p>\n<h3>Abstraktion: proces<\/h3>\n<p>\n Abstraktionen af et k\u00f8rende program, udf\u00f8rt af operativsystemet, er det, vi kalder <b>en proces<\/b>. Som n\u00e6vnt tidligere er en proces blot et k\u00f8rende program i et hvilket som helst \u00f8jeblik. Programmet, med hvilket vi kan f\u00e5 samlet information fra forskellige systemressourcer, som det tilg\u00e5r, eller som dette program ber\u00f8rer i l\u00f8bet af sin udf\u00f8relse.<br \/>\n For at forst\u00e5 komponenterne i en proces er det n\u00f8dvendigt at forst\u00e5 systemets tilstand: hvad programmet kan l\u00e6se eller \u00e6ndre under sin k\u00f8rsel. P\u00e5 ethvert tidspunkt skal man forst\u00e5, hvilke systemelementer der er vigtige for programmets udf\u00f8relse.<br \/>\n Et af de \u00e5benlyse elementer i systemets tilstand, som processen inkluderer \u2014 er <b>hukommelse.<\/b>Instruktioner opbevares i hukommelsen. De data, som programmet l\u00e6ser eller skriver, opbevares ogs\u00e5 i hukommelsen. P\u00e5 denne m\u00e5de er den hukommelse, som processen kan adressere (det s\u00e5kaldte adressrum), en del af processen.<br \/>\n Registrene er ogs\u00e5 en del af systemets tilstand. Mange instruktioner er rettet mod at \u00e6ndre v\u00e6rdien af registrene eller l\u00e6se deres v\u00e6rdier, og s\u00e5ledes bliver registrene ogs\u00e5 en vigtig del af processearbejdet. <br \/>\nDet skal bem\u00e6rkes, at maskinens tilstand ogs\u00e5 best\u00e5r af nogle specielle registre. For eksempel,<b> IP \u2014 instruction pointer<\/b> \u2014 en peg til den instruktion, som programmet udf\u00f8rer i \u00f8jeblikket. Der er ogs\u00e5 <b>stack pointer<\/b> og den tilknyttede <b>frame pointer<\/b>, som bruges til at styre: funktionsparametre, lokale variabler og returadresser.<br \/>\nEndelig henvender programmerne sig ofte til ROM (permanent hukommelse). S\u00e5danne oplysninger om \u201cI\/O\u201d (ind- og uddata) skal inkludere en liste over filer, der er \u00e5bnet af processen i \u00f8jeblikket.<\/p>\n<h3>Process API<\/h3>\n<p>\n For bedre at forst\u00e5 arbejdet med processen, lad os se p\u00e5 eksempler p\u00e5 systemopkald, som skal inkluderes i enhver gr\u00e6nseflade til operativsystemet. Disse API'er er p\u00e5 en eller anden m\u00e5de tilg\u00e6ngelige p\u00e5 ethvert operativsystem.<\/p>\n<p>\u25cf <b>Opret<\/b> (oprettelse): OS'en skal indeholde en metode, der g\u00f8r det muligt at oprette nye processer. N\u00e5r du indtaster en kommando i terminalen eller \u00e5bner et program ved at dobbeltklikke p\u00e5 dens ikonen, sendes der en anmodning til OS'en for at oprette en ny proces og derefter starte det angivne program.<br \/>\n\u25cf <b>Sletning<\/b>: Da der er en gr\u00e6nseflade til oprettelse af processer, skal OS'en ogs\u00e5 give mulighed for at tvinge en proces til at blive slettet. De fleste programmer vil naturligt blive startet og afsluttet af sig selv, mens de k\u00f8rer. Ellers vil brugeren gerne have muligheden for at dr\u00e6be dem, og derfor vil en gr\u00e6nseflade til at stoppe processen ikke v\u00e6re overfl\u00f8dig.<br \/>\n\u25cf <b>Vent <\/b>(venting): Nogle gange er det nyttigt at vente p\u00e5, at en proces afsluttes, og derfor tilbydes der nogle gr\u00e6nseflader, der giver mulighed for venting.<br \/>\n\u25cf <b>Forskellig kontrol<\/b> (forskellig kontrol): Foruden at dr\u00e6be og vente p\u00e5 en proces findes der ogs\u00e5 andre forskellige kontrollerende metoder. For eksempel giver de fleste operativsystemer mulighed for at fryse en proces (stoppe dens udf\u00f8relse i en periode) og derefter genoptage (forts\u00e6tte udf\u00f8relsen).<br \/>\n\u25cf <b>Status <\/b>(status): Der findes forskellige gr\u00e6nseflader til at f\u00e5 nogle oplysninger om status for en proces, s\u00e5som hvor l\u00e6nge den har v\u00e6ret k\u00f8rende, eller hvilken tilstand den befinder sig i nu.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktion: Proces (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Oprettelse af proces: detaljer<\/h3>\n<p>En af de interessante ting er, hvordan programmer konkret omdannes til processer. Is\u00e6r hvordan operativsystemet starter og k\u00f8rer et program. Hvordan en proces konkret oprettes.<br \/>\nF\u00f8rst og fremmest skal operativsystemet indl\u00e6se programmets kode og statiske data i hukommelsen (i procesens adresseomr\u00e5de). Programmer ligger typisk p\u00e5 disk eller solid-state drive i en eller anden eksekverbar format. S\u00e5ledes kr\u00e6ver indl\u00e6sningsprocessen af programmet og de statiske data i hukommelsen, at operativsystemet kan l\u00e6se disse bytes fra disken og placere dem et sted i hukommelsen.<\/p>\n<p>I tidligere operativsystemer blev indl\u00e6sningsprocessen udf\u00f8rt ivrigt, hvilket betyder, at koden blev indl\u00e6st i hukommelsen i sin helhed, f\u00f8r programmet blev k\u00f8rt. Moderne operativsystemer g\u00f8r dette doven, dvs. de indl\u00e6ser kode- eller datastykker kun, n\u00e5r de er n\u00f8dvendige for programmet under udf\u00f8relsen.<\/p>\n<p>Efter at koden og de statiske data er indl\u00e6st i hukommelsen, skal operativsystemet udf\u00f8re yderligere nogle opgaver, f\u00f8r det kan starte processen. En vis m\u00e6ngde hukommelse skal v\u00e6re tildelt til stakken. <b>Programmer bruger stakken til lokale variabler, funktionsparametre og returadresser.<\/b>. Operativsystemet tildeler denne hukommelse og giver den til processen. Stakken kan ogs\u00e5 tildeles med nogle argumenter, is\u00e6r den fylder funktionsparametrene main(), f.eks. med arrayet argc og argv.<\/p>\n<p>Operativsystemet kan ogs\u00e5 tildele en vis m\u00e6ngde hukommelse til programmets bunke (heap). <b>Bunken bruges af programmer til eksplicit anmodede dynamisk tildelte data.<\/b>. Programmer anmoder om dette rum ved at kalde funktionen. <b>malloc()<\/b> og renser det eksplicit ved at kalde funktionen. <b>free()<\/b>. Bunken er n\u00f8dvendig for s\u00e5danne datastrukturer som: sammenk\u00e6dede lister, hash-tabeller, tr\u00e6er og andre. I starten tildeles en lille m\u00e6ngde hukommelse til bunken, men over tid, under programmets k\u00f8rsel, kan bunken anmode om mere hukommelse gennem biblioteks-API-kaldet malloc(). Operativsystemet er involveret i processen med at tildele mere hukommelse for at hj\u00e6lpe med at opfylde disse anmodninger.<\/p>\n<p>Operativsystemet vil ogs\u00e5 udf\u00f8re initialiseringsopgaver, is\u00e6r dem der vedr\u00f8rer input-output. For eksempel har hver proces som standard 3 \u00e5bne filbeskrivelser i UNIX-systemer til standard input-, output- og fejllinjer. Disse beskrivelser g\u00f8r det muligt for programmer at l\u00e6se input fra terminalen samt at sende oplysninger til sk\u00e6rmen. <\/p>\n<p>P\u00e5 den m\u00e5de, ved at indl\u00e6se koden og de statiske data i hukommelsen, oprette og initialisere stakken samt udf\u00f8re andet arbejde relateret til ind- og uddataopgaver, forbereder OS platformen til at udf\u00f8re processen. Til sidst er der den sidste opgave: at starte programmet gennem dets indgangspunkt, kaldet funktionen main(). N\u00e5r OS g\u00e5r videre til at udf\u00f8re funktionen main(), overgiver det styringen til CPU'en til den nyoprettede proces, og dermed begynder programmet at k\u00f8re. <\/p>\n<h3>Processens tilstand<\/h3>\n<p>\n Nu hvor vi har en vis forst\u00e5else af, hvad en proces er, og hvordan den oprettes, lad os liste de tilstande, en proces kan v\u00e6re i. I sin enkleste form kan en proces v\u00e6re i en af disse tilstande:<br \/>\n\u25cf <b>K\u00f8rende<\/b>. I den k\u00f8rende tilstand k\u00f8rer processen p\u00e5 CPU'en. Det betyder, at instruktionerne udf\u00f8res.<br \/>\n\u25cf <b>Klar<\/b>. I klar-tilstand er processen klar til at k\u00f8re, men af en eller anden grund udf\u00f8rer OS den ikke p\u00e5 det p\u00e5g\u00e6ldende tidspunkt.<br \/>\n\u25cf <b>Blokeret<\/b>. I den blokerede tilstand udf\u00f8rer processen nogle operationer, der forhindrer den i at v\u00e6re klar til at blive udf\u00f8rt, indtil der sker en eller anden begivenhed. Et almindeligt eksempel er, n\u00e5r processen initierer en IO-operation, bliver den blokeret, og dermed kan en anden proces bruge CPU'en.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktion: Proces (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMan kan forestille sig disse tilstande som en graf. Som vi kan se p\u00e5 billedet, kan processens tilstand \u00e6ndre sig mellem K\u00d8RENDE og KLAR efter OS's sk\u00f8n. N\u00e5r processens tilstand \u00e6ndrer sig fra KLAR til K\u00d8RENDE, betyder det, at processen er blevet planlagt. Omvendt, hvis den er fjernet fra planl\u00e6gningen. I det \u00f8jeblik, hvor processen bliver BLOKERET, for eksempel ved at initialisere en IO-operation, vil OS holde den i denne tilstand, indtil en bestemt begivenhed, for eksempel afslutningen af IO, finder sted. P\u00e5 dette tidspunkt vil den skifte til KLAR-tilstand og muligvis straks til K\u00d8RENDE, hvis OS beslutter det. <br \/>\nLad os se p\u00e5 et eksempel p\u00e5, hvordan to processer bev\u00e6ger sig gennem disse tilstande. For at begynde med, lad os forestille os, at begge processer k\u00f8rer, og hver bruger kun CPU'en. I dette tilf\u00e6lde vil deres tilstande se s\u00e5ledes ud.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktion: Proces (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI det n\u00e6ste eksempel anmoder den f\u00f8rste proces efter en tid om IO og g\u00e5r i tilstanden BLOKKERET, hvilket giver en anden proces mulighed for at starte (FIG 1.4). OS ser, at proces 0 ikke bruger CPU og starter proces 1. Under udf\u00f8relsen af proces 1 afsluttes IO, og status for proces 0 \u00e6ndres til KLAR. Til sidst er proces 1 f\u00e6rdig, og efter dens afslutning starter proces 0, udf\u00f8rer og afslutter sin opgave.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktion: Proces (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Datastruktur<\/h3>\n<p>\n OS er i sig selv et program, og ligesom enhver anden program har det nogle n\u00f8gledatastrukturer, der sporer forskellige relevante oplysninger. For at holde styr p\u00e5 tilstanden af hver proces vil OS opretholde en vis <b>procesliste<\/b> for alle processer i tilstanden KLAR og nogle yderligere informationer til at holde styr p\u00e5 de processer, der k\u00f8rer i \u00f8jeblikket. Derudover skal OS ogs\u00e5 holde \u00f8je med de blokerede processer. Efter IO afsluttes, skal OS v\u00e6kke den n\u00f8dvendige proces og skifte den til en tilstand, der er klar til at k\u00f8re.<\/p>\n<p>For eksempel skal OS gemme tilstanden af processorregistret. I \u00f8jeblikket for at stoppe processen gemmes registerv\u00e6rdierne i procesens adresserum, og n\u00e5r processen genoptages, genfindes registerv\u00e6rdierne for dermed at forts\u00e6tte udf\u00f8relsen af denne proces.<\/p>\n<p>Udover tilstandene klar, blokeret og k\u00f8rende findes der ogs\u00e5 nogle andre tilstande. Nogle gange kan en proces have tilstand INIT ved oprettelsen. Til sidst kan en proces placeres i tilstanden FINAL, n\u00e5r den allerede er afsluttet, men oplysningerne om den er endnu ikke blevet fjernet. I UNIX-systemer kaldes denne tilstand <b>zombie-proces<\/b>. Denne tilstand er nyttig i tilf\u00e6lde, hvor den parent proces \u00f8nsker at vide retur koden for efterkommeren. For eksempel signalerer 0 normalt en succesfuld afslutning, mens 1 signalerer en fejl. Programm\u00f8rer kan dog lave yderligere udgangskoder, der signalerer om forskellige problemer. N\u00e5r en parent-proces afsluttes, foretager den det sidste systemopkald, som f.eks. wait(), for at vente p\u00e5, at efterkommerprocessen afsluttes og signalere til OS, at det er muligt at rydde eventuelle data relateret til den afsluttede proces.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 2: Abstraktion: Proces (overs\u00e6ttelse)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>N\u00f8glepunkter fra forel\u00e6sningen:<\/h3>\n<p>\n\u25cf <b>Proces <\/b> \u2014 den prim\u00e6re abstraktion af et k\u00f8rende program i et operativsystem. P\u00e5 ethvert tidspunkt kan en proces beskrives ud fra dens tilstand: indholdet af hukommelsen i dens adresserum, indholdet af CPU-registerne, inklusive instruction pointer og stack pointer samt oplysninger om I\/O, s\u00e5som \u00e5bne filer, der bliver l\u00e6st eller skrevet.<br \/>\n\u25cf <b>Process API<\/b> best\u00e5r af kald, som programmer kan foretage i forhold til processer. Normalt omfatter dette oprettelses-, sletnings- eller andre kald.<br \/>\n\u25cf En proces er i en af mange tilstande, herunder k\u00f8rende, klar, blokeret. Forskellige h\u00e6ndelser, s\u00e5som planl\u00e6gning, undtagelse fra planl\u00e6gning eller venten, kan \u00e6ndre en proces' tilstand fra \u00e9n tilstand til en anden.<br \/>\n\u25cf <b>Procesliste<\/b> indeholder information om alle processer i systemet. Hver post i listen kaldes en process control block, som i virkeligheden er en struktur, der indeholder al n\u00f8dvendig information om en bestemt proces.<br \/>\n<br \/>Kilde: <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.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\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.\" \/>\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-2-abstraktsiya-protsess-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 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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/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: Abstraktion: Proces (overs\u00e6ttelse) | ProHoster","description":"Introduktion til operativsystemer Hej, Habr! Jeg vil gerne pr\u00e6sentere en serie af oversatte artikler af en interessant litteratur \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-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 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.","og:url":"https:\/\/prohoster.info\/da\/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\/da\/wp-json\/wp\/v2\/posts\/30992","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=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}