Escalonamento Linux.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais - Aula 6
Advertisements

Sistemas Operacionais
Sistemas Distribuídos
Sistemas Operacionais
Sistemas Operacionais Sincronismo e Comunicação entre processos
Sistemas Operacionais Gerência de Processador
Sistemas Operacionais
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS VIVIANE LUCY Sistemas Operacionais Gerência de Processador WebDesign Redes de Computadores.
Escalonamento de Processos
Arquitetura de Sistemas Operacionais
Gerência do Processador
Gerência do Processador
Evolução Arquitetural e Microprogramação
Processos no Unix e Linux
Arquitetura de Sistemas Operacionais
Capítulo 5: Escalonamento de CPU
SSC SISTEMAS OPERACIONAIS I Aulas 6 – Escalonamento de Processos
Alessandro Nakamuta Bruno Guazzelli Batista
Avaliação de Desempenho dos Escalonadores de Processos Disponibilizados no Linux Alessandro Nakamuta Bruno Guazzelli Batista Paulo Sérgio Franco Eustáquio.
Capítulo 3 Deadlocks - Impasses 3.1. Recurso
Sistemas Operacionais
Escalonamento de Processos
Estruturas de Controle
Escalonamento Aula 7.
Arquitetura de Sistemas Operacionais
Sincronização e Comunicação entre Processos
Claudio de Oliveira – Gerência do Processador 09/03/10 20:13 Claudio de Oliveira –
Threads.
Sistemas Operacionais Adriana Vettorazzo
Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,
Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 5: Escalonamento de CPU.
Sistemas Operacionais
Sistemas Operacionais I
Sistemas Operacionais Aula 4
Monitores.
Concorrência em Java Threads em Java.
Unidade 1-1 Processos e Threads
SISTEMAS OPERACIONAIS
Sistemas Operacionais
Sistemas Operacionais
Gerência de Recursos Processador
Gerência do processador
Concorrência entre Threads Java
Processo Entidade dinâmica e efêmera
Sistemas Operacionais Profª Adriana Vettorazzo
Escalonamento de Processos
Suporte de hardware à multiprogramação
SISTEMAS OPERACIONAIS I
Computação L1: Infra-Estrutura Básica
Sistemas Operacionais
Escalonamento com prioridades
Sistemas Operacionais
Escalonamento de Processos e Threads
GERÊNCIA DE PROCESSOS Disciplina: Sistemas Operacionais II.
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
Multiprocessamento Sérgio Cavalcante CIn GRECO - CIn / UFPE.
SISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS
Engenharia de Sistemas Embarcados Aula 9: Salvo RTOS.
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner
Bruna Cavallero Martins Universidade Católica de Pelotas.
Tipos de Suportes para Tempo real Aluno: Ritiele M. Aldeburg Curso: Engenharia da Computação.
Transcrição da apresentação:

Escalonamento Linux

Escalonamento de UCP Cada processo tem uma prioridade de escalonamento associada a si, com números maiores indicando prioridade mais baixa. A realimentação negativa no escalonamento de UCP torna difícil para um único processo monopolizar o tempo de UCP. Envelhecimento do processo é empregado para prevenir que um processo sofra inanição. Quando um processo escolhe pela liberação da UCP, ele deve ser bloqueado em um evento. Quando o evento ocorre, o sistema operacional permite o processamento deste evento percorrendo a fila dos processos bloqueados neste evento e desbloqueando esses processos, de tal forma que se tornam processos prontos para executar.

Escalonamento Linux Enquanto o escalonamento é normalmente compreendido como a execução e interrupção de processos, no Linux o escalonamento também inclui a execução de várias tarefas do núcleo. As tarefas de execução do núcleo englobam tanto as tarefas requisitadas por um processo em execução quanto as tarefas que executam internamente em nome de um driver de dispositivo. Como no kernel do 2.5, o novo algoritmo de escalonamento – preemptivo e baseado em prioridade Tempo real Valor nice

Relação entre prioridades e tamanho da fatia de tempo

Escalonamento de processos O Linux usa dois tipos de algoritmos para escalonamento: Um algoritmo de tempo compartilhado para escalonamento preemptivo equitativo entre múltiplos processos Um algoritmo de tempo real para tarefas onde as prioridades absolutas são mais importantes do que a equidade Uma classe de escalonamento do processo define qual algoritmo aplicar para o processo. Para processos de tempo compartilhado, o Linux usa um algoritmo de prioridade baseado em créditos e o processo pronto com maior número de créditos é executado. A prioridade default é 120, pode ser alterada pelo nice (-20 a +19) e variando de 100 a 140 (prioridade = 120 – valor). O tique é de 10 ms e cada tique de relógio, o crédito é decrementado e o processo é preemptado quando o crédito chega a zero.

Escalonamento de processos Se nenhum processo tem crédito, o Linux faz uma operação de recrédito. Recrédito: Para todos os processos (inclusive os bloqueados), faça: créditos = créditos/2 + prioridade Leva em conta a história e prioridade do processo Este sistema de créditos automaticamente prioriza processos interativos ou orientados a E/S. O valor da prioridade é estático e pode ser alterado pelo comando nice ou renice.

Escalonamento de processos Para o kernel 2.6: Bonus vai de 0 à 10 e representa o tempo médio de espera do processo; Prioridade dinâmica = max(100, min(prioridade – bonus + 5, 139) Quantum básico = (140 – prioridade)20 se prioridade < 120 (140 – prioridade)x5 se prioridade >= 120

Lista de tarefas indexada por prioridade

Escalonamento de Processos (Cont.) O Linux implementa classes de escalonamento de tempo real baseadas em FIFO e round-robin e em ambos os casos, cada processo tem uma prioridade em adição a sua classe de escalonamento O escalonador executa os processos com a prioridade mais alta, e para empate, executa o processo que está esperando a mais tempo. Os processos FIFO continuam executando até o bloqueio ou até a terminação. Os processos round-robin executam até serem preemptados por um outro processo round-robin ou por um processo FIFO, ao tempo do qual se movem para o fim da fila se sua fatia de tempo tiver acabado.

Escalonamento no Linux Classes de escalonamento SCHED_FIFO: Escalonamento de threads de tempo-real por ordem de chegada - First-in-first-out SCHED_RR: Escalonamento de threads de tempo-real de forma circular - Round-robin SCHED_OTHER: Escalonamento de threads que não são de tempo real Dentro de cada classe prioridades múltiplas podem ser usadas

Exemplo do escalonamento de tempo-real do Linux

Sincronização de Kernel Uma requisição para execução em modo kernel pode ocorrer de duas formas: Um programa em execução pode requisitar um serviço do sistema operacional, tanto explicitamente quanto na forma de uma chamada ao sistema, ou implicitamente, como na ocorrência de uma falta de página. Um dispositivo pode requisitar uma interrupção de hardware que causa uma execução de um tratador de interrupção do kernel para lidar com a interrupção A sincronização do kernel requer um esquema que permita que as seções críticas do kernel possam executar sem serem interrompidas por outra seção crítica.

Sincronização de Kernel (Cont.) O Linux utiliza duas técnicas para proteger suas seções críticas: 1. Código do kernel não é preemptável (até 2.4) – quando uma interrupção de tempo é recebida enquando um processo está executando uma rotina de serviço do kernel, o flat do kernel need_resched é setado de tal forma que o escalonador irá executar apenas quando do término da chamada ao sistema e na iminência do retorno para o modo usuário 2. A segunda técnica aplica-se para seções críticas que ocorrem dentro de uma rotina de serviço de interrupção – através do uso do hardware de controle de interrupção, pode-se desabilitar interrupções durante uma seção crítica, de tal forma que o kernel garante que o tratador de interrupção corrente não será preemptador por outro tratador de interrupção durante sua execução.

Sincronização de Kernel (Cont.) Para evitar penalidades no desempenho, o kernel do Linux usa uma arquitetura de sincronização que permite que seções críticas de longa duração possam executar sem ter que impedir o tratamento de interrupções que estão desabilitadas durante a seção crítica As rotinas de serviço de interrupção são separadas em top half (metade superior) e bottom half (metade inferior). A metade superior é a rotina de serviço de interrupção normal e executa com interrupções recursivas desabilitadas. A metade inferior executa com todas as interrupções habilitadas através de um escalonador que assegura que as metades inferiores não se interrompem mutuamente. A arquitetura é completada por um mecanismo que desabilita algumas metades inferiores selecionadas quando da execução de código de kernel em determinadas situações.

Níveis de proteção de interrupção Cada nível pode ser interrompido por código executando em um nível mais alto, mas nunca por um código executando no mesmo nível ou em nível mais baixo. Processos de usuário podem ser sempre preemptados por outro processo quando uma interrupção de escalonamento de tempo compartilhado ocorrer.

Escalonamento UNIX tradicional (SVR2) A realimentação multinível usando round robin (circularidade) dentro de cada fila de prioridade; Se um processo em execução não bloquear ou completar dentro de 1s, é preemptado. As prioridades são recomputadas uma vez por segundo. O contador é incrementado a cada tique de relógio para o processo que está executando. Recômputo: contador = contador/2; prioridade = prioridade_base + nice + contador/2; Um valor numericamente baixo implica em uma prioridade de escalonamento maior. O valor de nice é reajustado entre -20 e +20 (default 0).

Exemplo do escalonamento tradicional do Unix

Bandas A prioridade de base divide todos os processos em bandas fixas de níveis de prioridade. Ordem decrescente de prioridade Swapper ou permutador Controle de dispositivo de E/S de bloco Tratamento de arquivos Controle de dispositivo de E/S de caractere Processos de usuário

Baseado em estrutura de filas multinível Escalonador do UNIX Baseado em estrutura de filas multinível

Escalonamento UNIX SVR4 Escalonador preemptável com prioridade estática Introdução de um conjunto de 160 níveis de prioridade divididos em 3 classes de prioridade Inserção de pontos de preempção Maior preferência para processos em tempo real Segunda preferência para processos em modo kernel Terceira preferência para processos em modo usuário

Classes de prioridade SVR4

Classes de prioridade do SVR4 Tempo real (159 – 100) Tem garantia de ser selecionado para executar antes de qualquer processo kernel ou de tempo compartilhado. Pode preemptar processos em kernel ou usuário. Kernel (99 – 60) Tem garantia de ser selecionado para executar antes de qualquer processo de tempo compartilhado. Tempo compartilhado (59-0) Prioridade mais baixa