Prof. Alexandre Monteiro Recife

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Operacionais Aula II
Sistemas Operacionais
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.
Profa. Priscila Facciolli
Gerência do Processador
Gerência do Processador
Software Básico Silvio Fernandes
Escalonamento Linux.
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
SSC SISTEMAS OPERACIONAIS I Aulas 6 – Escalonamento de Processos
SSC SISTEMAS OPERACIONAIS I Aulas 5 – Escalonamento de Processos
SSC SISTEMAS OPERACIONAIS I
SSC SISTEMAS OPERACIONAIS I
SSC SISTEMAS OPERACIONAIS I Aula 4 – Conceitos Básicos
Sistemas Operacionais
Escalonamento de Processos
Estruturas de Controle
Escalonamento Aula 7.
Arquitetura de Sistemas Operacionais
Curso Técnico em Manutenção e Suporte em Informática
Claudio de Oliveira – Gerência do Processador 09/03/10 20:13 Claudio de Oliveira –
Threads.
Sistemas Operacionais
Sistemas Operacionais I
Sistemas Operacionais Aula 4
Unidade 1-1 Processos e Threads
SISTEMAS OPERACIONAIS
Sistemas Operacionais
Sistemas Operacionais
Gerência de Recursos Processador
Sistemas Operacionais Profª Adriana Vettorazzo
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
Escalonamento de Processos
Conteúdo Processos e threads Partes do processo
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Prof. Alexandre Monteiro Recife
Sistemas Operacionais
Processos.
SISTEMAS OPERACIONAIS I
Computação L1: Infra-Estrutura Básica
Prof. Alexandre Monteiro Recife
Sistemas Operacionais
Escalonamento com prioridades
Prof. Alexandre Monteiro Recife
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
Prof. Alexandre Monteiro Recife
Sistemas Operacionais
Escalonamento de Processos e Threads
GERÊNCIA DE PROCESSOS Disciplina: Sistemas Operacionais II.
SISTEMAS OPERACIONAIS I
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Sistemas Operacionais
Prof. Werley T. Reinaldo 26/05/  Sistemas Operacionais:  Visão geral  As diferentes imagens do SO:  Visão Usuários;  Visão Projeto.  Multiprogramação;
S ISTEMAS OPERACIONAIS PROCESSOS Horácio Ribeiro.
Escalonamento de Processos
Infra-Estrutura de Software
SISTEMAS OPERACIONAIS
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
Sistemas Operacionais
Sistemas Operacionais
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Comunicação Interprocesso Condições de Disputa (corrida)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais Prof.: Gustavo Wagner
Bruna Cavallero Martins Universidade Católica de Pelotas.
Transcrição da apresentação:

Prof. Alexandre Monteiro Recife Escalonamento Prof. Alexandre Monteiro Recife

Contatos Prof. Guilherme Alexandre Monteiro Reinaldo Apelido: Alexandre Cordel E-mail/gtalk: alexandrecordel@gmail.com greinaldo@fbv.edu.br Site: http://www.alexandrecordel.com.br/fbv Celular: (81) 9801-1878

Computador Moderno Fonte: Tanenbaum, Modern Operating Systems 3 ed, São Paulo p.1, 2010 Prentice-Hall, Inc. All rights reserved.

Mais uma vez: O que é um SO? É uma Máquina Estendida Oculta os detalhes complicados que têm quer ser executados Apresenta ao usuário uma máquina virtual, mais fácil de usar É um Gerenciador de Recurso Cada programa tem um tempo com o recurso Ex.: compartilhamento de CPU Cada programa tem um espaço no recurso Ex.: compartilhamento de memória

História dos SO’s Válvulas, painéis de programação Primeira geração: 1945 - 1955 Válvulas, painéis de programação Segunda geração: 1955 - 1965 transistores, sistemas em lote Terceira geração: 1965 – 1980 CIs (circuitos integrados) e multiprogramação Quarta geração: 1980 – presente Computadores pessoais Hoje: onipresença – computação ubíqua

