Quais os estados possíveis para um processo em um sistema Multiprogramado?

Processos em Linux


Com a evolução e o desenvolvimento de novos sistemas operacionais e o surgimento da multiprogramação, foi essencial a fundamentação do conceito de processo pois é a base dos sistemas multiprogramados

Processo


O conceito de processo é fundamental para qualquer sistema operacional multiprogramado, ele é definido como uma instância de um programa em execução. Processos podem representar tanto programa do usuário quanto tarefas do sistema operacional.

Um exemplo de processo no Linux é: Quando o usuário visualiza um terminal aberto, este é um processo em execução. O terminal pode estar rodando um shell, que é um novo processo. Quando utilizada uma função do shell, o programa correspondente é executado em um novo processo.

Visualizando um processo


O sistema operacional sempre vai ter vários processos rodando, independente de um usuário estar utilizando o computador ou não. Cada programa que está sendo executado pode ter um ou mais processos.

Identificador de um processo


Cada processo no Linux é identificado por um process ID único. Não existem duas process IDs do processo com o mesmo valor, algumas vezes é referida como pid. As process IDs dos processos são números de 16-bits que são atribuídos sequencialmente pelo próprio Linux quando o processo é criado e é apagado quando o processo é encerrado. Ao executar o mesmo programa após fechá-lo, o programa terá um pid diferente do anterior.

'

Visualizando processos ativos


O conceito de processo é fundamental para qualquer sistema operacional multiprogramado, ele é definido como uma instância de um programa em execução. Processos podem representar tanto programa do usuário quanto tarefas do sistema operacional.

Um exemplo de processo no Linux é: Quando o usuário visualiza um terminal aberto, este é um processo em execução. O terminal pode estar rodando um shell, que é um novo processo. Quando utilizada uma função do shell, o programa correspondente é executado em um novo processo.

Estado de execução de um processo


Durante sua fase de execução, todo processo em Linux passa por diferentes estados

Existem 5 estados para um processo:
O estado de execução ou esperando pra ser executado é o task_running.
O task_interruptible é o estado do processo que sofre interrupção e está aguardando para voltar ao estado de execução
O uninterruptible é o processo que não pode ser interrompido até sua conclusão.
O task_stopped é o estado onde o processo recebeu um sinal e só volta sua execução quando recebe outro.
O task_zombie é o estado assume quando termina a execução e está esperando uma função wait vinda do processo pai.

Criando um processo


Existem duas maneiras de se criar um processo no Linux, usando as funções fork e exec ou utilizando o system. Ambas são chamadas do sistema, ou seja, chamam o sistema operacional para fazer algo que o usuário não pode.

Utilizando a chamada system


Uma das maneiras de se criar um processo é usando a chama de sistema system. Essa função não é tão eficiente ou segura quanto as funções fork e exec, pois ela funciona como se o usuário digitasse o comando em um shell, o Bourne shell padrão (bin/sh), portanto ela está vulnerável a todas as falhas de um shell.

Utilizando a função fork


O fork é uma chama do sistema que cria uma cópia exata do programa que a chamou, com as mesmas variáveis, registros. O programa que chamou a função fork será o processo pai e o novo programa gerado através da função será o processo filho.

A partir do momento em que a função fork é chamada e os dois processos são criados, cada processo segue um rumo diferente do mesmo lugar. Para chamar a função, não se passa nenhum argumento, o sistema operacional trabalha com o resto e retorna um pid, caso ocorra um erro, a função retorna um número negativo.

Utilizando a função exec


Exec é um grupo de funções que acabam fazendo o programa filho executar como outro programa, substituindo a execução do programa anterior. Para se utilizar a função exec necessitam só da biblioteca unistd.h. Existem vários tipos de funções dentro da família do exec, com diferentes capacidades.

O estado de task_running é quando o processo está em execução ou esperando para ser executado.

Escalonando um Processo


Em Linux, o escalonamento de processos pais e filhos são feitos de maneira independente, fazendo com que não se saiba qual ira ser executado primeiro nem sua duração até que o Linux interrompa o processo.

Sinais


Sinais são um tipo de comunicação assíncrona entre processos concorrentes. Assim que um processo recebe um sinal ele o processa imediatamente.

Finalizando um processo


Para finalizar um processo no Linux, basta usar o comando kill no terminal, informando o sinal e o pid do processo. Para a finalização de um processo podemos usar o comando kill informando o sinal e o pid do processo que se precisa “matar”. A função killall mata todos os processos possíveis.

Utilizando a chamada de sistema wait


Alguns processos podem requerir a resposta do final do processo filho, para isso utiliza-se a chamada wait. Ela trava o processo que fez o requerimento até que um processo filho termine.

Resumo


Processos são a base dos sistemas operacionais multiprogramados. Uma boa fundamentação sobre seus conceitos e habilidade de manipulá-los são essenciais para compreensão do funcionamento dos sistemas e contribuem para o aprimoramento do usuário como desenvolvedor.

Quais os possíveis estados de um processo em um sistema operacional multitarefa?

3 tipos de estados:.
Execução (running) – O processo está sendo executado pela CPU..
Pronto (ready) – O processo está pronto e esperando para ser executado pela CPU..
Espera (wait) – O processo está esperando algum evento externo ou por algum recurso para poder prosseguir seu processamento..

Quais os 5 possíveis estados de um processo?

Estados de Processos.
Ao executar, processo muda de “estados” New: processo está sendo criado..
Running: instruções do processo estão executando. Waiting: processo está esperando ocorrência de algum..
evento. Terminated: processo terminou a execução..

Quantos são os estados de um processo?

Um processo passa por diferentes estados desde sua criação até seu término. Enquanto ele é criado, seu estado é considerado "Novo"; em ação, muda para "Executando"; quando depende da ocorrência de algum evento, vira "Esperando"; quando não mais necessário, o processo é "Terminado".

Quais são os estados possíveis de um processo no sistema operacional Linux?

No Linux (e em outros sistemas baseados em Unix, chamados Unix like), um processo pode ter diversos estados (ativo, em espera, dormindo, etc), e existe uma hierarquia entre os processos (árvore de processos).