Graduação em TI Instituto Federal de Alagoas Prof. Esp. César Felipe G. Silva Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonador Com o surgimento de plataformas multiprogramáveis, onde vários processos poderiam estar residentes na memória RAM em estado de pronto, ou seja, à espera da utilização do processador, a escolha de qual deste processos seria o próximo a ser atendido tornou-se algo de extrema importância. Para se resolver este problema, uma política de escalonamento de processos bem elaborada teve de ser desenvolvida. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonador Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonador O escalonador de processo tem por função: Deixar o processador ocupado o maior tempo possível Definir o tempo de uso da CPU para cada processo Distinguir entre os processos, aqueles que tem preferência de uso da CPU sobre os demais processos. Maximizar o throughput do Sistema Otimizar os tempos de resposta dos processos Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonador No entanto o escalonador de processos funciona de forma diferente, a depender do tipo de sistema operacional, que pode ser: 1. De tempo real: Neste as aplicações podem utilizar a CPU pelo tempo que precisarem, até que outra aplicação mais crítica solicite acesso à CPU. 1. De tempo compartilhado: O tempo de utilização é dividido em pequenas porções de tempo (time slices), ocorrendo o chaveamento entre processos após o exaurimento do tempo de uso do processo. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonador Enquanto o escalonador (Scheduler) é responsável por definir a ordem de atendimento dos processos, o dispatcher é responsável por executar a mudança de contexto. O tempo de mudança de contexto é conhecida como tempo de latência do dispatcher. Vale lembrar que a troca de contexto implica em gravar o estado de processamento do processo atual e carregar no processador os dados de processamento do processo da vez, incluindo seus recursos, estados e endereçamentos de memória para carga destas informações. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > critérios de escalonamento Nos sistemas operacionais baseados em processos, o escalonamento é realizado com base nos processos. Nos sistemas operacionais baseados em threads, o escalonamento é utiliza as threads para definir quais tem preferência de utilização, independente do processo, o qual, neste caso, serve apenas como volume de armazenamento das informações referentes aos recursos que serão utilizados. Então, de forma basica, podemos falar que o processo é a unidade de instruções, enquanto a thread é a unidade de escalonamento. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > critérios de escalonamento Os critérios nos quais o sistema de escalonamento se baseia para definir qual conjunto de informações deve ter preferência na utilização da CPU vai depender do próprio sistema operacional, da seguinte forma: 1) Utilização do processador 2) Throughput 3) Tempo de processador 4) tempo de espera 5) Tempo de turnaround 6) Tempo de resposta Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > critérios de escalonamento 1) Utilização do processador: Para o S.O. é importante manter o processador a maior parte do tempo ocupado. Desta forma, a taxa de 30% de utilização indica baixo processamnto, enquanto 90% sugere forte utilização da CPU 2) Throughput: Indica a carga máxima de processamento que a CPU consegue atingir em um determinado intervalo de tempo. Um throughput alto indica capacidade maior do processador. 3) Tempo de processador: Tempo que o processo demora durante seu estado de execução. O escalonador não influencia no tempo de uso da CPU pelo processo. 4) tempo de espera: É o tempo que o processo demora na fila durante o estado de PRONTO. 5) Tempo de turnaround: É o somatório do tempo no estado de ESPERA + tempo no estado de PRONTO + tempo de processador, ou seja, é o tempo referente ao ciclo completo entre o fim de um processamento e o inicio do proximo. 6) Tempo de resposta: Tempo decorrido entre a entrada de uma instrução, seu processamento e a saída do resultado. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > critérios de escalonamento É importante salientar que, no tocante ao tempo de resposta, este pode variar representativamente, uma vez que algumas requisições (entradas) dependem de um trabalho em série de diversos outros dispositivos e cenários, que muitas vezes são externos ao sistema computacional. É o caso do acesso a um recurso externo, que passa por placas de redes, cabos, switches, roteadores, etc. Tambem podemos citar execução de um mesmo programa em HD`s com velocidades de rotações diferentes, apesar de ser o mesmo programa, na mesma porta USB, observaremos tempos de respostas diferentes. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > critérios de escalonamento Pelo exposto, devemos observar que estes valores não são diretamente proporcionais, pois a finalidade do escalonador é aumentar o valor de alguns e diminuir e de outros. Assim, enquanto o tempo de uso da CPU e o throughput devem sempre ser altos, o tempo de resposta, o tempo de turnaround e o tempo de espera devem ser baixos. Com base neste ponto, vale lembrar que o cenário de processamento é composto por diversos itens que trabalham em série, o que afeta diretamente no trabalho do escalonador de processos e nos critérios de escalonamento. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > escalonamento preemptivo e não preemptivo No entanto, os escalonadores podem se classificados pela forma com a qual tratam os processos, sendo duas as classificações: 1) preemptivos: Este tipo de escalonador tem a possibilidade de interromper o tempo de uso de um processador de acordo com seu algoritmo, independente do processo ter concluido suas instruções, ou não, passando-o para o estado de pronto ou de espera, a depender das circunstâncias. Este tipo de mecanismo já é mais complexo que o segundo, por exigir um maior controle. 2) Não- preemptivo: Este não interrompe o tempo de uso do processador pelo processo, sendo a interrupção definida pelo proprio processo, por motivos diversos, como é o caso de quando seu proprio processamento gera um resultado ou um estado de necessidade que o faz passar para o estado de espera ou de pronto, pelo fato de esperar por alguma outra saida. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Tipos de escalonadores No mais, o escalonamento pode ser classificado de acordo com seu modo de operação. São as seguintes classificações: 1) Fist in, first out (FIFO) 2) Shortest job first (SJF) 3) Cooperativo 4) Circular 5) Por prioridades 6) Circular com prioridades 7) Por multiplas filas 8) Por multiplas filas com realimentação Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > FIFO Este escalonador é bastante simples, pois quando o processo que esta utilizando o processador conclui seu tempo, ele passa para o modo de espera ou de pronto, no entanto, vai para o final da fila e avança de forma igual aos demais, sem existir qualquer tipo de julgamento de acordo com sua prioridade. Este escalonador é do tipo não preemptivo. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Shortest job first Como o proprio nome sugere (Menor tarefa primeiro) O algoritmo do escalonador seleciona para execução o processo que tiver o menor tempo de necessidade de usar a CPU. Iniciou seu uso nos sistemas com processamento em batch (Lote). Neste modelo o processador se baseava na experiência passada do processo para poder antecipar a previsão do tempo de uso da CPU pelo processo. É um escalonador não preemptivo Pode vir a gerar starvation em processos com alto tempo de uso, ou do tipo CPU-Bound (Processos de calculo). Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Cooperativo Algoritmo que visava dar aos ambientes preempção (Parada de um processo para entrada de outro) Processo observa lista de processos em estado de pronto Havendo, libera o processador É uma tarefa executada exclusivamente pelo processo em execução O ponto negativo é que o processo pode passar tempo demais na CPU Os primeiros Sistemas operacionais da Microsoft eram multitarefas cooperativas Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Cooperativo Algoritmo que visava dar aos ambientes preempção (Parada de um processo para entrada de outro) Processo observa lista de processos em estado de pronto Havendo, libera o processador É uma tarefa executada exclusivamente pelo processo em execução O ponto negativo é que o processo pode passar tempo demais na CPU Os primeiros Sistemas operacionais da Microsoft eram multitarefas cooperativas Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Circular Também conhecido como round Robin scheduling É preemptivo Projetado para sistemas operacionais de tempo compartilhado (tempo de utilização da CPU é dividido em porções de tempo (time slices, ou quantum) Este algoritmo é semelhante ao FIFO, adicionando-se ai o fato de que o tempo de utilização já é predefinido, ou seja, há preempção Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Circular No escalonamento circular, toda vez que o processo entra em estado de execução, uma nova fatia de tempo lhe é concedida Quando o tempo expira, a utilização da CPU é suspensa, e seu estado modificado para espera ou pronto. Isto é chamado de preempção por tempo Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Circular Ainda há de se falar, que não existe julgamento de prioridade, desta forma, o controle de uso é por tempo, mas a entrada dos processos é baseada em FIFO. Neste tipo de escalonamento, processos CPU-Bound se beneficiam em relação aos processos I/O-bound, por utilizarem por completo seu tempo de CPU, sofrendo preempção por tempo, ao contrario dos processos I/O-Bound. Neste caso, existe um desbalanceamento no uso do processador entre os processos cpu-bound e i/o-bound. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Circular virtual Para resolver o problema do desbalanceamento, há um melhoramento, chamado de escalonamento circular virtual, que é um mecanismo adaptativo, onde dinamicamente o sistema operacional tenta ajustar a melhor utilização da CPU Neste, processos que saem da fila de espera, entram em uma fila de pronto-auxiliar, que tem preferencia sobre os processos da fila de pronto. No entanto, o tempo de uso destes processos respeita o seguinte calculo: tempo de uso da CPU – tempo de uso do ultimo ciclo. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Circular virtual Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por prioridades É um escalonamento preemptivo (Quando o sistema operacional termina o tempo de uso da CPU pelo processo), e realiza a mudança de contexto Neste sistema cada processo recebe um valor, denominado como prioridade de execução. Processos em estado de pronto e com maior valor de prioridade acessam o processador antes que os demais Processos com mesmo valor de prioridade seguem a politica de FIFO. Nesta modalidade de escalonamento não existe preempção por tempo. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por prioridades No escalonamento por prioridade a utilização da CPU é terminada quando: O processo automaticamente conclui seu ciclo Quando um processo de maior prioridade sai do estado de espera para o estado de pronto, sendo a utilização da CPU interrompida pelo sistema operacional e gravando o contexto do processo. A parada do uso da CPU pelo sistema operacional em decorrência do cenário apresentado é chamado de preempção por prioridade Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por prioridades Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por prioridades Apesar de frequentemente preemptivo, o escalonamento por prioridade pode se apresentar de forma não-preemptiva, que é quando os processos na fila de pronto tem mesmo valor de prioridade que o processo em execução. A prioridade é uma informação que fica armazenada no contexto de software do processo. A prioridade pode ser estática (Seu valor não muda), ou dinâmica. Caso a prioridade seja dinâmica, na maior parte do tempo ela tem seu valor modificado pelo próprio sistema operacional. Em alguns casos, pode acontecer starvation de processos com valor de baixa prioridade. Para resolver isto, existe outro valor de critério conhecido como aging. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por prioridades Classe de prioridade Nivel de prioridade IDLE_PRIORITY_CLASS BELOW_NORMAL_PRIORITY_CLASS NORMAL_PRIORITY_CLASS ABOVE_NORMAL_PRIORITY_CLASS HIGH_PRIORITY_CLASS REALTIME_PRIORITY_CLASS THREAD_PRIORITY_IDLE THREAD_PRIORITY_LOWEST THREAD_PRIORITY_BELOW_NORMAL THREAD_PRIORITY_NORMAL THREAD_PRIORITY_ABOVE_NORMAL THREAD_PRIORITY_HIGHEST THREAD_PRIORITY_TIME_CRITICAL Fonte: https://msdn.microsoft.com/en-us/library/windows/desktop/ms685100(v=vs.85).aspx Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por prioridades No entanto, a interpretação do valor da prioridade é diferente de sistema para sistema, bem como a valoração. Por exemplo: No OpenVMS: 0 a 31 – sendo 0 a menor prioridade No IBM-AIX: 0 a 127 – sendo 0 a maior prioridade No Windows: 0 a 31 – sendo 0 a menor prioridade As prioridades de classe REALTIME_PRIORITY_CLASS, são aquelas que interagem diretamente com o hardware, tal qual mouse e teclado, portanto, definer outro processo com este nível pode vir a interferir na performance destes dispositivos Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por prioridades Como dito anteriormente, um processo iniciado é resultado da carga de informações oriundas da leitura de 1 arquivo, ou de diversos arquivos. Para esta pratica, vamos utilizar os seguintes procedimentos do powershell do Windows: 1. Abra o executar e digite: powershell 2. De ENTER 3. Digite: start-process winword 4. Digite: get-process –name Winword 5. Digite: get-process –id <id-do-processo-winword> -module | formatlist * > c:\processo.txt 6. Digite: get-process –id <id-do-processo-winword> | format-table – view priority Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento circular com prioridade Este escalonador utiliza time-slices com prioridade para execução dos processos. Neste modelo o processo permanece em execução até sua conclusão de forma voluntária, ou sofra preempção por tempo ou por prioridade Permite um melhor balanceamento no uso da CPU em sistema de tempo compartilhado Permite uma utilização mais igualitária entre processos CPU-Bound (Calculos) e I/O-bound (interface). É o modelo utilizado em ambientes Windows e Linux. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento circular com prioridade Vale ressaltar que este modelo também utiliza a valoração das prioridades de forma dinâmica ou estática. Desta forma, no caso de valoração dinâmica, o S.O. poderá incrementar a prioridade de processos I/O-bound, que permanecem muito tempo em estado de espera, no aguardo das operações de I/O, visando compensar o tempo de espera do processo por informações. Este é um bom exemplo de mecanismo adaptativo do escalonador. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por filas multiplas Neste modelo os processos são classificados por filas de prioridades a depender de suas características, tais quais: Importância para aplicação Tipo de processamento Área de memória necessária Este modelo apresenta funcionamento diferente para cada fila, oferecendo mecanismos como escalonamento FIFO e circular, implementados sobre uma camada em filas distintas por níveis de prioridade. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por filas multiplas Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por filas multiplas O processo de posse do processador apenas sofre preempção caso uma fila de maior prioridade receba um algum processo, o qual acaba tendo prioridade sobre o processo da fila de prioridade mais baixa (Preempção por prioridade – escalonamento por prioridade) Caso não haja processo em fila de prioridade mais alta, o processo segue com a utilização da CPU até esgotar seu processamento, ou atingir seu time-slice (preempção por tempo – escalonamento circular) Processos na fila de mesma prioridade, ciclicamente se utilizam do modelo FIFO, já que não há distinção entre eles, e a prioridade é a mesma, já que os processos a herdam da fila a qual pertencem. A determinação da fila de prioridade é definida no ato da criação do processo, não sendo modificada posteriormente. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Escalonamento por filas múltiplas com realimentação Semelhante ao escalonamento por filas multiplas. Neste modelo, o Sistema operacional consegue mudar o processo de fila de prioridade durante sua execução, com base em suas características de processamento. As filas com maior prioridade tem menor tempo de uso do processador, e as menos prioritárias, maior tempo. Os processos criados iniciam na fila de maior prioridade, e vão descendo de filas a cada ciclo de execução. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência do processador > Revisão rápida 1. 2. 3. 4. 5. 6. 7. 8. O que é a politica de escalonamento do sistema operacional? Quais as funções do Scheduler e do dispatcher? Quais os critérios usados no escalonamento? Diferencie tempo de processador, turnaround, resposta e espera Diferencie escalonamento preemptivo e não-preemptivo Qual a diferença entre escalonamento FIFO e circular? O que é mecanismo de escalonamento adaptativo? Escalonamento por filas múltipla por realimentação beneficia os processos BPU-Bound ou I/O-bound? Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência de memória > conceito A memória RAM é conhecida como memória principal e o HD como memória secundária. A memória RAM é um dispositivo de alta velocidade de acesso, leitura e gravação, motivo pelo qual existe a necessidade de carregar as instruções contidas no HD para a memória RAM, antes de processálas, caso contrário a performance de processamento do sistema operacional ficaria comprometida. Atualmente as empresas tentam criar Sistemas Operacionais e aplicações que não se utilizem de tanto espaço de memória RAM. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência de memória > Finalidade da boa gerencia Devido à alta importância da memória RAM para o processamento, o sistema operacional deve preocupar-se em garantir que não haja violação de endereços de memória ocupados com instruções de outros processos e, ao mesmo tempo, possibilitar que processos diferentes possam trocar informações entre si. Também deve ser possível permitir a execução de processos, mesmo que já não exista mais endereços de memória RAM disponível. Para isto técnicas como swapping e overlay devem estar disponíveis. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência de memória > Alocação contígua simples Nos sistemas operacionais mono programáveis, a memória principal era dividida em duas áreas: Área do sistema Área dos aplicativos Neste modelo, havia uma delimitação entre o espaçamento que era reservado ao armazenamento das instruções do sistema operacional e o que era reservado às aplicações. Estas duas áreas eram protegidas por um registrador, que verificava e validava as tentativas de acesso aos endereçamento. Caso houvesse alguma violação, o programa é abortado e uma mensagem de violação de acesso à memória principal é apresentada. Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência de memória > Alocação contígua simples Prof. Esp. César Felipe G. Silva SOPE – Arquitetura de Sistemas operacionais Assunto: Gerência de memória > Alocação contígua simples Nos sistemas operacionais mono programáveis, a memória principal era dividida em duas áreas: Área do sistema Área dos aplicativos Neste modelo, havia uma delimitação entre o espaçamento que era reservado ao armazenamento das instruções do sistema operacional e o que era reservado às aplicações. Estas duas áreas eram protegidas por um registrador, que verificava e validava as tentativas de acesso aos endereçamento. Caso houvesse alguma violação, o programa é abortado e uma mensagem de violação de acesso à memória principal é apresentada.