Revisão sobre hardware de computadores (1) Componentes de um computador pessoal simples

Revisão sobre hardware de computadores (2) (a) Um pipeline de três estágios (b) Uma CPU superescalar

Revisão sobre hardware de computadores (3) Típica hierarquia de memória números mostrados são apenas aproximações

Registradores Registradores de propósito geral: armazena variáveis importantes e resultados temporários Contador de Programas: contém o endereço de memória da próxima instrução a ser buscada. Depois que busca é atualizado para apontar a próxima instrução. Ponteiro de Pilha: aponta para o topo da pilha atual na memória. A pilha contém uma instrução PSW (program status word – palavra de estado do programa): contém os bits de códigos de condições de instruções de comparação, pelo nível de prioridade da CPU.

Conceitos Básicos Chamadas ao Sistema (System Call) Modo usuário: Aplicações não têm acesso direto aos recursos da máquina, ou seja, ao hardware; Quando o processador trabalha no modo usuário, a aplicação só pode executar instruções sem privilégios, com um acesso reduzido de instruções; Por que? Para garantir a segurança e a integridade do sistema;

Conceitos Básicos Chamadas ao Sistema (System Call) Modo Kernel: Aplicações têm acesso direto aos recursos da máquina, ou seja, ao hardware; Operações com privilégios; Quando o processador trabalha no modo kernel, a aplicação tem acesso ao conjunto total de instruções; Apenas o SO tem acesso às instruções privilegiadas;

Conceitos Básicos Chamadas de Sistema (System Call) Se uma aplicação precisa realizar alguma instrução privilegiada, ela realiza uma chamada ao sistema (system call), que altera do modo usuário para o modo kernel; Chamadas de sistemas são a porta de entrada para o modo Kernel; São a interface entre os programas do usuário no modo usuário e o Sistema Operacional no modo kernel; As chamadas diferem de SO para SO, no entanto, os conceitos relacionados às chamadas são similares independentemente do SO;

Conceitos Básicos Chamadas de Sistema TRAP: instrução que permite o acesso ao modo kernel; Exemplo: Instrução do UNIX: count = read(fd,buffer,nbytes); Arquivo a ser lido Bytes a serem lidos Ponteiro para o Buffer O programa sempre deve checar o retorno da chamada de sistema para saber se algum erro ocorreu!!!

Chamadas ao Sistema Retorno Colocar o código para read no registrador TRAP Empilha nbytes Incrementa SP Comando read Empilha fd Empilha &buffer Manipulador de Chamadas Dispatch Endereço 0xFFFFFFFFF Biblioteca do Procedimento READ Chamada ao Kernel SO Espaço do Usuário 1 3 2 4 5 6 7 8 9 10 Tabela de ponteiros para Chamadas 11 Endereço 0

Introdução a Processos Em um sistema multiprogramado vários programas estão na RAM e são executados concorrentemente A CPU permuta entre programas, executando cada um por dezenas/centenas de milisegundos. Uma CPU só pode executar um programa por vez. Mas no curso de 1’’ uma CPU pode executar diversos programas ilusão de paralelismo (pseudoparalelismo) Verdadeiro paralelismo = sistema multiprocessado

Introdução a Processos O conceito de processo é a base para a implementação de um sistema multiprogramável A gerência de um ambiente multiprogramável é função do SO, o qual controla a execução dos programas e o uso concorrente da CPU Neste contexto um programa esta associado a um processo OBS: Apesar de denominações como tarefa ou job ainda serem usadas com o mesmo sentido, o termo processo é atualmente o mais utilizado. job = tarefa = processo

Introdução a Processos Vantagens da Multiprogramação: Aumento da taxa de utilização do processador Melhor utilização dos recursos em geral Redução do tempo de execução de um conjunto de programas Dá a ideia ao usuário de que ele possui uma máquina só para si.

