Arquitetura e Organização de Computadores Suporte do Sistema Operacional Material adaptado, atualizado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Objetivos e Funções Conveniência Torna o computador fácil de usar Eficiência Permite melhor uso dos recursos do computador Camadas e Visões de um Sistemas de Computador Serviços do Sistema Operacional Criação de Programas Execução de Programas Acesso aos Dispositivos de E/S Controle de Acesso a Arquivos Acesso ao Sistema Detecção e Resposta a Erros Contabilidade Coleta e monitoramento de dados de desempenho SO como um Gerenciador de Recursos Tipos de Sistemas Operacionais Interativo Lote Uniprogramação Multiprogramação (Multi-tarefa) Sistemas Antigos Final da década de 40 até meados da década de 50 Não havia Sistema Operacional Programas interagiam diretamente com o hardware Dois problemas principais: Escalonamento Tempo de preparação Sistemas em Lote Simples Processadores muito caros = importancia em valorizar o tempo de uso Programa Monitor Residente Usuários submetem suas tarefas (jobs) ao operador Operador trabalha com lotes Monitor controla a sequência de eventos para o processamento em lote Sistemas em Lote Simples Quando um job é encerrado, controle retorna ao monitor que lê o próximo job Monitor controla o escalonamento, resolvendo assim o problema de ociosidade nos escalonamentos Linguagem de Controle de Job Fornece instruções ao monitor Normalmente representada por $. Ex: $JOB $FTN ... } Instruções em FORTRAN $LOAD $RUN ... } Dados $END Recursos de Hardware Desejados em um SO em lote Proteção de Memória Não permite troca de memória enquanto programa do usuário está executando Protege o monitor Temporizador Previne que um job monopolize o sistema Instruções Privilegiadas Executadas apenas pelo Monitor. Ex: E/S Interrupções Permite abandonar e recuperar o controle de processos Sistema em Lote Multiprogramados Dispositivos de E/S são muito lentos Quando um programa está esperando por E/S, outro pode usar a CPU Também necessita de recursos de hardware, entre eles o principal é o suporte a interupções de E/S e DMA Único Programa - Uniprogramação Multiprogramação com dois programas Multiprogramação com três programas Sistemas de Tempo Compartilhado Permite aos usuários interagir diretamente com o computador Ex: Interação Multiprogramação permite que um número N de usuários interajam com o computador Exercícios 1. 2. 3. 4. Quais são os objetivos e funções de um SO? Cite e comente 4 serviços oferecidos pelo SO? Cite e comente sobre os tipos de SO? Diferencie SO de lote multiprogramado e SO de tempo compartilhado. Escalonamento Chave para multiprogramação Tipos Longo prazo Médio prazo Curto prazo E/S Escalonamento de Longo Prazo Determina quais programas serão submetidos ao processamento Controla o grau de multiprogramação Uma vez submetido, o job se torna um processo é é acrescentado a fila do escalonador de curto prazo (ou torna-se um job na área de troca (swap), onde será escalonado posteriormente pelo escalonador de médio prazo) Escalonamento de Médio Prazo Faz parte da função de troca de processos (swapping) Normalmente são baseados na necessidade de gerenciar o grau de multiprogramação Se não há memória virtual, gerenciamento de memória também será um problema Escalonamento de Curto Prazo Também conhecido como Dispatcher (despachante) Toma decisões de qual tarefa executar em seguida, ou seja, qual trabalho irá utilizar o processador no próximo intervalo de tempo Estados de um Processo Bloco de Controle de um Processo Identificador Estado Prioridade Contador de Programa Ponteiros de Memória Dados de Contexto Status de E/S Informações contábeis Principais Elementos de um SO para Multiprogramação Escalonamento de Processos Gerenciamento de Memória Uniprogramação Memória dividida em duas Uma para o Sistema Operacional (monitor residente) Uma para o programa em execução Multiprogramação “Parte do Usuário” é sub-dividida e compartilhada entre os vários processos ativos Troca de Processos na Memória - Swapping Problema: E/S é tão lenta comparada com a CPU que, mesmo no sistema de multiprogramação a CPU pode ficar ociosa a maior parte do tempo Soluções: Aumentar a memória principal Cara Conduz a programas com maior consumo de memória Swapping O que é Swapping? Fila de processos de longo prazo armazenados em disco Processos trocados (swapped) tornam seu espaço disponível Quando um processo termina, ele é retirado da memória principal O que é Swapping? Se nenhum dos processos na memória está pronto (ex: todos estão aguardando E/S) Troca o processo bloqueado por um processo de uma lista intermediária Troca por um processo pronto ou por um novo processo Mas… swapping é uma operação de E/S... O que é Swapping? Particionamento Divisão da memória em seções para alocar processos (incluindo o Sistema Operacional) Partições de tamanho fixo Podem não ser do mesmo tamanho Processo é armazenado dentro da menor partição possível Desperdício de memória Leva a partições de tamanho variável Particionamento Fixo Partições de tamanho Variável (1) Aloca exatamente a quantidade de memória necessária ao processo Isto pode levar a um buraco no final da memória, pequeno demais para outro processo Apenas um pequeno orifício - menos resíduos Quando todos os processos estão bloqueados, retira um processo e busca outro (swap) Novo processo pode ser menor do que o processo retirado Outro buraco Partições de tamanho Variável (2) Com o tempo, surgem vários buracos (fragmentação) que causam perda de desempenho Solução: Compactação – De tempos em tempos processos são realocados na memória para retirar os buracos Problema: Desperdiça tempo da CPU Efeitos do Particionamento Dinâmico Realocação Não garante que processos devem ser carregados dentro do mesmo local na memória Instruções contém endereços Localização dos dados Endereços para instruções (usados para desvios) Endereço Lógico – relativo ao início do programa Endereço Físico – Localização atual na memória (neste momento) Conversão automática usando endereço base Exercícios 1. 2. 3. 4. Quais os tipos de escalonamento? Quais são os estados de um processo? O que é Swapping? Quais os problemas de utilizar partições de tamanho fixo? 5. Quais os problemas de utilizar partições de tamanho variável? Paginação Divide a memória em pequenas partições de tamanhos iguais chamadas frames Divide programas (processos) em pequenas partições de tamanhos iguais chamadas páginas Atribui o número de frames necessários para a alocação de páginas Paginação Sistema Operacional mantém uma lista de frames livres Um processo não requer frames contínuos para suas páginas Usa tabela de páginas para fazer o controle Endereços Lógicos e Físicos Paginação Memória Virtual Paginação por Demanda Não requer todos as páginas de um processo na memória Traz as páginas quando necessário Falta de Página Requer uma página que não está na memória Sistema Operacional precisa fazer a troca de páginas Pode ser necessário trocar uma página para dar espaço a outra Seleciona a página a ser retirada com base no histórico recente Thrashing Muitos processos em pouca memória Sistema Operacional gasta todo o seu tempo efetuando trocas de páginas Pouco ou nenhum trabalho real é feito Soluções Bom algoritmo de substituição de páginas Reduzir o número de processos executando Adquirir mais memória Vantagens da Paginação Não precisamos carregar todo um processo na memória para que ele funcione Podemos trocar páginas conforme necessário Logo, podemos executar os processos que são maiores do que a memória total disponível! A memória principal é chamada de memória real Usuário / programador vê uma memória muito maior do que a real - memória virtual Estrutura da Tabela de Páginas Translation Lookaside Buffer - TLB Acesso a memória virtual = 2 acessos Um para buscar entrada da tabela de página apropriada, outro para buscar dados = Dobro do tempo de acesso Cache especial para contornar este problema – TLB Translation Lookaside Buffer - TLB Segmentação Paginação normalmente não é visível ao programador Segmentação é visível ao programador Normalmente, diferentes segmentos são alocados para programas e dados Pode haver uma série de segmentos de programas e uma série de segmentos de dados Vantagens da Segmentação Simplifica o tratamento de estruturas de dados que crescem Permite que programas sejam alterados e recompilados de modo independente, sem exigir religamentos e recarregamentos Permite o compartilhamento entre processos Serve para proteção Alguns sistemas combinam segmentação com paginação Exercícios 1. Explique resumidamente como funciona a paginação. 2. Explique o que é Thrashing, quando ele ocorre e qual(is) a(s) solução(ões) para este problema. 3. Para que serve a TLB? 4. Cite as vantagens da segmentação.