30
Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Embed Size (px)

Citation preview

Page 1: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Processos em Linux

Aluno: Raphael FranklinProfessor: Hugo Vieira L. de SouzaDisciplina: Sistemas Operacionais

Page 2: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Relembrando...

Page 3: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

O que são processos?

• A seguinte definição de processo foi apresentada por Tanenbaum em "Sistemas Operacionais - Projeto e Implementação":A ideia-chave aqui é que um processo é um tipo de atividade. Ele tem um programa, entrada, saída e um estado. Um único processador pode ser compartilhado entre vários processos, com algum algoritmo de agendamento sendo utilizado para determinar quando parar de trabalhar em um processo e servir a um diferente.

Page 4: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Estados de um processo

• executando - o processo está utilizando a CPU; • pronto - o processo está temporariamente

parado para permitir que outro processo execute; • bloqueado - o processo é incapaz de executar até

que um evento aconteça.

Page 5: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Estados de um processoObservações: um processo pode criar outro

processo, dizemos então que é o pai dos processos que ele criou. Mas apesar disso processos-filhos podem também criar novos processos, formando então uma árvore hierárquica de processos.

Page 6: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Processamento em Linux

Page 7: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Processamento em Linux• Na etapa de inicialização do Linux é iniciada uma

função chamada start_kernel, sendo ela responsável por criar uma thread, o processo de número zero, o primeiro e o ascendente de todos os outro processos.

• Assim que são carregadas toda estrutura de dados, está mesma função é responsável por chamar a função init que através da chamada execve, cria o processos número de número 1 , mais conhecido como init.

Page 8: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Processamento em Linux

• O init é o primeiro processo inicializado no Linux e é o pai de todos os outros processos. Se um processo termina e deixa processos-filho ainda executando, o processo init assume a paternidade destes processos.

Page 9: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

PID e PPID

• Um PID (Process Identifier) é um número de identificação que o sistema dá a cada processo. Para cada novo processo, um novo número deve ser atribuído, não podendo desta forma existir dois números iguais com mesma identificação.

• O PPID (Parent Process Identifier) é utilizado por que sistemas baseados em Unix que precisam duplicar um processo para realização de uma nova tarefa, sendo assim o processo “copiado” recebe o nome de “processo pai” e o novo recebe o nome de “processo filho”. Sendo assim o PPID de um processo nada mais é do que o PID de seu processo pai.

Page 10: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

PID e PPID

Page 11: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Background e Foreground

• No Linux, um processo pode estar em foreground ou em background, ou seja, em primeiro plano ou em segundo plano.

• Ao digitar o comando “ls -R /etc > teste”, o sistema criará o arquivo teste com conteúdo de todos os diretórios e arquivos que se encontram abaixo do diretório /etc. Durante a execução nenhum outro comando poderá ser digitado, significando estar em primeiro plano ou em foreground.

Page 12: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Background e Foreground

• Para coloca-lo em background é necessário a utilização do comando : “ls -R /etc > teste &”.

• O símbolo & indica que o comando deve ser executado em background;

Page 13: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Modelo Cliente-Servidor

• O Linux implementa muitas das suas funções usando o modelo cliente-servidor. Isto significa que existem processos que são criados especificamente para executar determinadas tarefas. Estas tarefas especiais são oferecidas aos outros processos do sistema na forma de serviços.

• O processo responsável pela execução de determinado serviço no sistema é chamado servidor, é o que solicita e chamado cliente.

Page 14: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Modelo Cliente-Servidor

• Normalmente, as aplicações servidoras (daemons) são executadas em background, enquanto as aplicações clientes são executadas em foreground.

• A grande vantagem de implementar funções dessa forma é tornar o Kernel mais leve, pois seu trabalho e só gerenciar a comunicação entre clientes e servidores.

Page 15: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Modelo Cliente-Servidor

• São exemplos de daemons no Linux: at daemon - servidor que executa serviços

agendados pelo comando at. cron daemon - servidor que executa serviços

agendados pelo comando crontab. lpd (printer daemon) - servidor de impressão de

arquivos.

Page 16: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Estados• O Linux trabalha, essencialmente, com cinco tipos

de situação, isto é, estados: Executável – o processo está em execução ou

aguardando para ser executado: TASK_RUNNING; Dormente - o processo está suspenso até que

determinada condição se torne verdadeira: TASK_INTERRUPTIBLE;

Ininterrupto - como o estado anterior, exceto pelo fato de que o seu estado não será modificado quando receber um sinal: TASK_UNINTERRUPTIBLE;

Page 17: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Estados

• Zumbi - o processo é considerado “morto”, mas, por alguma razão, ainda existe: TASK_ZOMBIE ;

• Parado - o processo está “congelado”, ou seja, não pode ser executado: TASK_STOPPED.

Page 18: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Limite de Recursos

• Por padrão o Linux limita os recursos que cada processo deve ter. Isso acontece para proteger e manter a estabilidade do sistema caso o usuário faça algo de errado. Esse limites são:

RLIMIT_AS: o tamanho máximo que um processo pode ter em bytes.

RLIMIT_CORE: quando um processo é abortado, o kernel pode gerar um arquivo core contendo as informações desse aborto.

Page 19: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Limite de RecursosRLIMIT_CPU: o tempo máximo em segundos que

um processo pode ser executado. RLIMIT_DATA: o tamanho máximo do heap ou

memória de dados em bytes.RLIMIT_FSIZE: o tamanho máximo em bytes

permitido para um arquivo.RLIMIT_LOCKS: o número máximo de arquivos

que um processo pode dar lock. RLIMIT_MEMLOCK: o tamanho máximo em bytes

de memória que não permite swap.

Page 20: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Limite de Recursos

RLIMIT_NOFILE: o número máximo de descritores de arquivos abertos.

RLIMIT_NPROC: o número máximo de processos que um usuário pode ter.

RLIMIT_RSS: a quantidade máxima de memória física que um processo pode ter.

RLIMIT_STACK o tamanho máximo em bytes da stack.

Page 21: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Processo Preemptivos

• Os processos do Linux são preemptivos, isso que dizer que quando um processo entra no estado TASK_RUNNING o kernel vai checar se existe alguma prioridade maior do que o processo corrente. Caso exista, o processo corrente é interrompido e o que tem a prioridade maior começa a executar.

Page 22: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Política de Escalonamento

• A prioridade de um processo em Linux está em constante mudança, por isso o escalonador permanece em constante atualização sobre o andamento desses processos, para que assim possa ajustar as suas prioridade. Dessa forma os processos que ficarem proibidos de utilizar a CPU por um longo tempo, tem sua prioridade incrementada, enquanto os que passaram um longo período dentro dela tem sua prioridade decrementada.

Page 23: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Política de Escalonamento

• Quando falamos no assunto escalonamento é importante notar que os processos são classificados de duas formas: E/S e CPU. O primeiro faz uso extenso dos recursos de entrada e saída, isso significa que grande parte do seu tempo é utilizado no aguardo da conclusão das operações de Entrada e Saída, já o segundo são processos que necessitam permanecer um longo tempo dentro da CPU.

Page 24: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Política de Escalonamento

• Uma classificação alternativa define três classes de processos:

Processos Interativos: os processos que estão em constante interação com o usuário, sendo assim eles perdem grande parte do tempo esperando uma atividade do usuário, como um clique do mouse ou o aperto de uma tecla.

Page 25: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Política de Escalonamento

Processos em Lote: não necessitam de nenhuma interação do usuário e por isso muitas vezes rodam em background. Como são processos de baixa prioridade, são frequentemente penalizados pelo escalonador.

Processos em Tempo Real: esses processos nunca devem ser bloqueados por processos de baixa prioridade, precisam de um tempo de resposta super rápido e com uma variação bastante baixa.

Page 26: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Algoritmo de Escalonamento

• O algoritmo de escalonamento do Linux funciona dividindo o tempo do CPU em fatias. Em uma única fatia cada processo possui um tempo especifico de duração que é computada assim que a fatia é iniciada. Geralmente processos diferentes tem tempos de execuções diferentes. Quando o tempo de execução de um processo termina na CPU é retirado e outro processo que está rodando é colocado no seu lugar .

Page 27: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Algoritmo de Escalonamento

• Uma fatia termina quando todos os processos esgotaram seu tempo reservado de execução, dessa forma o escalonador é responsável por calcular o tempo de execução de cada processo assim que uma nova fatia é iniciada.

• Para o Linux escolher qual processo deve rodar ele precisar escolher qual tem a prioridade maior, existem dois tipos de prioridade:

Page 28: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Algoritmo de Escalonamento

• Prioridade Estática: definido pelo usuário para processos que necessitam de tempo real, os valores variam de 1 até 99 que nunca são modificados pelo escalonador.

• Prioridade Dinâmica Esta é aplicada para os processos convencionais. A prioridade dinâmica dos processos convencionais é sempre inferior aos processos com prioridade estática.

Page 29: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

Referências• Ubuntu. Disponível em: <

http://www.uniriotec.br/~morganna/guia/processo.html> Acessado: 16 de novembro de 2013.

• PASSE, Fernando. Disponível em: <http://www.ebah.com.br/content/ABAAAe7o0AH/historia-linux?part=2> Acessado: 16 de novembro de 2013.

• TOLEDO, Marcelo. Disponível em < http://marcelotoledo.com/stuff/artigos/processos_no_linux/gerenciamento_de_processos_no_linux.html > Acessado: 16 de novembro de 2013.

Page 30: Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais

• ALECRIM, Emerson. Disponível em <http://www.infowester.com/linprocessos.php>Acessado: 16 de novembro de 2013.