Processo (informática)Em computação, um processo é uma instância de um programa de computador que está sendo executada. Ele contem o código do programa e sua atividade atual. Dependendo do sistema operacional (SO), um processo pode ser feito de várias linhas de execução que executam instruções concorrentemente.[1][2]
Multitarefa é um método que permite vários processos compartilharem processadores (UCPs) e outros recursos. Cada UCP (núcleo) executa uma única tarefa por vez. Entretanto, a computação multitarefa permite que cada processador comute entre tarefas que estão sendo executadas sem ter que esperar que cada tarefa finalize. Dependendo da implementação do sistema operacional, a comutação pode ser realizada quando tarefas realizam operações de entrada/saída, quando uma tarefa indica que ela pode ser comutada, ou quando há interrupções de hardware. Uma forma comum de multitarefa é o compartilhamento de tempo. Compartilhamento de tempo é um método para permitir resposta rápida para aplicações interativas de usuário. Em sistemas de tempo compartilhado, trocas de contexto são realizadas rapidamente, o que faz parecer que vários processos estejam sendo executados simultaneamente no mesmo processador. Esta aparente execução de vários processos simultaneamente é chamada de concorrência. Para segurança e confiabilidade, a maioria dos sistemas operacionais modernos impedem a comunicação direta entre processos independentes, fornecendo funcionalidade de comunicação entre processos estritamente mediada e controlada. Tipos de ProcessoDentre os processos, podemos destacar dois principais tipos que estão relacionados a seu local de execução, no caso CPU e Entrada e Saída de dados.
RepresentaçãoEm geral, processos de sistemas computacionais são formados pelos seguintes recursos:
O sistema operacional mantém a maior parte da informação sobre processos dentro de estruturas de dados chamadas Bloco de controle de processos Qualquer subconjunto de recursos, mas normalmente ao menos o estado do processador, pode ser associado com cada um dos processos threads no sistema operacional, que suporte threads ou processos 'filho'. O sistema operacional mantém esses processos separados e aloca recursos necessários para cada um deles, diminuindo as chances de um processo atrapalhar o outro (e.g., deadlock). O sistema operacional pode além disso prover mecanismos para comunicação entre processos, permitindo assim interação e comportamento mais seguro entre os processos. Comunicação entre processosA comunicação entre processos é o grupo de mecanismos que permite aos processos transferirem informação entre si. A capacidade de um sistema operacional executar simultaneamente dois ou mais processos é chamada multiprocessamento. Se existirem dois ou mais processos executados em simultâneo e disputam o acesso a recursos partilhados, problemas da concorrência podem ocorrer. Estes problemas podem ser resolvidos pelo gerenciamento adequado de múltiplas linhas de execução ou processos através da sincronização (multitarefa) ou por outros recursos (como a troca de contexto). A execução de um processo ocorre de maneira sequencial, ou seja, uma instrução após a outra. A qualquer instante, apenas uma instrução de um determinado processo é executada. Os processos também exercem a atividade de executar operações concorrentes mesmo que possua apenas uma Unidade Central de Processamento disponível. Embora dois processos possam estar associados a um mesmo programa, são considerados duas sequências de execução distintas. Por exemplo, cópias de um programa de correio eletrônico podem estar sendo executadas por vários usuários ou o mesmo usuário pode estar usando diversas cópias de um processador de texto. Cada um desses programas em execução constitui um processo distinto e, por mais que o texto de alguns programas possa ser o mesmo, o estado de cada um será diferente. É comum ter um processo que crie muitos processos durante sua execução, criando uma hierarquia entre processos pais e filhos. Memória compartilhadaVantagens
• Interface padronizada
Hierarquia de processosEm alguns sistemas, quando um processo cria outro, o processo pai e o processo filho continuam, de certa forma, associados. Os processo filhos pode criar mais processos, formando assim uma hierarquia de processos, porém nela apenas existirá um processo pai e ter ou não um ou mais processos filhos. Este tipo de organização dificulta a propagação de vírus em nossos sistemas operacionais, pois quando um processo pai é “morto” seja pelo sistema ou pelo próprio usuário, todos que estiverem abaixo dele na hierarquia serão mortos também. No UNIX, um processo, todos os seus filhos e descendentes formam um grupo de processos. Exemplos da atuação de hierarquia ocorre quando há envio de sinal do teclado, onde o sinal é entregue a todos os processos associados ao teclado. Individualmente, cada processo pode capturar o sinal, ignorá-lo ou tomar a ação predefinida, isto é, ser finalizado pelo sinal. Além disso, os processos filhos não podem ser deserdados do processo pai. Por outro lado, o Windows não apresenta esse conceito de hierarquia, nele todos os processos são iguais. Algo parecido com uma hierarquia ocorre somente quando um processo é criado. Ao pai é dado um identificador especial, que ele pode usar para controlar o filho. Contudo, ele é livre para passar o identificador para alguns outros processos, invalidando, assim, a hierarquia. Estados de processosEm um sistema multiprogramado (multitarefa), um processo passa por diferentes estados desde sua criação até seu término. No geral, pode-se dizer que, a princípio, pode-se dizer que existe a ideia de sete estados de processos, são eles (não definitivamente nessa ordem ou com essas terminologias): Não SubmetidoÉ o processo que ainda não está submetido à CPU, está nas mãos do usuário. "Até onde interessa aos sistemas, ele não existe, porque o usuário ainda não o submeteu. Ele é simplesmente apresentado como sendo o primeiro passo na vida de um processo. O Sistema Operacional, naturalmente, não reconhece esse estado.[3]". Pode por exemplo, ser um arquivo executável que está armazenado no HD. CriandoEnquanto o processo está sendo criado, esse é seu estado. Um processo é dito no estado e criação quando o sistema operacional já criou um novo PCB (Process Control Blocks), porem ainda não pode coloca-lo na lista de processos do estado pronto. ProntoEsse é como um estado de ponto de partida, aqui ficam os processos que estão prontos para serem processados. Em outras palavras, quando um processo é criado, seu estado passa a ser este, além de que quando um processo que já estava em execução é suspendido, ele retorna para o estado de prontidão, a menos que deva e esteja, após a suspensão, aguardando a ocorrência de algum evento a parte, onde por sua vez só passará ao estado de prontidão após a finalização desse evento. ExecutandoQuando o processo está sendo executado, seu estado passa a ser este. Aguardando evento externoQuando um processo depende da ocorrência de algum evento, este é seu estado. EsperandoEsse é um estado especial que na verdade está mais para uma característica de outros estados, basta observar os processos que estão nos estado de prontidão e os que estão aguardando eventos, pois ambos também estão em um estado de espera. EncerrandoEsse é o último estado de um processo, sua finalização, seja de forma voluntária, como quando ele não é mais necessário ou de forma involuntária, como as ocasionadas por um erro. Criação de ProcessosHá várias razões para o início de um processo, os principais são:
Término de ProcessosOs processos podem terminar de forma voluntária e involuntária. Aqui estão alguns exemplos de motivos para os processos cessarem sua execução e sua forma:
BCP é a estrutura de dados que contém a informação a cerca de um processo. A manifestação de um processo em um sistema operacional é um BCP. Um BCP é a representação de um processo durante sua execução. Um BCP é criado quando se cria seu processo associado. O conjunto de BCPs representa o estado do sistema. São acedidos e mantidos por rotinas do sistema operacional.
O BCP permite ao sistema operacional localizar toda a informação dos processos. O conjunto de BCP forma as tabelas de processos. O vão do processo usa-se como índice nas tabelas dos processos. Localização dos processos
Estados do processo em LinuxO linux trabalha com 4 estados de processo.
Alguns comandos que podem ser utilizados
Fork no UnixO fork no Unix cria um processo filho, que diferencia-se a partir do processo pai somente em suas PID e PPID. O fork consome tempo e memória requerida para duplicar as tabelas do processo pai. Se funcionar, a PID do processo filho é devolvido para o pai e retorna-se um 0 para o filho. Caso contrário, um -1 é retornado no contexto pai, e não se cria o processo filho. Referências
Ver também |