{"id":36,"date":"2014-09-17T02:07:58","date_gmt":"2014-09-17T02:07:58","guid":{"rendered":"https:\/\/www.uniessa.hiperlogic.com.br\/?p=36"},"modified":"2014-09-17T02:10:28","modified_gmt":"2014-09-17T02:10:28","slug":"processos-no-unix-linux","status":"publish","type":"post","link":"https:\/\/www.uniessa.hiperlogic.com.br\/?p=36","title":{"rendered":"Processos no Unix (Linux)"},"content":{"rendered":"<p><strong>Objetivos:<\/strong><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Apresentar a estrutura de processos no Unix<\/li>\n<li>Descrever as principais fun\u00e7\u00f5es associadas \u00e0 ger\u00eancia de processos<\/li>\n<li>Discutir quest\u00f5es sobre estruturas de dados relacionadas e comunica\u00e7\u00e3o entre processos<\/li>\n<\/ul>\n<p><strong>Unix: Um pouco de Hist\u00f3ria<\/strong><\/p>\n<ul>\n<li>Bell Labs, Ken Thompson, Dennis Ritchie<\/li>\n<li>1971: PDP-7, assembly<\/li>\n<li>1972: PDP 11: C &#8212; c\u00f3digo fonte dispon\u00edvel<\/li>\n<li>197?: Univ. de Berkeley? Mem. Virtual, TCP\/IP<\/li>\n<li>1980: AT&amp;T &#8211; System V<\/li>\n<li>POSIX: Padr\u00e3o de portabilidade<\/li>\n<\/ul>\n<p><strong>Vers\u00f5es Atuais<\/strong><\/p>\n<ul>\n<li>Sun Solaris (Open Solaris): Um dos mais est\u00e1veis<\/li>\n<li>SCO Unix: Um dos mais antigos<\/li>\n<li>Linux: Um dos mais populares<\/li>\n<li>freeBSD: Um dos mais eficientes<\/li>\n<li>netBSD: o com mais plataformas<\/li>\n<li>IBM AIX: um dos mais controversos<\/li>\n<li>Apple Mac OS X: um dos mais diferentes<\/li>\n<\/ul>\n<p><strong>Unix: Estrutura geral do sistema<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-37\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.21-300x161.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.36.21\" width=\"300\" height=\"161\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.21-300x161.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.21.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Unix: O Processo de Boot<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.52.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-38\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.52-300x189.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.36.52\" width=\"300\" height=\"189\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.52-300x189.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.36.52.png 447w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Unix: O processo de boot (Bootloader)<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-40\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.21-300x241.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.37.21\" width=\"300\" height=\"241\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.21-300x241.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.21.png 424w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Unix: O processo de Boot no Kernel<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.36.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-39\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.36-300x225.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.37.36\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.36-300x225.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.37.36.png 402w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>Unix: O processo de boot (Init)<\/strong><\/p>\n<ul>\n<li>Primeiro a executar<\/li>\n<li>Nunca termina (Causa\u00a0<em>Shutdown<\/em> se morrer)<\/li>\n<li>L\u00ea arquivos de configura\u00e7\u00e3o<\/li>\n<li>Dispara demais processos<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Unix: Processos<\/strong><\/p>\n<ul>\n<li>Hierarquia de processos pais e filhos\n<ul>\n<li><strong>fork():\u00a0<\/strong>Cria uma c\u00f3pia do processo pai<\/li>\n<li><strong>exec():<\/strong> Substitui o processo corrente por um novo programa<\/li>\n<\/ul>\n<\/li>\n<li>V\u00e1rias formas de comunica\u00e7\u00e3o entre processos: Mem\u00f3ria, Sem\u00e1foros, Pipes, Msgs<\/li>\n<li>Processos, Threads de aplica\u00e7\u00e3o (pthreads)<\/li>\n<li>Alguns tem Threads de n\u00facleo (Solaris, Linux)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Cria\u00e7\u00e3o de Processos no Unix<\/strong><\/p>\n<ul>\n<li>fork()\n<ul>\n<li>S.O. cria um novo PCB<\/li>\n<li>Cria-se uma c\u00f3pia na mem\u00f3ria do processo pai, mas com novo PID<\/li>\n<li>Recursos de E\/S s\u00e3o compartilhados<\/li>\n<\/ul>\n<\/li>\n<li>exec()\n<ul>\n<li>Mant\u00e9m o PID<\/li>\n<li>SO busca um programa do disco, o carrega na mem\u00f3ria e sobre a \u00e1rea do programa que fez a chamada<\/li>\n<li>Execu\u00e7\u00e3o passa para o in\u00edcio do programa principal<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Cria\u00e7\u00e3o de processos no Unix: Exemplo<\/strong><\/p>\n<p>if((child_pid=<span style=\"color: #0000ff;\">fork<\/span>())&gt;0) {<\/p>\n<p><span style=\"color: #339966;\">\/*Aqui \u00e9 o processo pai*\/<\/span><\/p>\n<p>} else<\/p>\n<p>if(child_pid==0) {<\/p>\n<p><span style=\"color: #339966;\">\/\/Estamos no processo filho<\/span><\/p>\n<p>if(execl(programfile,\/*&#8230;*\/)&lt;0){<\/p>\n<p>perror(&#8220;<span style=\"color: #ff0000;\">Erro no Execl<\/span>&#8220;);<\/p>\n<p><span style=\"color: #0000ff;\">exit<\/span>(1);<\/p>\n<p>}<\/p>\n<p>fprintf(stderr,&#8221;<span style=\"color: #ff0000;\">N\u00e3o chega aqui<\/span>&#8220;);<\/p>\n<p>} else {<\/p>\n<p>perror(&#8220;<span style=\"color: #ff0000;\">Erro no Fork<\/span>&#8220;);<\/p>\n<p><span style=\"color: #0000ff;\">exit<\/span>(2);<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Unix: Processos (A partir do Init) 1<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.32.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-41\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.32-300x156.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.57.32\" width=\"300\" height=\"156\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.32-300x156.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.32.png 307w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Unix: Processos (A partir do Init) 2<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.36.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-44\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.36-300x200.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.57.36\" width=\"300\" height=\"200\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.36-300x200.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.36.png 318w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Unix: Processos (A partir do Init) 3<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-43\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.41-300x176.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.57.41\" width=\"300\" height=\"176\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.41-300x176.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.41.png 402w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Unix: Processos (A partir do Init) 4<\/strong><\/p>\n<p><a href=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.53.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-42\" src=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.53-300x178.png\" alt=\"Captura de Tela 2014-09-16 \u00e0s 22.57.53\" width=\"300\" height=\"178\" srcset=\"https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.53-300x178.png 300w, https:\/\/www.uniessa.hiperlogic.com.br\/wp-content\/uploads\/2014\/09\/Captura-de-Tela-2014-09-16-\u00e0s-22.57.53.png 391w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objetivos: &nbsp; Apresentar a estrutura de processos no Unix Descrever as principais fun\u00e7\u00f5es associadas \u00e0 ger\u00eancia de processos Discutir quest\u00f5es sobre estruturas de dados relacionadas e comunica\u00e7\u00e3o entre processos Unix: Um pouco de Hist\u00f3ria Bell Labs, Ken Thompson, Dennis Ritchie 1971: PDP-7, assembly 1972: PDP 11: C &#8212; c\u00f3digo fonte dispon\u00edvel 197?: Univ. de Berkeley? [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[11],"class_list":["post-36","post","type-post","status-publish","format-standard","hentry","category-so","tag-processos"],"_links":{"self":[{"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=\/wp\/v2\/posts\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=36"}],"version-history":[{"count":1,"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=\/wp\/v2\/posts\/36\/revisions"}],"predecessor-version":[{"id":45,"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=\/wp\/v2\/posts\/36\/revisions\/45"}],"wp:attachment":[{"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.uniessa.hiperlogic.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}