A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Processos em Linux Aluno: Raphael Franklin Professor: Hugo Vieira L. de Souza Disciplina: Sistemas Operacionais."— Transcrição da apresentação:

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

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

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

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

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

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

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: Acessado: 16 de novembro de 2013.http://www.uniriotec.br/~morganna/guia/proce sso.html PASSE, Fernando. Disponível em: Acessado: 16 de novembro de 2013.http://www.ebah.com.br/content/ABAAAe7o0A H/historia-linux?part=2 TOLEDO, Marcelo. Disponível em Acessado: 16 de novembro de 2013. http://marcelotoledo.com/stuff/artigos/processo s_no_linux/gerenciamento_de_processos_no_lin ux.html

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


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

Apresentações semelhantes


Anúncios Google