1 / 30

Processos em Linux

Processos em Linux. Aluno : Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais. Relembrando. O que são processos?. A seguinte definição de processo foi apresentada por Tanenbaum em "Sistemas Operacionais - Projeto e Implementação" :

selina
Download Presentation

Processos em Linux

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Relembrando...

  3. 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.

  4. 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.

  5. Estados de um processo • Observaçõ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.

  6. Processamento em Linux

  7. 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 initque através da chamada execve, cria o processos número de número 1 , mais conhecido como init.

  8. 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.

  9. PID e PPID • Um PID (ProcessIdentifier) é 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 (ParentProcessIdentifier) é 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.

  10. PID e PPID

  11. 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.

  12. 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;

  13. 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.

  14. 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.

  15. Modelo Cliente-Servidor • São exemplos de daemons no Linux: • atdaemon - servidor que executa serviços agendados pelo comando at. • crondaemon - servidor que executa serviços agendados pelo comando crontab. • lpd (printerdaemon) - servidor de impressão de arquivos.

  16. 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 - oprocesso 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;

  17. 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.

  18. 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.

  19. Limite de Recursos • RLIMIT_CPU:otempo máximo em segundos que um processo pode ser executado. • RLIMIT_DATA:otamanho máximo do heap ou memória de dados em bytes. • RLIMIT_FSIZE:otamanho máximo em bytes permitido para um arquivo. • RLIMIT_LOCKS: onú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.

  20. Limite de Recursos • RLIMIT_NOFILE: onúmero máximo de descritores de arquivos abertos. • RLIMIT_NPROC:onúmero máximo de processos que um usuário pode ter. • RLIMIT_RSS:aquantidade máxima de memória física que um processo pode ter. • RLIMIT_STACKo tamanho máximo em bytes da stack.

  21. 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.

  22. 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.

  23. 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.

  24. 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.

  25. 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.

  26. 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 .

  27. 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:

  28. 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.

  29. 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.

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

More Related