Escalonamento no Linux e no Windows NT/2000/XP



Documentos relacionados
Gerência do Processador

Sistemas Operacionais

4. GERÊNCIA DE PROCESSADOR (Escalonamento de processos)

Gerência do Processador

Gerência de processos Estudos de caso - BSD Unix

Gerência de processos Requisitos fundamentais

Sistemas Operacionais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais. Escalonamento de Processo. Prof. Dr. Márcio Andrey Teixeira

Gerência de Processador

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Gerência do Processador

Processos e Threads (partes I e II)

Sistemas Operacionais

Capítulo 4 Gerência de Processador

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton

Gerência de Processador

Sistemas Operacionais. Roteiro. Tipos de Tarefas (temporal) Marcos Laureano

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

GERENCIAMENTO DO PROCESSADOR. Prof. Maicon A. Sartin

Programação Concorrente Processos e Threads

Escalonamento de processos

Sistemas Operacionais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Escalonamento de CPU 2 Quadrimestre

Sistemas Operacionais

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Sistemas Operacionais Gerência de Dispositivos

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Arquitetura de Computadores. Sistemas Operacionais IV

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Sistema Operacional Correção - Exercício de Revisão

Sistemas Operacionais

Servidores de Aperiódicas

Máquina de estados UNIX O

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

3) Considerando a tabela abaixo, usando a política de atribuição de prioridades Deadline Monotonic:

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura Exemplo

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

Algoritmos de Escalonamento

SISTEMAS OPERACIONAIS

Introdução a Computação 07 Sistemas operacionais. Márcio Daniel Puntel marcio.puntel@ulbra.edu.br

Organização e Arquitetura de Computadores

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Processamento de Dados

Programação de Sistemas

Introdução aos Sistemas

Integrating Multimedia Applications in Hard Real-Time Systems. Introdução - CM são sensíveis a delay e variação no delay (Jitter)

03 GERÊNCIA DO PROCESSADOR

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Deadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Estruturas do Sistema de Computação

Sistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Sistemas Operacionais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

E/S PROGRAMADA E/S PROGRAMADA E/S USANDO INTERRUPÇÃO

AULA 5 Sistemas Operacionais

Sistemas Operacionais

Everson Scherrer Borges João Paulo de Brito Gonçalves

SISTEMAS OPERACIONAIS. Apostila 01 Assunto: Tipos de Sistemas Operacionais UNIBAN

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Memória Secundária. Prof. Valeria M. Bastos 18/06/2012 Prof. Antonio Carlos Gay Thomé

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Imagem retirada de documentações de treinamentos oficiais INTEL

Sistemas Distribuídos. Aleardo Manacero Jr.

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Slide. ! Multiprocessamento! Modelo de processo. Dep. Ciência da Computação. Slide. ! Alternância de processos. ! Relação Programa x Processo

8 Threads. 8.1 Introdução

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Sistemas Operacionais

Sumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto

Gerenciamento de Memória

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux

Mecanismo de Interrupção

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Sistemas Operacionais

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

Arquitetura de Sistemas Operacionais

7 Processos. 7.1 Introdução

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Comparativo de desempenho do Pervasive PSQL v11

Transcrição:

Escalonamento no Linux e no Windows NT/2000/XP 1

Escalonamento no Linux Os requisitos do escalonador do Linux eram: Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir de maneira justa o tempo da CPU; Ser eficiente em máquinas SMP (Symmetric Multi Processor); Possuir suporte para tempo real. 2

Escalonamento no Linux Cada processo possui uma prioridade, que é recalculada dinamicamente. O escalonador entrega a CPU para o processo que possui a maior prioridade. O escalonador é preemptivo. 3

Escalonamento no Linux O Linux considera dois tipos de processos: processos interativos (time-sharing) processos tempo real Para processos interativos (dentro da mesma prioridade) o algoritmo é Round Robin. Para processos de tempo real (dentro da mesma prioridade) o algoritmo pode ser: FCFS (o processo executa até terminar ou se bloquear) ou Round Robin Processos de tempo real possuem prioridade sobre os demais processos. 4

Escalonamento no Linux Nas versões que antecederam a 2.6, o escalonador apresentava 2 problemas: 1) o tempo de execução do escalonador aumentava com o aumento do número de processos no sistema; 2) O escalonador usava uma ready list global em máquinas SMP 5

