Sistemas  
 
Rede de conhecimento computador >> Sistemas >> Unix >> Content
Como os processos são criados e excluídos no sistema operacional UNIX?
Os processos em sistemas operacionais do tipo UNIX (incluindo Linux, MacOS, BSD etc.) são criados e excluídos por meio de uma combinação de chamadas do sistema e mecanismos internos do kernel.

Criação do processo:

A principal maneira como um novo processo é criado é através da chamada do sistema `Fork ()`. `fork ()` cria uma cópia quase idêntica do processo de chamada (o processo * pai *). Tanto o pai e o processo recém -criado * Child * continuam a execução a partir do ponto da chamada `fork ()`. A principal diferença é o valor de retorno de `fork ()`:

* no processo pai: `Fork ()` Retorna o ID do processo (PID) do processo filho. Este PID é um identificador único para a criança.
* no processo infantil: `fork ()` retorna 0.

Após `fork ()`, os processos pais e filhos normalmente seguem diferentes caminhos de execução. O processo infantil geralmente usa a família de chamadas da família `Exec () '(` Execl`, `Execv`,` Execvp` etc.) para substituir sua imagem atual por um novo programa. `Exec ()` substitui o espaço de memória da criança com o código e os dados do novo programa. Se a criança não usar `Exec ()`, continuará executando o mesmo código que o pai, criando um clone verdadeiro.

Outras maneiras pelas quais os processos são criados incluem:

* `vFork ()` (menos comum e potencialmente problemático): Semelhante ao `fork ()`, mas com diferenças sutis no compartilhamento de memória. Geralmente evitado devido a possíveis impasse.
* `clone ()` (mais avançado): Oferece controle de granulação mais fina sobre os recursos compartilhados entre os processos pais e filhos. Usado em bibliotecas e modelos avançados de rosqueamento.
* Inicialização do sistema: O processo init (PID 1) é o ancestral de todos os outros processos do sistema. É responsável por iniciar outros processos durante a inicialização.
* `pthread_create ()`: Esta função é usada para criar threads dentro de um processo. Embora os threads compartilhem o mesmo espaço de memória que o processo dos pais, ainda são consideradas unidades de execução separadas gerenciadas pelo kernel.


Exclusão do processo (terminação):

Um processo termina (é excluído) em várias circunstâncias:

* terminação normal: O processo conclui sua execução e chama a chamada do sistema `exit ()`. Isso sinaliza o sistema operacional que ele terminou. O status de saída pode ser usado para transmitir sucesso ou falha.
* Terminar anormal: O processo trava devido a uma falha de segmentação, instrução ilegal ou outro erro. O kernel encerra o processo.
* Terminação do sinal: Outro processo (ou o próprio kernel) pode enviar um sinal (por exemplo, `sigterm`,` sigkill`) para um processo, forçando seu término. `Sigterm` permite que o processo seja limpo antes de sair, enquanto o` sigkill` termina imediatamente o processo sem nenhuma limpeza.
* Terminação do processo pai: Se um processo pai terminar, seus processos filhos também poderão ser encerrados, dependendo das configurações do sistema operacional (geralmente herdadas do grupo de processos dos pais). O processo `init" normalmente adota crianças órfãs.


O papel do kernel:

O kernel desempenha um papel crucial no gerenciamento de processos ao longo de seu ciclo de vida. Ele lida com a criação de processos, agendamento, alocação de memória, gerenciamento de recursos, manipulação de sinais e terminação de processos. O kernel mantém estruturas de dados (como a tabela de processos) para rastrear informações sobre cada processo em execução.

Em resumo, a criação e exclusão de processos no UNIX são cuidadosamente orquestradas pelo kernel e envolvem um conjunto de chamadas do sistema que permitem que os programadores controlem o ciclo de vida do processo. O `fork ()` e `Exec ()` família (para criação) e `exit ()` e sinais (para exclusão) são os componentes principais.

Anterior :

Próximo :
  Os artigos relacionados
·Algumas versões do UNIX e Linux incluem o comando umas…
·Tutorial Unix Command 
·Como converter uma data para Unix Timestamp em COBOL 
·Como você arrota sob comando? 
·O sistema operacional Unix é multitarefa ou multithrea…
·O que o shell comum faz enquanto um comando está execu…
·Unix Guia de Consulta Rápida 
·O que é um byte? 
·Como se tornar Certified for Unix Clustering 
·O que você quer dizer com comandos em ambiente Linux? 
  Artigos em destaque
·Como faço para acelerar Vista Indexing 
·Como desativar Rundll32 
·Como identificar uma embalagem da janela 
·Como alterar Opções de pasta para exibir arquivos TIF…
·Como criar estacionária para Macintosh Mail 
·Como remover a cor do fundo do Desktop Icons 
·Malow Mac deixou oi power? 
·Quais são os sintomas do uso prolongado do computador?…
·Como consertar um relógio do computador From Time Mili…
·Como remover inicialização a partir de segunda unidad…
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados