Criaçào de Processos
Autor: Cios Informática | Publicado: 2011-06-27T18:37:00-07:00

<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->  
    &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; O SO precisa de algum modo assegurar a existência de todos os seus processos. Em sistema simples,&nbsp; quando é executado somente uma ação, por exemplo sistemas de microondas, os processos estão sempre existente quando o microondas e ligado. Já nos sistemas gerais, os processo devem ser criados e terminados quando for necessário.&nbsp;&nbsp;<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->    Há 4 eventos que fazem com que os processos sejam criados:  1.&nbsp;Inicio do sistema   
2.Execução de chamadas de sistemas de criação de processo por outro processo em execução 
3.Uma requisição de usuário 
4.Inicio de Job&nbsp; em lote.&nbsp;
&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Daemons    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Quando o SO é iniciado existem processo em primeiro plano, que interagem diretamente com o usuário e outros em segundo plano que executa funções especificas para o usuário ou sistema operacional. A este processos que ficam em segundo planos chamamos de Daemons.&nbsp;&nbsp;<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Termino de Processos &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Depois de criado, um processo executa e faz o trabalho, como nada e para sempre, mas cedo ou mais tarde ele terminara. Assim temos 4 condições para que o processo termine. &nbsp; Saída Normal 
Saída por Erro 
Erro fatal 
Cancelamento por&nbsp; outro processo&nbsp; 
&nbsp;Na maioria das vezes, os processos terminal porque já executaram o seu trabalho.               &nbsp;Condições para terminar Processos
<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->    O segundo motivo é quando o processo encontra um erro no programa ou ação do usuário. Então sai normalmente.&nbsp;&nbsp; Exemplo: Usuário querendo compilar um arquivo que não existe.  &nbsp;A terceira razão para o termino de um processo e a execução de um erro fatal no programa. Uma instrução ilegal ou cálculos de divisão por zero  &nbsp;A ultima razão é quando um outro processo e acional pelo sistema operacional para cancelar um processo anterior.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ex.: Kill e gerenciador de tarefas.&nbsp;&nbsp;Estados de um Processo    &nbsp;Muitas vezes um processo, por mais que seja um entidade independente, precisa interagir com outros processos. Por exemplo um processo gerando entradas para outro processo.  &nbsp;Ex.: O interpretador de comando&nbsp; executando a linha abaixo: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cat arq1 car2 car 3 | grep tree&nbsp;&nbsp;<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->    Assim, um processo pode assumir três estados:  &nbsp;Em Execução   
Pronto  
Bloqueado
&nbsp;  
<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->    Implementação de Processo&nbsp;&nbsp; Para implementar um processo, o SO mantém uma estrutura chamada tabela de processos, com a entrada de cada processo. Estas entradas contem informações sobre:  1.&nbsp;Estado do Processo   
2.Contador de Programa 
3.Ponteiro da pilha 
4.Alocação de memória 
5.Estado de seus arquivos abertos 
6.Escalonamento 
7.Tudo sobre o processo
<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Implementação de Processo&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cada dispositivo e a CPU estão associadas&nbsp; a uma alocação na memória RAM,&nbsp; chamado de vetor de interrupções, que contem o endereço de cada interrupção.&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Então quando um processo é criado, um contador de programa aponta para um endereço e seta o estado do processo.&nbsp;<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Implementação de Processo  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Se um processo esta em execução&nbsp; e ocorre uma interrupção de disco, o Contado de Programa grava o estado do processo e os registradores Ativos. O hardware de interrupção os coloca em uma pilha.   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Depois a CPU desvia a sua atenção para o endereço do dispositivo que foi&nbsp; acionado. Neste momento, o controle passa ao sistema o sistema operacional assume.&nbsp;<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->  
      Gerencia de Processo      Gerência de Memória      Gerencia de Arquivos  
      Registradores Contador de Programas Palavra de estado do programa    Ponteiro da Pilha Prioridade Parâmetros de escalonamento    Identificador de processo Processo Pai Grupo de Processo Processo pai Grupo ne      Ponteiro para o segmento de código Ponteiro para segmento de dados Ponteiro para segmento de pilha      Diretório raiz Diretório de Trabalho Descrito de arquivos Identificador do usuário    Identificador do grupo  


&nbsp;<!--[if !mso]> 
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
 <![endif]--><!--[if !ppt]--><!--[endif]-->
&nbsp;