Escalonamento no Linux Primeiro problema (overhead): Cada processo possui uma prioridade, baseada em uma prioridade básica (Nice) e em seu comportamento em tempo de execução. Uma vez selecionado, o processo ganha a CPU por uma fatia de tempo. Quando o time-slice esgota, o processo é marcado como expirado. O escalonador seleciona o processo não expirado com a maior prioridade. Quando todos os processos estão expirados, o escalonador recalcula a prioridade de todos e então seleciona o próximo a rodar. O problema era este recálculo de prioridades: aumentando o número de processos no sistema, aumenta o tempo necessário para o escalonador recalcular as prioridades. (Para aplicações com um número muito grande de processos, este tempo penalizava enormemente o desempenho do sistema) 6

Escalonamento no Linux Segundo problema (uma única ready list global nas máquinas SMP). Neste caso, os problemas são de duas naturezas: 1) a necessidade de acesso mutuamente exclusivo à ready list por parte dos processadores. Se um processador está acessando a ready list, os demais necessitam esperar até que a mesma seja liberada. Para um número elevado de processadores este bloqueio dos processadores pode ocasionar uma queda considerável no desempenho do sistema. 2) considere um processo bloqueado esperando uma operação de E/S; quando termina a E/S, o processo é recolocado na ready list global e pode ser executado por um processador diferente daquele no qual estava rodando previamente. Isto acontecendo, dados do processo porventura existentes em caches não poderão mais ser usados, influenciando negativamente na performance. 7

Escalonamento no Kernel 2.6 As principais características do escalonador 2.6 são: Tempo constante de execução para selecionar um processo para rodar, independentemente do número de processos; Boa performance com programas interativos mesmo com o sistema sobrecarregado; Eficiente em máquinas SMP; Afinidade de processador, com uma fila de aptos para cada processador; Suporte a tempo real. 8

Escalonamento no Kernel 2.6 (Em máquinas SMP, existe uma fila de aptos para cada CPU) Fila de Aptos Ativos Prioridade 1... P2 P5... Pn Prioridade 140 P6 P2... Pk Expirados Prioridade 1 P2 Thread de migração Quando o array Ativos se torna vazio, o array Expirados passa a ser o ativo, com uma simples troca de apontadores. 9

Escalonamento no Kernel 2.6 O escalonador possui 140 níveis de prioridade (quanto menor o número, maior é a prioridade). Prioridades de 1 a 100 são para processos de tempo real; de 101 a 140 para os demais processos de usuário (interativos ou não interativos). Nos níveis de prioridade 101 a 140, os processos recebem fatias de tempo de 20 ms. Os processos de tempo real podem ser FIFO ou Round Robin, e possuem uma prioridade estática. Processos FIFO executam até voluntariamente liberarem a CPU (o nível de prioridade é mantido e não são preemptados). Processos Round Robin recebem fatias de tempo. Quando todos terminam suas fatias, é dada outra fatia e eles continuam rodando no mesmo nível de prioridade. A prioridade dos processos de usuário é a soma de sua prioridade básica (valor de seu nice) e seu bonus dinâmico, que varia de +5 a 5. 10

Cálculo da prioridade dos processos de usuário O escalonador classifica os processos em interativos e não interativos, pela observação de seu comportamento. Interativos são aqueles que ficam bloqueados por longos períodos, esperando por I/O, executam rapidamente e ficam novamente esperando por I/O. O escalonador calcula a média de tempo bloqueado de um processo e a utiliza para calcular o bônus do processo. A idéia é aumentar a prioridade de processos interativos (I/O bound) e diminuir a prioridade de processos não interativos (CPU bound). 11

Thread de migração Em cada processador roda uma thread de migração, cuja função é movimentar processos de um processador para outro. Como existe uma ready list por processador, a idéia é evitar que processadores fiquem ociosos enquanto outros estão sobrecarregados. A thread de migração é chamada periodicamente, a cada tick do relógio, e também explicitamente quando o sistema fica desbalanceado. 12

Escalonamento de E/S no Linux No Linux, as operações READ são síncronas e bloqueantes (pois existe a suposição de que o processo que executou a operação necessita dos dados para continuar), enquanto as operações WRITE são assíncronas e nãobloqueantes. Por este motivo, as operações de leitura possuem prioridade em relação às operações de escrita. As requisições de E/S são ordenadas, de acordo com o cilindro a ser acessado, de forma a minimizar o deslocamento do braço do disco. Para evitar postergação indefinida, para cada requisição é atribuído um deadline de atendimento. O escalonador 2.6 implementa duas políticas: política de deadlines e política antecipatória. 13

