{"id":31229,"date":"2019-10-31T21:40:10","date_gmt":"2019-10-31T18:40:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-3-process-api-perevod\/"},"modified":"2019-10-31T21:40:10","modified_gmt":"2019-10-31T18:40:10","slug":"operating-systems-three-easy-pieces-part-3-process-api-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-perevod","title":{"rendered":"Syst\u00e8mes d'exploitation : Trois pi\u00e8ces faciles. Partie 3 : API de Processus (traduction)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduction aux syst\u00e8mes d'exploitation<\/h1>\n<p>\nBonjour, Habr ! Je souhaite vous pr\u00e9senter une s\u00e9rie d'articles traduits d'une litt\u00e9rature que je trouve int\u00e9ressante \u2014 OSTEP. Ce mat\u00e9riel explore en profondeur le fonctionnement des syst\u00e8mes d'exploitation de type Unix, en particulier \u2014 le travail avec les processus, les diff\u00e9rents planificateurs, la m\u00e9moire et d'autres composants similaires qui forment un syst\u00e8me d'exploitation moderne. Vous pouvez voir l'original de tous ces mat\u00e9riaux 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 :<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">original<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">original<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">ma propre adaptation<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nAutres parties :<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Partie 1 : Introduction<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446866\/\">Partie 2 : Abstraction : processus<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/447182\/\">Partie 3 : Introduction \u00e0 l'API des processus<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nVous 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><br \/>\n<b>Attention !<\/b> il y a un labo pour cette le\u00e7on ! voir <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">GitHub<\/a><\/noindex><\/p>\n<h2>API des processus<\/h2>\n<p>Consid\u00e9rons un exemple de cr\u00e9ation de processus dans un syst\u00e8me UNIX. Cela se fait \u00e0 travers deux appels syst\u00e8mes <b>fork()<\/b> et <b>exec()<\/b>.<\/p>\n<h3>Appel de fork()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : Trois pi\u00e8ces faciles. Partie 3 : API de Processus (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/c0c39726560e18a82ae05a31b43f92c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExaminons un programme qui effectue un appel fork(). Le r\u00e9sultat de son ex\u00e9cution sera le suivant.<\/p>\n<p><img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : Trois pi\u00e8ces faciles. Partie 3 : API de Processus (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/3ddddbaf5bbb38e9882827da0513805a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTout d'abord, nous entrons dans la fonction main() et ex\u00e9cutons l'affichage d'une cha\u00eene \u00e0 l'\u00e9cran. La cha\u00eene contient l'identifiant de processus qui est appel\u00e9 dans l'original <b>PID<\/b> ou identifiant de processus. Cet identifiant est utilis\u00e9 dans UNIX pour faire r\u00e9f\u00e9rence \u00e0 un processus. La commande suivante ex\u00e9cutera l'appel fork(). \u00c0 ce moment, une copie presque exacte du processus est cr\u00e9\u00e9e. Pour le syst\u00e8me d'exploitation, il semble que deux copies du m\u00eame programme sont en cours d'ex\u00e9cution, qui sortiront toutes deux de la fonction fork(). Le processus enfant nouvellement cr\u00e9\u00e9 (par rapport \u00e0 son processus parent) ne sera plus ex\u00e9cut\u00e9 \u00e0 partir de la fonction main(). Il convient de se rappeler que le processus enfant n'est pas une copie exacte du processus parent, en particulier il dispose de son propre espace d'adressage, de ses propres registres, de son propre pointeur vers les instructions ex\u00e9cutables, etc. Ainsi, la valeur retourn\u00e9e par l'appel de la fonction fork() sera diff\u00e9rente. En particulier, le processus parent recevra comme retour la valeur PID du processus enfant, tandis que l'enfant recevra une valeur \u00e9gale \u00e0 0. \u00c0 partir de ces codes de retour, il est possible de s\u00e9parer les processus et de faire en sorte que chacun ex\u00e9cute son propre travail. L'ex\u00e9cution de ce programme n'est pas strictement d\u00e9finie. Apr\u00e8s la s\u00e9paration en deux processus, le syst\u00e8me d'exploitation commence \u00e0 les surveiller et \u00e0 planifier leur ex\u00e9cution. Dans le cas d'une ex\u00e9cution sur un processeur monoc\u0153ur, un des processus poursuivra son travail, dans ce cas \u2014 le parent \u2014 puis le contr\u00f4le sera transf\u00e9r\u00e9 au processus enfant. Lors d'un red\u00e9marrage, la situation peut \u00eatre diff\u00e9rente.<\/p>\n<h3>Appel wait()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : Trois pi\u00e8ces faciles. Partie 3 : API de Processus (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/abb10671424f1889fbbb3facae739029.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nConsid\u00e9rons le programme suivant. Dans ce programme, gr\u00e2ce \u00e0 l'appel <b>wait()<\/b> le processus parent attendra toujours la fin du processus enfant. Dans ce cas, nous obtiendrons une sortie de texte strictement d\u00e9finie \u00e0 l'\u00e9cran.<\/p>\n<p><img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : Trois pi\u00e8ces faciles. Partie 3 : API de Processus (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/7e8ea54531b7717b7b42802550afd27b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Appel exec()<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Syst\u00e8mes d&#039;exploitation : Trois pi\u00e8ces faciles. Partie 3 : API de Processus (traduction)\" src=\"\/wp-content\/uploads\/2019\/04\/dfe3a41c03bc35fd716a1b4c3af68c2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nConsid\u00e9rons l'appel <b>exec()<\/b>. Cet appel syst\u00e8me est utile lorsque nous souhaitons ex\u00e9cuter un programme compl\u00e8tement diff\u00e9rent. Ici, nous allons appeler <b>execvp()<\/b> pour lancer le programme wc, qui est un programme de comptage de mots. Que se passe-t-il lors de l'appel d'exec()? Cette fonction re\u00e7oit en arguments le nom du fichier ex\u00e9cutable et quelques param\u00e8tres. Ensuite, le code et les donn\u00e9es statiques de ce fichier ex\u00e9cutable sont charg\u00e9s et le segment de code actuel est \u00e9cras\u00e9. Les autres zones de m\u00e9moire, telles que la pile et le tas, sont r\u00e9initialis\u00e9es. Ensuite, le syst\u00e8me d'exploitation ex\u00e9cute simplement le programme, lui passant un ensemble d'arguments. Ainsi, nous n'avons pas cr\u00e9\u00e9 un nouveau processus, nous avons simplement transform\u00e9 le programme actuellement en cours d'ex\u00e9cution en un autre programme en cours d'ex\u00e9cution. Apr\u00e8s l'appel d'exec() dans l'enfant, il semble que le programme initial n'ait en fait jamais \u00e9t\u00e9 lanc\u00e9.<\/p>\n<p>Cette complexit\u00e9 dans le lancement est tout \u00e0 fait normale pour le shell Unix, et permet \u00e0 ce shell d'ex\u00e9cuter du code apr\u00e8s l'appel <b>fork()<\/b>, mais avant l'appel <b>exec()<\/b>. Un exemple de ce type de code pourrait \u00eatre l'ajustement de l'environnement du shell en fonction des besoins du programme \u00e0 ex\u00e9cuter avant son lancement imm\u00e9diat.<\/p>\n<p><b>Shell<\/b> \u2014 c'est simplement un programme utilisateur. Il vous affiche une ligne d'invite et attend que vous y saisissiez quelque chose. Dans la plupart des cas, si vous y saisissez le nom d'un programme, le shell trouvera son emplacement, appellera la m\u00e9thode fork(), puis, pour cr\u00e9er un nouveau processus, appellera l'un des types d'exec() et attendra son ex\u00e9cution via l'appel wait(). Lorsque le processus enfant se termine, le shell revient de l'appel wait() et affiche \u00e0 nouveau la ligne d'invite, attendant la saisie de la prochaine commande.<\/p>\n<p>La s\u00e9paration de fork() &amp; exec() permet au shell de faire les choses suivantes, par exemple :<br \/>\n<b>wc file &gt; new_file.<\/b><\/p>\n<p>Dans cet exemple, la sortie du programme wc est redirig\u00e9e vers un fichier. La fa\u00e7on dont le shell y parvient est assez simple : lors de la cr\u00e9ation du processus enfant avant l'appel de <b>exec()<\/b>, le shell ferme le flux de sortie standard et ouvre le fichier <b>new_file<\/b>, ainsi, toute la sortie du programme lanc\u00e9 par la suite <b>wc<\/b> sera redirig\u00e9e vers le fichier au lieu de l'\u00e9cran.<\/p>\n<p><b>Le pipe Unix<\/b> est r\u00e9alis\u00e9 de mani\u00e8re similaire, sauf qu'il utilise l'appel pipe(). Dans ce cas, le flux de sortie d'un processus sera connect\u00e9 \u00e0 une queue de pipe, situ\u00e9e dans le noyau, \u00e0 laquelle sera \u00e9galement connect\u00e9 le flux d'entr\u00e9e d'un autre processus.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/447182\/\">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":23195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31229","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\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\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-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 3: Process API (\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\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-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:40:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:40:10+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 pi\u00e8ces faciles. Partie 3 : API de processus (traduction) | ProHoster","description":"Introduction aux syst\u00e8mes d'exploitation. Bonjour, Habr ! Je veux vous pr\u00e9senter une s\u00e9rie d'articles traduits d'une litt\u00e9rature qui, \u00e0 mon avis, est int\u00e9ressante \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-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 3: Process API (\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\/fr\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-3-process-api-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:40:10+00:00","article:modified_time":"2019-10-31T18:40:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31229","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 05:09:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:20:31","updated":"2026-01-21 05:09: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\/31229","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=31229"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/31229\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/23195"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=31229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=31229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=31229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}