Introdução a Processos Um processo é formado por três partes Contexto de Hardware Contexto de Software Espaço de endereçamento Estas três partes mantêm todas as informações necessárias à execução de um programa Quando um processador troca de processo caracteriza uma mudança de Contexto de Execução

Estado do Processo Para haver o compartilhamento da CPU em um sistema multiprogramável, os processos passam por diferentes estados ao longo do seu processamento A troca de estado ocorre em função de eventos gerados pelo próprio processo (voluntário) ou pelo SO (involuntário) Os estados em que um processo pode se encontrar variam de sistema para sistema mas, de uma maneira geral, pode-se citar: Executando (Running) Pronto (ready) Bloqueado (blocked) – Também conhecido com Espera (Wait) Terminado (exit)

Troca de Contexto

Conceito de Escalonamento Para cada estado existe uma Fila que contém os PCBs. Nas transações entre estados, o PCB do processo é movido entre as filas apropriadas.

Concorrência Processos Independentes Subprocessos Threads São formas diferentes de implementar concorrência Busca-se subdividir o código em partes que permitam o trabalho cooperativo entre estas partes São elas: Processos Independentes Subprocessos Threads

Thread Ambiente Monothread Em um ambiente monothread um processo só suporta um programa no seu espaço de endereçamento Neste ambiente aplicações concorrentes são implementadas só com o uso de processos independentes ou subprocessos Nestes casos a aplicação é dividida em partes que podem trabalhar concorrentemente. De forma simplificada um thread pode ser definido como uma sub-rotina de um programa que pode ser executada de forma assíncrona. Ou seja, executada paralelamente ao programa chamador.

Thread A grande diferença entre ambientes monothread e multithread está no uso do espaço de endereçamento Processos independentes ou subprocesso possuem espaços de endereçamento individuais e protegidos Multithreads compartilham o espaço de endereçamento dentro de um mesmo processo Como os threads compartilham o mesmo espaço de endereçamento, não se exige mecanismos para proteção no acesso a memória Isso permite que o compartilhamento de dados entre threads de um mesmo processo seja mais simples e rápido

Ambiente Multithread Cada thread possui seu próprio contexto de HW, porém divide o mesmo contexto de SW e espaço de endereçamento com os demais threads do processo

Vantagens de Mutithreading Tempo de criação/destruição de threads é inferior ao tempo de criação/destruição de processos Chaveamento de contexto entre threads é mais rápido em tempo que chaveamento entre processos Como threads compartilham o descritor do processo que as contem, elas dividem o mesmo espaço de endereçamento o que permite a comunicação por memória compartilhada, sem interação com o núcleo

Comunicação Interprocessos Os processos podem precisar trocar informações entre eles ou podem solicitar a utilização de um mesmo recurso simultaneamente, como arquivos, registros, dispositivos de E/S e memória. O compartilhamento de recursos entre vários processos pode causar situações indesejáveis e, dependendo do caso, gerar o comprometimento da aplicação. O Sistema Operacional tem a função de gerenciar e sincronizar processos concorrentes, com o objetivo de manter o bom funcionamento do sistema.

Regiões Críticas Para se evitar uma condição de corrida é preciso definir métodos que proíba que mais de um processo acesse uma determinada área de memória compartilhada ao mesmo tempo. Esses métodos são conhecidos como exclusão mútua ou MUTEX (MUTual EXclusion). A parte do programa no qual o processo acessa memória compartilhada é chamada seção crítica ou região crítica. Dessa forma, a solução para se evitar uma condição de corrida seria organizar os problemas de tal forma que nenhum de dois ou mais processos estivessem em suas regiões críticas ao mesmo tempo.

Regiões Críticas (2) Espera Ativa Exclusão mútua usando regiões críticas proposta de exclusão mútua na qual, um processo quando está acessando sua região crítica, outro processo que deseja entrar também em região crítica fica aguardando.

