{"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\/pl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Systemy operacyjne: Trzy \u0142atwe kawa\u0142ki. Cz\u0119\u015b\u0107 1: Wprowadzenie (t\u0142umaczenie)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Wprowadzenie do system\u00f3w operacyjnych<\/h1>\n<p>Cze\u015b\u0107, Habr! Chc\u0119 przedstawi\u0107 wam seri\u0119 artyku\u0142\u00f3w-przek\u0142ad\u00f3w jednej interesuj\u0105cej, moim zdaniem, literatury \u2014 OSTEP. W tym materiale dog\u0142\u0119bnie omawiana jest praca system\u00f3w operacyjnych podobnych do Unix, a mianowicie \u2014 zarz\u0105dzanie procesami, r\u00f3\u017cnymi harmonogramami, pami\u0119ci\u0105 i innymi podobnymi komponentami, kt\u00f3re tworz\u0105 nowoczesny OS. Orygina\u0142y wszystkich materia\u0142\u00f3w mo\u017cecie zobaczy\u0107 tutaj <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">tutaj<\/a><\/noindex>. Prosz\u0119 pami\u0119ta\u0107, \u017ce t\u0142umaczenie zosta\u0142o wykonane w spos\u00f3b nieprofesjonalny (dosy\u0107 lu\u017ano), ale mam nadziej\u0119, \u017ce og\u00f3lny sens zachowa\u0142em.<\/p>\n<p>Laboratoria dotycz\u0105ce tego tematu mo\u017cna znale\u017a\u0107 tutaj:<br \/>\n \u2014 orygina\u0142: <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 orygina\u0142: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 moja osobista adaptacja: <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>Mo\u017cecie r\u00f3wnie\u017c zajrze\u0107 na m\u00f3j kana\u0142 w <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegramie<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Dzia\u0142anie programu<\/h3>\n<p>\nCo si\u0119 dzieje, gdy dzia\u0142a jaki\u015b program? Uruchomiony program wykonuje jedn\u0105 prost\u0105 rzecz \u2014 realizuje instrukcje. Ka\u017cdej sekundy miliony, a nawet prawdopodobnie miliardy instrukcji s\u0105 wydobywane przez procesor z pami\u0119ci RAM, nast\u0119pnie dekodowane (na przyk\u0142ad, rozpoznawane, do jakiego rodzaju nale\u017c\u0105 te instrukcje) i wykonywane. Mog\u0105 to by\u0107 dodawanie dw\u00f3ch liczb, dost\u0119p do pami\u0119ci, sprawdzenie warunku, przej\u015bcie do funkcji i tak dalej. Po zako\u0144czeniu wykonania jednej instrukcji, procesor przechodzi do wykonania kolejnej. I tak instrukcja za instrukcj\u0105, s\u0105 one realizowane, dop\u00f3ki program si\u0119 nie zako\u0144czy.<br \/>\nPrzyk\u0142ad ten jest oczywi\u015bcie przedstawiony w uproszczony spos\u00f3b \u2014 w rzeczywisto\u015bci, aby przyspieszy\u0107 dzia\u0142anie procesora, nowoczesny sprz\u0119t pozwala na wykonywanie instrukcji poza kolejno\u015bci\u0105, przewidywanie mo\u017cliwych wynik\u00f3w, r\u00f3wnoczesne wykonywanie instrukcji i inne podobne sztuczki.<\/p>\n<h3>Model obliczeniowy von Neumanna<\/h3>\n<p>\nOpisana przez nas uproszczona forma dzia\u0142ania przypomina model obliczeniowy von Neumanna. <i>Von Neumann to jeden z pionier\u00f3w system\u00f3w komputerowych, tak\u017ce jest jednym z autor\u00f3w teorii gier<\/i>. Podczas pracy programu dzieje si\u0119 jeszcze mn\u00f3stwo innych zdarze\u0144, dzia\u0142a wiele innych proces\u00f3w i zewn\u0119trznej logiki, kt\u00f3rych g\u0142\u00f3wnym celem jest uproszczenie uruchamiania, dzia\u0142ania i utrzymania systemu.<br \/>\nIstnieje zestaw oprogramowania odpowiedzialnego za \u0142atwo\u015b\u0107 uruchamiania program\u00f3w (a nawet umo\u017cliwiaj\u0105cego uruchamianie kilku program\u00f3w jednocze\u015bnie), kt\u00f3ry pozwala programom dzieli\u0107 t\u0119 sam\u0105 pami\u0119\u0107, a tak\u017ce wsp\u00f3\u0142dzia\u0142a\u0107 z r\u00f3\u017cnymi urz\u0105dzeniami. Taki zestaw oprogramowania nazywa si\u0119 systemem operacyjnym, a jego zadania obejmuj\u0105 monitorowanie tego, aby system dzia\u0142a\u0142 prawid\u0142owo i efektywnie, a tak\u017ce zapewnienie \u0142atwo\u015bci zarz\u0105dzania tym systemem. <\/p>\n<h2>System operacyjny<\/h2>\n<p>\n<b>System operacyjny, w skr\u00f3cie OS \u2014 to zbi\u00f3r wzajemnie powi\u0105zanych program\u00f3w, przeznaczonych do zarz\u0105dzania zasobami komputera i organizowania interakcji u\u017cytkownika z komputerem.<\/b>. <br \/>\nSystem operacyjny osi\u0105ga swoj\u0105 efektywno\u015b\u0107 przede wszystkim dzi\u0119ki najwa\u017cniejszej technice \u2014 technice <b>wirtualizacji<\/b>. System operacyjny wchodzi w interakcj\u0119 z fizycznymi zasobami (procesorem, pami\u0119ci\u0105, dyskiem i podobnymi) i przekszta\u0142ca je w bardziej og\u00f3ln\u0105, posiadaj\u0105c\u0105 wi\u0119ksze mo\u017cliwo\u015bci oraz \u0142atwiejsz\u0105 w u\u017cyciu form\u0119 samego siebie. Dlatego dla og\u00f3lnego zrozumienia mo\u017cna w spos\u00f3b bardzo og\u00f3lny por\u00f3wna\u0107 system operacyjny do maszyny wirtualnej.<br \/>\nAby umo\u017cliwi\u0107 u\u017cytkownikom wydawanie polece\u0144 systemowi operacyjnemu i tym samym korzystanie z mo\u017cliwo\u015bci maszyny wirtualnej (takich jak: uruchamianie programu, przydzielanie pami\u0119ci, dost\u0119p do pliku itd.), system operacyjny udost\u0119pnia pewien interfejs, zwany <b>API<\/b> (application programming interface), do kt\u00f3rego mo\u017cna wykonywa\u0107 wywo\u0142ania (call). Typowy system operacyjny umo\u017cliwia wykonanie setek wywo\u0142a\u0144 systemowych.<br \/>\nI wreszcie, poniewa\u017c wirtualizacja pozwala wielu programom dzia\u0142a\u0107 (w ten spos\u00f3b wsp\u00f3\u0142dziel\u0105c CPU) i jednocze\u015bnie uzyskiwa\u0107 dost\u0119p do ich instrukcji oraz danych (dziel\u0105c pami\u0119\u0107), a tak\u017ce uzyskiwa\u0107 dost\u0119p do dysk\u00f3w (w ten spos\u00f3b wsp\u00f3\u0142dziel\u0105c urz\u0105dzenia wej\u015bcia-wyj\u015bcia), system operacyjny nazywany jest r\u00f3wnie\u017c mened\u017cerem zasob\u00f3w. Ka\u017cdy procesor, dysk i pami\u0119\u0107 to zasoby systemu, a zatem jedn\u0105 z r\u00f3l systemu operacyjnego jest zarz\u0105dzanie tymi zasobami, robi\u0105c to efektywnie, sprawiedliwie, a w zale\u017cno\u015bci od zadania, dla kt\u00f3rego ten system operacyjny zosta\u0142 zaprojektowany.<\/p>\n<h3>Wirtualizacja CPU<\/h3>\n<p>\nPrzyjrzyjmy si\u0119 nast\u0119puj\u0105cemu programowi:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Systemy operacyjne: Trzy \u0142atwe kawa\u0142ki. Cz\u0119\u015b\u0107 1: Wprowadzenie (t\u0142umaczenie)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNie wykonuje \u017cadnych specjalnych dzia\u0142a\u0144, w zasadzie to, co robi, to wywo\u0142uje funkcj\u0119 <b>spin<\/b>(), kt\u00f3rej zadaniem jest cykliczne sprawdzanie czasu i zwracanie po up\u0142ywie jednej sekundy. W ten spos\u00f3b nieustannie powtarza ci\u0105g, kt\u00f3ry u\u017cytkownik przekaza\u0142 jako argument.<br \/>\nUruchomimy ten program i przeka\u017cemy mu jako argument liter\u0119 \u201cA\u201d. Wynik nie jest szczeg\u00f3lnie interesuj\u0105cy \u2014 system po prostu wykonuje program, kt\u00f3ry okresowo wy\u015bwietla na ekranie liter\u0119 \u201cA\u201d.<br \/>\nTeraz spr\u00f3bujemy wariantu, w kt\u00f3rym uruchomionych jest wiele instancji tego samego programu, ale wy\u015bwietlaj\u0105cych r\u00f3\u017cne litery, aby by\u0142o to bardziej zrozumia\u0142e. W tym przypadku wynik b\u0119dzie nieco inny. Mimo \u017ce mamy tylko jeden procesor, program dzia\u0142a jednocze\u015bnie. Jak to mo\u017cliwe? A to dlatego, \u017ce system operacyjny, przy pomocy mo\u017cliwo\u015bci sprz\u0119tu, tworzy iluzj\u0119. Iluzj\u0119, \u017ce w systemie jest kilka wirtualnych procesor\u00f3w, zamieniaj\u0105c jeden fizyczny procesor w teoretycznie niesko\u0144czon\u0105 liczb\u0119, a tym samym umo\u017cliwiaj\u0105c programom wydawa\u0107 si\u0119, \u017ce dzia\u0142aj\u0105 jednocze\u015bnie. T\u0119 iluzj\u0119 nazywamy <i>Wirtualizacj\u0105 CPU<\/i>.<br \/>\n Taka sytuacja rodzi wiele pyta\u0144, na przyk\u0142ad, je\u015bli kilka program\u00f3w chce uruchomi\u0107 si\u0119 jednocze\u015bnie, to kt\u00f3ry z nich zostanie uruchomiony? Za to pytanie odpowiadaj\u0105 \u201epolityki\u201d OS. Polityki te s\u0105 wykorzystywane w wielu miejscach OS i odpowiadaj\u0105 na podobne pytania, a tak\u017ce s\u0105 podstawowymi mechanizmami, kt\u00f3re OS wdra\u017ca. St\u0105d wzi\u0119\u0142a si\u0119 rola OS jako zarz\u0105dcy zasob\u00f3w.<\/p>\n<h3>Wirtualizacja pami\u0119ci<\/h3>\n<p>\n Teraz przyjrzyjmy si\u0119 pami\u0119ci. <b>Fizyczny model pami\u0119ci w nowoczesnych systemach przedstawia si\u0119 jako tablica bajt\u00f3w<\/b>. Aby przeczyta\u0107 z pami\u0119ci, nale\u017cy wskaza\u0107 <b>adres kom\u00f3rki<\/b>, aby uzyska\u0107 do niej dost\u0119p. Aby zapisa\u0107 lub zaktualizowa\u0107 dane, nale\u017cy r\u00f3wnie\u017c wskaza\u0107 dane i adres kom\u00f3rki, do kt\u00f3rej maj\u0105 by\u0107 zapisane.<br \/>\n Dost\u0119p do pami\u0119ci nast\u0119puje nieprzerwanie w trakcie pracy programu. Program przechowuje w pami\u0119ci ca\u0142\u0105 swoj\u0105 struktur\u0119 danych i odwo\u0142uje si\u0119 do niej, wykonuj\u0105c r\u00f3\u017cne instrukcje. Instrukcje zreszt\u0105 r\u00f3wnie\u017c s\u0105 przechowywane w pami\u0119ci, wi\u0119c dost\u0119p do niej nast\u0119puje tak\u017ce przy ka\u017cdym zapytaniu o nast\u0119pn\u0105 instrukcj\u0119.<\/p>\n<h4>Wywo\u0142anie malloc()<\/h4>\n<p>Rozwa\u017cmy nast\u0119puj\u0105cy program, kt\u00f3ry alokuje obszar pami\u0119ci u\u017cywaj\u0105c wywo\u0142ania <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Systemy operacyjne: Trzy \u0142atwe kawa\u0142ki. Cz\u0119\u015b\u0107 1: Wprowadzenie (t\u0142umaczenie)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgram wykonuje kilka dzia\u0142a\u0144. Po pierwsze, alokuje pewn\u0105 ilo\u015b\u0107 pami\u0119ci (linia 7), nast\u0119pnie wy\u015bwietla adres przydzielonej kom\u00f3rki (linia 9) i zapisuje zero w pierwszym slocie przydzielonej pami\u0119ci. Nast\u0119pnie program wchodzi w p\u0119tl\u0119, w kt\u00f3rej inkrementuje warto\u015b\u0107 zapisan\u0105 w pami\u0119ci pod adresem w zmiennej \u2018p\u2019. Dodatkowo, wy\u015bwietla identyfikator w\u0142asnego procesu. <b>Identyfikator procesu jest unikalny dla ka\u017cdego uruchomionego procesu<\/b>. Uruchamiaj\u0105c kilka kopii, natkniemy si\u0119 na ciekawy rezultat: W pierwszym przypadku, je\u015bli nic nie zrobimy i po prostu uruchomimy kilka kopii, adresy b\u0119d\u0105 r\u00f3\u017cne. Ale to nie pasuje do naszej teorii! Zgadza si\u0119, poniewa\u017c w nowoczesnych dystrybucjach domy\u015blnie w\u0142\u0105czona jest funkcja randomizacji pami\u0119ci. Je\u015bli j\u0105 wy\u0142\u0105czymy, otrzymamy oczekiwany rezultat \u2013 adresy pami\u0119ci dw\u00f3ch jednocze\u015bnie dzia\u0142aj\u0105cych program\u00f3w b\u0119d\u0105 si\u0119 pokrywa\u0107. <\/p>\n<p><img decoding=\"async\" alt=\"Systemy operacyjne: Trzy \u0142atwe kawa\u0142ki. Cz\u0119\u015b\u0107 1: Wprowadzenie (t\u0142umaczenie)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>W rezultacie okazuje si\u0119, \u017ce dwa niezale\u017cne programy dzia\u0142aj\u0105 w swoich w\u0142asnych prywatnych przestrzeniach adresowych, kt\u00f3re z kolei s\u0105 mapowane przez system operacyjny na pami\u0119\u0107 fizyczn\u0105<\/b>. Dlatego wykorzystanie adres\u00f3w pami\u0119ci w ramach jednego programu nie wp\u0142ynie w \u017caden spos\u00f3b na inne, a ka\u017cdemu programowi wydaje si\u0119, \u017ce ma sw\u00f3j w\u0142asny kawa\u0142ek pami\u0119ci fizycznej, ca\u0142kowicie przekazany do jego dyspozycji. Rzeczywisto\u015b\u0107 jest jednak taka, \u017ce pami\u0119\u0107 fizyczna jest zasobem wsp\u00f3\u0142dzielonym, kt\u00f3rego zarz\u0105dzanie sprawuje system operacyjny.<\/p>\n<h3>Sp\u00f3jno\u015b\u0107<\/h3>\n<p>\nKolejny z wa\u017cnych temat\u00f3w w zakresie system\u00f3w operacyjnych to <b>sp\u00f3jno\u015b\u0107<\/b>. Termin ten jest u\u017cywany, gdy mowa o problemach w systemie, kt\u00f3re mog\u0105 wyst\u0119powa\u0107 podczas pracy z wieloma rzeczami jednocze\u015bnie w ramach jednego programu. Problemy ze sp\u00f3jno\u015bci\u0105 wyst\u0119puj\u0105 nawet w samym systemie operacyjnym. W poprzednich przyk\u0142adach z wirtualizacj\u0105 pami\u0119ci i procesora zrozumieli\u015bmy, \u017ce system operacyjny zarz\u0105dza wieloma rzeczami jednocze\u015bnie - uruchamia pierwszy proces, nast\u0119pnie drugi i tak dalej. Okaza\u0142o si\u0119, \u017ce takie zachowanie mo\u017ce prowadzi\u0107 do pewnych problem\u00f3w. Na przyk\u0142ad nowoczesne programy wielow\u0105tkowe napotykaj\u0105 na takie trudno\u015bci.<\/p>\n<p>Przyjrzyjmy si\u0119 nast\u0119puj\u0105cemu programowi:<\/p>\n<p> <img decoding=\"async\" alt=\"Systemy operacyjne: Trzy \u0142atwe kawa\u0142ki. Cz\u0119\u015b\u0107 1: Wprowadzenie (t\u0142umaczenie)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgram w funkcji g\u0142\u00f3wnej tworzy dwa w\u0105tki, u\u017cywaj\u0105c wywo\u0142ania <b>Pthread_create()<\/b>. W tym przyk\u0142adzie w\u0105tek mo\u017cna postrzega\u0107 jako funkcj\u0119 uruchomion\u0105 w tej samej przestrzeni pami\u0119ci obok innych funkcji, przy czym liczba uruchomionych jednocze\u015bnie funkcji zdecydowanie przekracza jedn\u0105. W tym przyk\u0142adzie ka\u017cdy w\u0105tek startuje i wykonuje funkcj\u0119 <b>worker(), kt\u00f3ra z kolei po prostu inkrementuje zmienn\u0105<\/b>,.<\/p>\n<p>. Uruchomimy ten program z argumentem 1000. Jak ju\u017c mog\u0142e\u015b si\u0119 domy\u015bli\u0107, rezultatem powinno by\u0107 2000, poniewa\u017c ka\u017cdy w\u0105tek inkrementowa\u0142 zmienn\u0105 1000 razy. Jednak to nie jest takie proste. Spr\u00f3bujmy uruchomi\u0107 program z liczb\u0105 powt\u00f3rze\u0144 rz\u0119du wi\u0119kszym o rz\u0105d.<\/p>\n<p><img decoding=\"async\" alt=\"Systemy operacyjne: Trzy \u0142atwe kawa\u0142ki. Cz\u0119\u015b\u0107 1: Wprowadzenie (t\u0142umaczenie)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPodaj\u0105c na wej\u015bcie liczb\u0119, na przyk\u0142ad 100000, spodziewamy si\u0119 zobaczy\u0107 na wyj\u015bciu liczb\u0119 200000. Jednak uruchamiaj\u0105c liczb\u0119 100000 kilka razy, nie tylko nie zobaczymy poprawnej odpowiedzi, ale otrzymamy r\u00f3\u017cne niepoprawne odpowiedzi. Rozwi\u0105zanie tego problemu le\u017cy w tym, \u017ce do zwi\u0119kszenia liczby potrzebne s\u0105 trzy operacje \u2014 odczytanie liczby z pami\u0119ci, inkrementacja i nast\u0119pnie zapis liczby z powrotem. Poniewa\u017c wszystkie te instrukcje nie s\u0105 realizowane atomowo (wszystkie jednocze\u015bnie), takie dziwne rzeczy mog\u0105 si\u0119 zdarzy\u0107. Problem ten nazywa si\u0119 w programowaniu <b>stan wy\u015bcigu<\/b>. Kiedy nieznane si\u0142y w nieznanym momencie mog\u0105 wp\u0142yn\u0105\u0107 na wykonanie jakiejkolwiek z Twoich operacji.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\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\/pl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47Systemy operacyjne: Trzy \u0142atwe cz\u0119\u015bci. Cz\u0119\u015b\u0107 1: Wprowadzenie (przek\u0142ad) | ProHoster","description":"Wprowadzenie do system\u00f3w operacyjnych. Cze\u015b\u0107, Habr! Chc\u0119 przedstawi\u0107 Waszej uwadze seri\u0119 artyku\u0142\u00f3w-przek\u0142ad\u00f3w jednej interesuj\u0105cej moim zdaniem literatury \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}