Política de deadlines O escalonador implementa duas filas: fila READ com deadline de 500 ms e fila WRITE com deadline de 5 seg (portanto, o tempo limite de atendimento de um processo depende da fila em que ele se encontra) As requisições são inseridas nas filas apropriadas (READ ou WRITE), na posição correspondente a sua requisição (cilindro a ser acessado). O escalonador atende as requisições, seguindo a ordem das filas. Se um deadline expira, o escalonador dispara a requisição seguindo a ordem da fila, garantindo a execução das requisições cujo deadline expirou. Esta política assegura que as operações de posicionamento dos cabeçotes (seek) são minimizadas (pela classificação das requisições) e o deadline garante que não haverá postergação indefinida de requisições. Outro aspecto importante é o aumento da interatividade, que resulta da atribuição de deadline menor e da priorização das operações READ. 14

Política antecipatória O escalonamento antecipatório tenta antecipar futuras operações de leitura. Para isso, mantém algumas estatísticas sobre os processos. Quando um READ se completa, o escalonador não executa a próxima requisição da fila, mas espera 6 ms por uma nova requisição do mesmo processo. Se ocorrer, a mesma será atendida. Para muitas aplicações, esta espera (6 ms) evita inúmeras operações de posicionamento dos cabeçotes (seek). Se o processo não executa outra operação READ, este tempo é perdido. 15

Escalonamento no sistema operacional Windows NT/2000/XP Um processo pode ser formado por um conjunto de threads. A thread é a unidade de execução para o sistema operacional. Cada processo possui pelo menos uma thread, a thread primária, a qual é criada quando o processo é carregado para execução. Alguns processos criam outras threads, de maneira a explorar o paralelismo da execução. Cada thread possui sua própria pilha de execução, seu contexto de execução (representado pelos registradores da CPU) e sua prioridade. A memória alocada para um processo é proporcional ao número de threads que o processo possui. 16

Escalonamento de threads No Windows 2000/XP o escalonador utiliza múltiplas filas e os processos interativos (I/O bound) possuem prioridade sobre os CPU bound. O escalonamento é baseado em prioridades. Cada thread possui uma prioridade, que varia de 0 a 31 (0 é a menor e 31 a maior). A prioridade 0 é atribuída a uma thread especial, chamada zero thread, que é responsável por zerar as páginas livres no sistema. Somente esta thread pode receber a prioridade 0. As prioridades definem duas classes de threads: Real time: prioridades de 16 a 31; Normal: prioridades de 0 a 15. Existe ainda uma classe especial chamada idle, a de mais baixa prioridade. Threads nesta classe somente executam quando não existem outras threads aptas (portanto, threads dessa classe não interferem na performance não causam overhead). 17

Fila de aptos no Windows 2000/XP Prioridades 31 30 T4 Tempo Real 29 T7 T3 16 15 T9 14 T5 T1 Normal 1 0 idle 18

Escalonamento de threads O escalonador escolhe sempre a thread de maior prioridade. As threads da classe real time executam até terminar ou se bloquear. As threads com prioridade normal (0 a 15) recebem fatias de tempo. no sistema Windows 2000 professional, a fatia de tempo é de 20 ms (para favorecer a interatividade). no Windows 2000 Server, a fatia é de 120 ms (para gerar menos trocas de contexto). Cada thread recebe uma prioridade base ao ser criada. Para os processos de tempo real (prioridade entre 16 e 31) esta prioridade não se altera. Processos com prioridade entre 0 e 15 têm a prioridade ajustada em tempo de execução: Processos que retornam de operações de I/0 recebem um bônus de aumento, que depende do periférico (ex. 1 para disco e 6 para teclado). Após operações de sincronização, os processos também recebem um aumento de prioridade, dependendo da natureza do processo. 19

Escalonamento em máquinas SMP Durante a instalação do kernel, se é detectada a presença de mais de um processador, é carregado o suporte ao multiprocessamento. Independentemente de haver um único processador ou vários, vai existir somente uma fila de processos aptos (e a estrutura é aquela já vista). Porém, a existência de múltiplos processadores vai permitir o paralelismo físico na execução das threads. Se existem N processadores, o escalonador garante que as N threads de mais alta prioridade estejam em execução nesses processadores. O Windows 2000 implementa o conceito de afinidade, que define o processador onde a thread deve executar. A afinidade pode ser: Hard indica a existência de uma dependência que obriga a thread a rodar sempre no processador específicado Soft o sistema tenta executar a thread no processador que ela havia ocupado previamente, para aproveitamento de dados da execução anterior que podem se encontrar em cache (o que implica em ganho de performance). 20