Algoritmos de Exclusão Mútua MUTEXES Semáforo Monitores Produtor x Consumidor Dormir x Acordar Troca de Mensagens Barreiras Jantar dos Filósofos Barbeiro Sonolento Leitor xEscritor

Objetivos do Escalonamento Maximizar a utilização do processador Maximizar o nº de processos executados por unidade de tempo (throughput) Minimizar o tempo total de execução de um processo (turnaround) Minimizar o tempo de espera (na lista de processos aptos) Minimizar o tempo de resposta decorrido entre a requisição e sua realização

Características de Escalonamento 07/04/2017 Características de Escalonamento Justiça (fairness) Todos os processos têm chances iguais de uso dos processador Eficiência Taxa de ocupação do processador ao longo do tempo Tempo de Resposta Tempo entre a ocorrência de um evento e o termino da ação correspondente Turnaround “Tempo de resposta” para usuários em batch Minimizar o tempo que usuários batch devem esperar pelo resultado Throughput No. de “jobs” (processos) executados por unidade de tempo

Situações típicas para execução do escalonador Depende se o escalonador é preemptivo ou não- preemptivo, se considera prioridades ou não: Sempre que a CPU estiver livre e houver um processo apto para executar Criação e término de processos Um processo de mais alta prioridade ficar pronto para executar Interrupção de tempo Processo executou por um período de tempo máximo permitido Interrupção de E/S Interrupção de Falta de Página em Memória Endereço acessado não está carrego na memória (memória virtual) Interrupção por erro

Chaveamento de Contexto (Dispatcher)

Níveis de escalonamento Longo Prazo Médio Prazo Curto Prazo

Diagrama de Escalonamento

Filas de Escalonamento 07/04/2017 Filas de Escalonamento High-level (Longo Prazo) Decide quantos programas são admitidos no sistema Aloca memória e cria um processo Controla a long-term queue Short-term (Curto prazo) Decide qual processo deve ser executado Controla a short-term queue I/O (Médio prazo) Decide qual processo (com I/O) pendente deve ser tratado pelo dispositivo de I/O Controla a I/O queue

Filas de Escalonamento 07/04/2017 Filas de Escalonamento Short-term scheduling Long- term queue Short- term queue Process request FIM CPU High-level scheduling I/O queue I/O I/O scheduling I/O I/O queue Interrupt of process from I/O Interrupt Handler I/O I/O queue

Algoritmos de Escalonamento Algoritmos Não-Preemptivos (cooperativos) First-In-First-Out (FIFO) ou First-Come-First-Served (FCFS) Shortest Job First (SJF) ou Shortest Processo Next (SPN) Algortimos Preemptivos Round Robin (Circular) Baseado em Prioridades Híbridos Partições de Lote (Batch) MFQ - Multiple Feedback Queue Existem outros algoritmos de escalonamento High Response Ratio Next (HRRN) Shortest Remaining Time (SRT) Ect...

Escalonamento Preemptivo 07/04/2017 Escalonamento Preemptivo Permite a suspensão temporária de processos Quantum ou time-slice: período de tempo durante o qual um processo usa o processador a cada vez Preempção T12 T22 T0 T11 mP1 T0 1 41 51 70 90 121 t

Quantum Quando uma tarefa recebe o processador, o núcleo ajusta um contador de ticks que essa tarefa pode usar, ou seja, seu quantum é definido em número de ticks. A cada tick, o contador é decrementado; quando ele chegar a zero, a tarefa perde o processador e volta à fila de prontas.

Nova visão dos Estados do Processo

Troca de Contexto 5 ms

Políticas de Escalonamento Round-Robin 07/04/2017 Round-Robin FIFO Híbrido SJF SRJN Políticas de Escalonamento Round-Robin Uso de uma lista de processos sem prioridade Escalonamento preemptivo Simples e justo Bom para sistemas interativos CPU:Running Tar. A Contexto Tar. A Contexto Tar. B Contexto Tar. C Contexto Tar. A Contexto

