Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Introdução • O escalonamento de CPU é a base dos sistemas operacionais multiprogramados. • A partir da resdistribuição da CPU entre os processos, o sistema operacional pode tornar o computador mais produtivo Conceitos Básicos • O objetivo da multiprogramação é contar sempre com algum processo em execução para maximizar a utilização da CPU. • Em um sistema com um único processador, somente um processo pode ser executado de cada vez. • Quaisquer outros processos devem esperar até que a CPU esteja livre e possa ser redistribuída. Conceitos Básicos • A ideia da multiprogramação é Com a multiprogramação tentamos utilizar este tempo de forma produtiva. precise aguardar, na maioria dos casos , pelo término de alguma solicitação de I/O. Diversos processos são mantidos na memória ao mesmo tempo. • Em um sistema de computação Quando um processo em execução tiver que entrar em espera, o SO libera a CPU, alocando-a a um outro processo. relativamente simples: • Um processo é executado até que simples, a CPU permanece ociosa. • Todo esse processo de espera é desperdiçado Conceitos Básicos • O escalonamento é uma função fundamental do SO. • Quase todos os recursos do computador são submetidos a um processo de escalonamento antes do uso. • A CPU é naturalmente um dos recursos primordiais do computador. • Assim, seu escalonamento é central para o projeto do SO. Ciclos de Picos CPU - I/O • O sucesso do escalonamento da Segue-se um pico de I/O, então outro pico de CPU, depois outro pico de I/O e assim por diante Em dado momento, o último pico de CPU irá chegar ao fim com uma solicitação do sistema para encerrar a execução e não com outro pico de I/O CPU depende das seguintes propriedades dos processos: • A execução do processo consiste em um ciclo de execução da CPU e de espera de I/O. • Os processos se alternam entre estes dois estados. • A execução do processo dá início a um pico de CPU Ciclos de Picos CPU - I/O • As durações destes picos da CPU tem sido extensivamente mensuradas • Variam bastante por processo e por computador (medidas em milisegundos) • Dependendo se um processo faz mais uso de CPU ou de I/O pode-se selecionar um algoritmo de escalonamento da CPU apropriado. Escalonamento da CPU • Sempre que a CPU se torna ociosa, o SO deve solicitar um dos processos existentes na fila pronta para que seja executado. A fila pronta não é necessariamente uma fila firstin-first-out Uma fila pronta por sua vez, • A seleção é executada pelo pode ser implementada como: scheduler de curto prazo (ou scheduler da CPU). Uma fila FIFO Uma fila de prioridades • O scheduler escolhe dentre os Uma árvore processos na memória que estão prontos para execução, e aloca a CPU a um deles ou simplemente uma lista encadeada Escalonamento com Preempção • Conceito: • Corresponde à interrupção de um processo que está em execução, seguida da alocação da CPU a um outro processo, em ambiente de multiprogramação Escalonamento com Preempção • As decisões de escalonamento da CPU podem ocorrer sob as quatro seguintes circunstâncias: Quando um processo comuta do estado de execução para o estado de espera (ex.: requisição de I/O) Quando um processo comuta do estado de execução para o estado de pronto (ex.: quando ocorre uma interrupção) Quando um processo comuta do estado de espera para o estado de pronto (ex.: conclusão de I/O) Quando um processo termina Escalonamento com Preempção • Nas circunstâncias 1 e 4, não há Quando o scheduling ocorre somente nas circunstâncias 1 e 4, dizemos que o esquema de escalonamento é sem preempção Nos outros casos, o escalonamento é com preempção. escolha em termos de escalonamento. • Um novo processo (se existir um na fila pronta) deve ser selecionado para execução • Entretanto existe uma escolha, nas circustâncias 2 e 3. Escalonamento com Preempção • Em caso do Scheduling, sem preempção, uma vez que a CPU tenha sido alocada a um processo, este toma conta da CPU até liberá-la • Ou porque chegou ao término • Ou porque comutou para o estado de espera • Este método de escalonamento é utilizado pelos SO Windows e Apple. Despachante • Um outro componente envolvido na função de escalonamento da CPU é o despachante. • Esta função envolve: • Comutação de contexto • Comutação para modalidade • O despachante é o módulo que passa o controle da CPU ao processo selecionado pelo escalonador de curto prazo de usuário • Desvio para a localização própria no programa do usuário de modo a reiniciá-lo Critérios de Escalonamento • Ao escolher qual algoritmo usar em uma situação particular, devemos considerar as propriedades dos diversos algoritmos. Os critérios dizem respeito ao seguinte: Utilização da CPU: o intuito é manter a CPU tão ocupada quanto possível. • Muitos critérios tem sido sugeridos para comparar algoritmos de escalonamento de CPU. A utilização da CPU pode variar de 0 a 100%. Em um sistema real, ela pode variar de 40% a 90% Critérios de Escalonamento • Throughput: número de processos que se completam por unidade de tempo. • Para processos longos, esta taxa pode ser de 1 processo por hora; • Para transações curtas, o throughput pode ser 10 processos por segundo Tempo de turnaround: corresponde ao intervalo entre o momento em que um processo é submetido e o momento em que ele completa toda a sua execução. Isso corresponde a soma dos períodos de tempo gastos em espera para ocupar memória, em espera na fila pronta, executando na CPU e realizando I/O. Critérios de Escalonamento • Tempo de Espera: o algortimo de escalonamento da CPU não afeta o período de tempo durante o qual um processo ocupa a CPU ou realiza I/O. • ele influi somente no montante de tempo que um processo gasta esperando na fila pronta. • O tempo de espera é a soma dos períodos gastos esperando na fila pronta. Tempo de Resposta: intervalo de tempo entre a submissão de uma solicitação e o momento em que a primeira resposta é produzida. Algoritmos de Escalonamento • O escalonamento da CPU trata do problema de decidir qual dos processos na fila pronta deve ser alocado a CPU. • Para isso existem diversos algoritmos de escalonamento. Escalonamento FirstFirst-Come First First--Served • O algoritmo de escalonamento First-Come First-Served (Primeiro que chega, primeiro atendido) é o mais simples . Quando um processo entra na fila pronta, seu PCB é conectado à cauda da fila Quando a CPU fica livre, ela é • Com este esquema, o processo que primeiro requisita a CPU é o primeiro a ser alocado a CPU. alocada ao processo na cabeça da fila O processo em execução é então • A implementação da política de FCFS é facilmente gerenciada com uma fila FIFO. removido da fila Escalonamento MenorMenor-Job Job--Primeiro • Este algoritmo associa a cada processo a duração do próximo pico da CPU do último processo • Quando a CPU está disponível, ela é designada para o processo com o menor próximo pico de CPU • Se dois processos têm o mesmo tempo de duração do próximo pico de CPU, o escalonamento FCFS é usado para resolver o impasse. Um termo mais apropriado seria o próximo pico de CPU mais curto, porque o escalonamento é realizado examinando-se o tempo de duração do próximo pico de CPU de um processo, e não o seu tempo de duração total. Escalonamento por prioridades • Uma prioridade é associada a cada Quanto maior o pico da CPU, processo e a CPU é alocada ao processo com prioridade mais alta menor a prioridade, e vice-versa. Um problema significativo com • Processos com igual prioridade são algoritmos de escalonamento por prioridades é o bloqueio indefinido (ou inanição). agendados para execução em ordem FCFS • Um algoritmo por prioridades , baseia-se na ideia onde a prioridade é o inverso do próximo pico da CPU. Um processo que esteja pronto para executar mas não tenha a posse da CPU pode ser considerado bloqueado – em espera pela CPU Escalonamento por prioridades • Um algoritmo de escalonamento por prioridades pode deixar alguns processos de baixa prioridade esperando indefinidamente pela CPU. • Já em um sistema de computação muito carregado, um fluxo estável de processos com prioridades mais altas pode levar a que um processo de baixa prioridade jamais consiga ocupar a CPU. Geralmente uma das duas coisas pode ocorrer. Escalonamento RoundRound-Robin • O algoritmo de escalonamneto round-robin (RR) é projetado especialmente para sistemas de tempo compartilhado Um quantum de tempo fica em geral entre 10 ou 100 milisegundos. A fila pronta é tratada como • É semelhante ao escalonamento FCFS, mas leva em conta a preempção para realizar a comutação de processos • Uma unidade de tempo pequena chamada quantum de tempo (ou porção de tempo) é definida. uma fila circular. O escalonador da CPU circula a fila pronta alocando a CPU a cada processo, por um intervalo de tempo de até 1 quantum de tempo. Como o SO gerencia o processador ? • Em um sistema com duas ou mais • Os sistemas operacionais assimétricos utilizam uma CPU para suas próprias necessidades e dividem os processos dos aplicativos entre as outras CPUs. • Os sistemas operacionais simétricos compartilham as várias CPUs e equacionam a demanda e a disponibilidade da CPU, mesmo quando o sistema operacional é o único aplicativo em execução. CPUs, o trabalho é dividido entre os processadores. • O sistema operacional deve equacionar a demanda de cada processo para as diferentes CPUs. • Os sistemas operacionais neste caso, classificam-se em dois tipos: simétricos e assimétricos . Como o SO gerencia o processador ? • A CPU não é o único recurso requisitado mesmo quando somente o sistema operacional está sendo executado. • O gerenciamento da memória é um passo crucial para que todos os processos sejam executados de maneira tranqüila. Como o SO gerencia o processador ? • Sistema Operacional Assimétrico Sistema Operacional Simétrico Exercícios • Descreva cinco tipos diferentes de processadores de última geração e também: • Velocidade • Performance • Como funcionam • Como opera junto ao SO ? Enviar por e-mail para: [email protected]