{"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\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Syst\u00e8mes d'exploitation : trois pi\u00e8ces faciles. Partie 1 : Introduction (traduction)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduction aux syst\u00e8mes d'exploitation<\/h1>\n<p>Bonjour, Habr! Je souhaite vous pr\u00e9senter une s\u00e9rie d'articles traduits d'une litt\u00e9rature qui, \u00e0 mon avis, est int\u00e9ressante \u2014 OSTEP. Dans ce mat\u00e9riau, nous examinons en profondeur le fonctionnement des syst\u00e8mes d'exploitation de type Unix, notamment la gestion des processus, les diff\u00e9rents planificateurs, la m\u00e9moire et d'autres composants similaires qui constituent un syst\u00e8me d'exploitation moderne. Vous pouvez consulter l'original de tous les documents ici. <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">ici<\/a><\/noindex>. Je vous demande de prendre en compte que la traduction a \u00e9t\u00e9 r\u00e9alis\u00e9e de mani\u00e8re non professionnelle (assez libre), mais j'esp\u00e8re que le sens g\u00e9n\u00e9ral a \u00e9t\u00e9 conserv\u00e9.<\/p>\n<p>Les travaux pratiques sur ce sujet peuvent \u00eatre trouv\u00e9s ici :<br \/>\n \u2014 original : <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html<\/a><\/noindex><br \/>\n \u2014 original : <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 ma propre adaptation : <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>Vous pouvez \u00e9galement visiter ma cha\u00eene sur <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>Fonctionnement du programme<\/h3>\n<p>\nQue se passe-t-il lorsque n'importe quel programme fonctionne ? Un programme lanc\u00e9 effectue une t\u00e2che simple \u2014 il ex\u00e9cute des instructions. Chaque seconde, des millions, voire des milliards d'instructions sont extraites de la m\u00e9moire vive par le processeur, qui les d\u00e9code (par exemple, il reconna\u00eet \u00e0 quel type appartiennent ces instructions) et les ex\u00e9cute. Cela peut \u00eatre l'addition de deux nombres, l'acc\u00e8s \u00e0 la m\u00e9moire, la v\u00e9rification d'une condition, le passage \u00e0 une fonction, et ainsi de suite. Apr\u00e8s l'ex\u00e9cution d'une instruction, le processeur passe \u00e0 l'ex\u00e9cution de la suivante. Et ainsi, instruction apr\u00e8s instruction, elles s'ex\u00e9cutent jusqu'\u00e0 ce que le programme se termine.<br \/>\nCet exemple est naturellement simplifi\u00e9 \u2014 en r\u00e9alit\u00e9, pour acc\u00e9l\u00e9rer le fonctionnement du processeur, le mat\u00e9riel moderne permet d'ex\u00e9cuter les instructions hors s\u00e9quence, de calculer les r\u00e9sultats possibles, d'ex\u00e9cuter les instructions en parall\u00e8le et d'autres astuces similaires.<\/p>\n<h3>Mod\u00e8le de calcul de Von Neumann<\/h3>\n<p>\nLa forme simplifi\u00e9e de fonctionnement que nous avons d\u00e9crite ressemble au mod\u00e8le de calcul de Von Neumann. <i>Von Neumann est l'un des pionniers des syst\u00e8mes informatiques, et il est \u00e9galement l'un des auteurs de la th\u00e9orie des jeux.<\/i>Pendant l'ex\u00e9cution d'un programme, de nombreux autres \u00e9v\u00e9nements se produisent, de nombreux autres processus et logiques externes fonctionnent, dont le principal objectif est de simplifier le d\u00e9marrage, le fonctionnement et la maintenance du syst\u00e8me.<br \/>\nIl existe un ensemble de logiciels responsables de la facilit\u00e9 de lancement des programmes (ou m\u00eame permettant de faire fonctionner plusieurs programmes simultan\u00e9ment). Il permet aux programmes de partager la m\u00eame m\u00e9moire et d'interagir avec divers appareils. Cet ensemble de logiciels est essentiellement ce que l'on appelle un syst\u00e8me d'exploitation, et sa t\u00e2che principale est de s'assurer que le syst\u00e8me fonctionne correctement et efficacement, tout en facilitant la gestion de celui-ci. <\/p>\n<h2>Syst\u00e8me d'exploitation<\/h2>\n<p>\n<b>Un syst\u00e8me d'exploitation, abr\u00e9g\u00e9 en OS, est un ensemble de programmes interconnect\u00e9s, destin\u00e9 \u00e0 g\u00e9rer les ressources de l'ordinateur et \u00e0 organiser l'interaction entre l'utilisateur et l'ordinateur.<\/b>. <br \/>\nLe syst\u00e8me d'exploitation atteint son efficacit\u00e9 principalement gr\u00e2ce \u00e0 la technique la plus importante : la <b>virtualisation.<\/b>. L'OS interagit avec les ressources physiques (processeur, m\u00e9moire, disque, etc.) et les transforme en une forme plus g\u00e9n\u00e9rale, offrant plus de fonctionnalit\u00e9s et \u00e9tant plus simple \u00e0 utiliser. Ainsi, pour une compr\u00e9hension g\u00e9n\u00e9rale, on peut comparer tr\u00e8s grossi\u00e8rement un syst\u00e8me d'exploitation \u00e0 une machine virtuelle.<br \/>\nPour permettre aux utilisateurs de donner des commandes au syst\u00e8me d'exploitation et ainsi utiliser les capacit\u00e9s de la machine virtuelle (comme : lancer un programme, allouer de la m\u00e9moire, acc\u00e9der \u00e0 un fichier, etc.), le syst\u00e8me d'exploitation fournit une interface appel\u00e9e <b>API<\/b> (interface de programmation d'applications) \u00e0 laquelle on peut faire des appels. Un syst\u00e8me d'exploitation typique permet de r\u00e9aliser des centaines d'appels syst\u00e8me.<br \/>\nEnfin, puisque la virtualisation permet \u00e0 de nombreux programmes de fonctionner (partageant ainsi le CPU) tout en acc\u00e9dant simultan\u00e9ment \u00e0 leurs instructions et donn\u00e9es (partageant ainsi la m\u00e9moire), ainsi qu'en acc\u00e9dant aux disques (partageant ainsi les p\u00e9riph\u00e9riques d'entr\u00e9e\/sortie), le syst\u00e8me d'exploitation est \u00e9galement appel\u00e9 gestionnaire de ressources. Chaque processeur, disque et m\u00e9moire constitue une ressource du syst\u00e8me et, par cons\u00e9quent, l'une des fonctions du syst\u00e8me d'exploitation est de g\u00e9rer ces ressources de mani\u00e8re efficace, \u00e9quitable ou, au contraire, selon la t\u00e2che pour laquelle ce syst\u00e8me d'exploitation a \u00e9t\u00e9 con\u00e7u.<\/p>\n<h3>Virtualisation du CPU<\/h3>\n<p>\nConsid\u00e9rons le programme suivant :<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : trois pi\u00e8ces faciles. Partie 1 : Introduction (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl n'ex\u00e9cute pas d'actions particuli\u00e8res, en fait tout ce qu'il fait est d'appeler la fonction <b>spin<\/b>(), dont la t\u00e2che est de v\u00e9rifier cycliquement le temps et de retourner apr\u00e8s qu'une seconde se soit \u00e9coul\u00e9e. Ainsi, il r\u00e9p\u00e8te ind\u00e9finiment la cha\u00eene que l'utilisateur a transmise en tant qu'argument.<br \/>\nLan\u00e7ons ce programme et passons-lui le caract\u00e8re \u201cA\u201d en argument. Le r\u00e9sultat n'est pas particuli\u00e8rement int\u00e9ressant : le syst\u00e8me ex\u00e9cute simplement un programme qui affiche p\u00e9riodiquement le caract\u00e8re \u201cA\u201d.<br \/>\nEssayons maintenant un sc\u00e9nario o\u00f9 plusieurs instances du m\u00eame programme s'ex\u00e9cutent, mais qui affichent diff\u00e9rentes lettres pour plus de clart\u00e9. Dans ce cas, le r\u00e9sultat sera quelque peu diff\u00e9rent. M\u00eame si nous avons un seul processeur, le programme s'ex\u00e9cute simultan\u00e9ment. Comment cela est-il possible ? C'est que le syst\u00e8me d'exploitation, avec l'aide des capacit\u00e9s mat\u00e9rielles, cr\u00e9e une illusion. L'illusion qu'il existe plusieurs processeurs virtuels dans le syst\u00e8me, transformant un processeur physique en un nombre th\u00e9oriquement infini, permettant ainsi aux programmes de sembler s'ex\u00e9cuter simultan\u00e9ment. Cette illusion est appel\u00e9e <i>Virtualisation du CPU<\/i>.<br \/>\n Un tel tableau soul\u00e8ve de nombreuses questions, par exemple, lorsque plusieurs programmes souhaitent s'ex\u00e9cuter simultan\u00e9ment, lequel sera r\u00e9ellement ex\u00e9cut\u00e9 ? Ce probl\u00e8me est g\u00e9r\u00e9 par les \u00ab politiques \u00bb du syst\u00e8me d'exploitation. Les politiques sont utilis\u00e9es dans de nombreux domaines du syst\u00e8me d'exploitation et r\u00e9pondent \u00e0 ce type de questions, servant \u00e9galement de m\u00e9canismes de base que le syst\u00e8me d'exploitation impl\u00e9mente. D'o\u00f9 le r\u00f4le du syst\u00e8me d'exploitation en tant que gestionnaire de ressources.<\/p>\n<h3>Virtualisation de la m\u00e9moire<\/h3>\n<p>\n Examinons maintenant la m\u00e9moire. <b>Le mod\u00e8le physique de la m\u00e9moire dans les syst\u00e8mes modernes est pr\u00e9sent\u00e9 comme un tableau d'octets<\/b>. Pour lire la m\u00e9moire, il faut sp\u00e9cifier un <b>adresse de cellule<\/b>, afin d'y acc\u00e9der. Pour \u00e9crire ou mettre \u00e0 jour des donn\u00e9es, il faut \u00e9galement sp\u00e9cifier les donn\u00e9es et l'adresse de la cellule dans laquelle les enregistrer.<br \/>\n Les acc\u00e8s \u00e0 la m\u00e9moire se produisent en permanence pendant l'ex\u00e9cution du programme. Le programme stocke dans la m\u00e9moire toute sa structure de donn\u00e9es et y acc\u00e8de en ex\u00e9cutant diverses instructions. Les instructions sont \u00e9galement stock\u00e9es dans la m\u00e9moire, c'est pourquoi l'acc\u00e8s \u00e0 celle-ci se produit \u00e9galement \u00e0 chaque demande pour la prochaine instruction.<\/p>\n<h4>Appel de malloc()<\/h4>\n<p>Consid\u00e9rons le programme suivant qui alloue de la m\u00e9moire en utilisant un appel <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : trois pi\u00e8ces faciles. Partie 1 : Introduction (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe programme effectue plusieurs actions. Tout d'abord, il alloue une certaine quantit\u00e9 de m\u00e9moire (ligne 7), puis il affiche l'adresse de l'emplacement m\u00e9moire allou\u00e9 (ligne 9), et enfin il \u00e9crit z\u00e9ro dans le premier slot de la m\u00e9moire allou\u00e9e. Ensuite, le programme entre dans une boucle o\u00f9 il incr\u00e9mente la valeur stock\u00e9e en m\u00e9moire \u00e0 l'adresse de la variable \"p\". Il affiche \u00e9galement l'identifiant de son propre processus. <b>L'identifiant de processus est unique pour chaque processus en cours d'ex\u00e9cution<\/b>. Si nous ex\u00e9cutons plusieurs copies, nous allons constater un r\u00e9sultat int\u00e9ressant : Dans le premier cas, si nous ne faisons rien d'autre que d'ex\u00e9cuter plusieurs copies, les adresses seront diff\u00e9rentes. Mais cela ne cadre pas avec notre th\u00e9orie ! En effet, puisque les distributions modernes incluent par d\u00e9faut la fonction de randomisation de la m\u00e9moire. Si nous la d\u00e9sactivons, nous obtiendrons le r\u00e9sultat attendu : les adresses m\u00e9moire de deux programmes fonctionnant simultan\u00e9ment co\u00efncideront. <\/p>\n<p><img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : trois pi\u00e8ces faciles. Partie 1 : Introduction (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>En fin de compte, il s'av\u00e8re que deux programmes ind\u00e9pendants fonctionnent avec leurs propres espaces d'adresses priv\u00e9s, qui sont \u00e0 leur tour mapp\u00e9s par le syst\u00e8me d'exploitation dans la m\u00e9moire physique<\/b>. Par cons\u00e9quent, l'utilisation des adresses m\u00e9moire dans un m\u00eame programme n'affectera en rien les autres, et chaque programme a l'impression de disposer de son propre espace de m\u00e9moire physique, enti\u00e8rement \u00e0 sa disposition. La r\u00e9alit\u00e9, cependant, est que la m\u00e9moire physique est une ressource partag\u00e9e, dont la gestion est assur\u00e9e par le syst\u00e8me d'exploitation.<\/p>\n<h3>Coh\u00e9rence<\/h3>\n<p>\nUn autre sujet important dans le cadre des syst\u00e8mes d'exploitation est la <b>coh\u00e9rence<\/b>. Ce terme est utilis\u00e9 lorsqu'il s'agit de probl\u00e8mes dans le syst\u00e8me qui peuvent survenir lors de l'ex\u00e9cution de plusieurs op\u00e9rations simultan\u00e9ment au sein d'un m\u00eame programme. Des probl\u00e8mes de coh\u00e9rence peuvent se produire m\u00eame dans le syst\u00e8me d'exploitation lui-m\u00eame. Dans les exemples pr\u00e9c\u00e9dents de virtualisation de la m\u00e9moire et du processeur, nous avons compris que le syst\u00e8me d'exploitation g\u00e8re de nombreuses choses en m\u00eame temps \u2014 il ex\u00e9cute le premier processus, puis le second, et ainsi de suite. Il s'est av\u00e9r\u00e9 que ce comportement peut entra\u00eener certains probl\u00e8mes. Par exemple, les programmes multithread modernes rencontrent de telles difficult\u00e9s.<\/p>\n<p>Consid\u00e9rons le programme suivant :<\/p>\n<p> <img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : trois pi\u00e8ces faciles. Partie 1 : Introduction (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe programme dans la fonction principale cr\u00e9e deux threads en utilisant l'appel <b>Pthread_create()<\/b>. Dans cet exemple, on peut penser au thread comme \u00e0 une fonction ex\u00e9cut\u00e9e dans un m\u00eame espace m\u00e9moire, \u00e0 c\u00f4t\u00e9 d'autres fonctions, avec un nombre de fonctions lanc\u00e9es simultan\u00e9ment manifestement sup\u00e9rieur \u00e0 un. Dans cet exemple, chaque thread d\u00e9marre et ex\u00e9cute la fonction <b>worker() qui, \u00e0 son tour, incr\u00e9mente simplement une variable.<\/b>,.<\/p>\n<p>Nous allons ex\u00e9cuter ce programme avec l'argument 1000. Comme vous l'avez probablement devin\u00e9, le r\u00e9sultat devrait \u00eatre 2000, car chaque thread a incr\u00e9ment\u00e9 la variable 1000 fois. Cependant, ce n'est pas si simple. Essayons de lancer le programme avec un nombre de r\u00e9p\u00e9titions beaucoup plus \u00e9lev\u00e9.<\/p>\n<p><img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : trois pi\u00e8ces faciles. Partie 1 : Introduction (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn entrant un nombre, par exemple 100000, nous nous attendons \u00e0 voir en sortie le nombre 200000. Cependant, en ex\u00e9cutant le nombre 100000 plusieurs fois, nous ne verrons non seulement pas la bonne r\u00e9ponse, mais nous obtiendrons \u00e9galement des r\u00e9ponses incorrectes diff\u00e9rentes. Le secret r\u00e9side dans le fait que pour incr\u00e9menter un nombre, il faut trois op\u00e9rations : extraire le nombre de la m\u00e9moire, incr\u00e9menter et ensuite \u00e9crire le nombre \u00e0 nouveau. Comme toutes ces instructions ne sont pas effectu\u00e9es de mani\u00e8re atomique (toutes en m\u00eame temps), des choses \u00e9tranges peuvent se produire. Ce probl\u00e8me est appel\u00e9 en programmation <b>race condition \u2014 condition de concurrence<\/b>. Quand des forces inconnues \u00e0 des moments inconnus peuvent influencer l'ex\u00e9cution de certaines de vos op\u00e9rations.<br \/>\n<br \/>Source : <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.2 - 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\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Syst\u00e8mes d'exploitation : Trois morceaux faciles. Partie 1 : Introduction (traduction) | ProHoster","description":"Introduction aux syst\u00e8mes d'exploitation Bonjour, Habr ! Je souhaite vous pr\u00e9senter une s\u00e9rie d'articles traduits d'une litt\u00e9rature int\u00e9ressante \u00e0 mon sens \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}