Round Robin Cada processo recebe um tempo limitado (time slice = quantum) para executar um ciclo de processador Fila de processos aptos é circular Necessita de relógio para delimitar as fatias de tempo (interrupção de tempo/relógio) Se o (quantum = ∞) obtem-se o comportamento de um escalonador FIFO. Tamanho do quantum igual prejudica processos I/O bound (prioridade)

Políticas de Escalonamento First-In First-Out (FIFO) 07/04/2017 Round-Robin FIFO Híbrido SJF SRJN Políticas de Escalonamento First-In First-Out (FIFO) Uso de uma lista de processos sem prioridade (Fila) Escalonamento não-preemptivo Simples e justo Bom para sistemas em batch (lote) CPU B C D E F … N A Processo aptos inseridos no final da fila Processo no início da fila é o próximo. Processo executa até terminar, libere o processador ou realize um chamada de sistema FIM

Políticas de Escalonamento First-In First-Out (FIFO)

Políticas de Escalonamento Híbridos 07/04/2017 Round-Robin FIFO Híbrido SJF SRJN Políticas de Escalonamento Híbridos Partições de Lote (Batch) MFQ - Multiple Feedback Queue Como combinar processos batch com interativos? Uso de Partições de Lote (batch) O sistema aceita tantos processos batch quantas forem as partições de lote O sistema aceita todos os processos interativos Escalonamento em dois níveis

Escalonamentos Híbridos Partições de Lote 07/04/2017 Round-Robin FIFO Híbrido SJF SRJN Escalonamentos Híbridos Partições de Lote Memória Processos interativos são ativados imediatamente Processos Interativos Processos batch esperam a liberação do lote Partição de Lote B C D E F … N A

Escalonamentos Híbridos Multiple Feedback Queue 07/04/2017 Round-Robin FIFO Híbrido SJF SRJN Escalonamentos Híbridos Multiple Feedback Queue Como saber a priori se o processo é CPU-bound ou I/O-bound? MFQ usa abordagem de prioridades dinâmicas Adaptação baseada no comportamento de cada processo Usado no VAX / VMS (arquiteturas de computadores)

Escalonamentos Híbridos Multiple Feedback Queue 07/04/2017 Round-Robin FIFO Híbrido SJF SRJN Escalonamentos Híbridos Multiple Feedback Queue Novos processos entram na primeira fila (prioridade mais alta) Se acabar o quantum desce um nível Se requisitar E/S sobe um nível Lembrando: I/O-bound são prioritários ... P r i o r i d a d e Fila 1 Q u a n t u m ... Fila 2 ... Fila n

Escalonamentos baseados no tempo de execução 07/04/2017 Round-Robin FIFO Híbrido SJF SRJN Escalonamentos baseados no tempo de execução Shortest Job First (não-preemptivo) Shortest Remaining Job Next (preemptivo) Melhora o tempo de resposta Não é justo: pode causar estagnação (starvation) Pode ser resolvida alterando a prioridade dinamicamente Exemplo de escalonamento job mais curto primeiro (Shortest Job First – SJF)

Shortest Job First

Shortest Job First Algoritmo ótimo, fornece o menor tempo médio de espera para um conjunto de processos Processos I/O bound são favorecidos Dificuldade é determinar o tempo do próximo ciclo de CPU de cada processo, porém: Pode ser empregado em processos batch (long term scheduler) Prever o futuro com base no passado

Escalonamento em Sistemas Interativos Um algoritmo de escalonamento com quatro classes de prioridade

Como definir a Prioridade? Prioridade Estática: Processo é criado com determinada prioridade e esta é mantida durante todo o processo. Prioridade Dinâmica: Prioridade é ajustada de acordo com o estado de execução do processo e/ou sistema. Ex. ajustar a prioridade em função da fração de quantum que foi realmente utilizada pelo processo. q = 100ms Processo A = 2ms -> nova prioridade = 1/0.02 = 50 Processo B = 50ms -> nova prioridade = 1/0.5 = 2