Trabalho Sistemas Operacionais Cintia Ferreira Henrique Elias Hermes Tavares Luiz Netto Faculdade Pitágoras 08/2012 SISTEMA BATCH Os sistemas batch, também conhecido por sistemas em lote, foram os primeiros sistemas multiprogramáveis a serem implementados. Eles se caracterizam por terem seus programas, quando submetidos, armazenados em disco ou fita, onde esperam para ser executados sequencialmente. Normalmente, os programas em seu processamento interagem muito pouco ou até não interage com o usuário. Em batch, uma vez iniciado um serviço, ele se processa de maneira continua até o término. O usuário não tem acesso as informações durante o processamento. Alguns exemplos de aplicações originalmente processadas em batch são compilações, link edições, backups, entre outros que não exigem interação com o usuário. O tempo de resposta deste sistema pode der longo, devido o processamento sequencial. Hoje são poucos os programas que se utilizam do sistema batch, a tendência é a mudança para o sistema on-line. A história da computação pode ser dividida em quatro fases. A primeira fase caracterizou-se por computadores de grande porte onde os programas eram processados em lotes. Eram os chamados sistemas batch. Cartões perfurados armazenavam as instruções dos programas, o processamento era centralizado e não havia interação com o usuário durante a execução do programa. A principal característica (e desvantagem) deste sistema é a falta de interação entre o usuário e o programa em execução no job. O usuário precisa entregar ao operador o programa que ele deseja executar, incluindo seus dados de entrada. Algum tempo depois (podendo demorar minutos, horas ou mesmo dias), a saída do job é retornada. Este tempo entre a submissão do job e seu término, chamado de tempo de turnaround, vai depender da quantidade de processamento necessária, tempo de preparação necessário, e da quantidade de jobs que estavam na fila antes dele ser submetido ao processamento. Existem algumas dificuldades com o sistema batch do ponto de vista do programador ou do usuário. Já que o usuário não pode interagir com o job que está executando, o usuário deve indicar os cartões de controle para manipularem todos os resultados possíveis. Em um job de múltiplos passos, passos subsequentes podem depender do resultado dos anteriores. A execução de um programa, por exemplo, pode depender do sucesso da compilação. Pode ser difícil definir completamente o que fazer em todos os casos. Outra dificuldade em um sistema batch é que programas devem ser depurados estaticamente, a partir de uma listagem. Um programador não pode modificar um programa quando ele está sendo executado para estudar o seu comportamento, como hoje é possível na maioria dos ambientes de programação. SISTEMAS INTERATIVOS Os sistemas de tempo compartilhado (time-sharing) permitem que diversos programas sejam executados a partir da divisão do tempo do processador em pequenos intervalos, denominados fatia de tempo (time-slice). Caso a fatia de tempo não seja suficiente para a conclusão do programa, ele é interrompido pelo sistema operacional e substituído por um outro, enquanto fica aguardando por uma nova fatia de tempo. O sistema cria para cada usuário um ambiente de trabalho próprio, dando a impressão de que todo o sistema está dedicado exclusivamente a ele. Geralmente, sistemas de tempo compartilhado permitem a interação dos usuários com o sistema, através de terminais que incluem vídeo, teclado e mouse. Esses sistemas possuem uma linguagem de controle que permite ao usuário comunicar-se diretamente com o sistema operacional, através de comandos. Desta forma, é possível verificar arquivos armazenados em disco ou cancelar a execução de um programa. O sistema, normalmente, responde em poucos segundos à maioria desses comandos. Devido a esse tipo de interação, os sistemas de tempo compartilhado também ficaram conhecidos como sistemas on-line. A maioria das aplicações comerciais atualmente é processada em sistemas de tempo compartilhado, pois elas oferecem tempos de respostas razoáveis a seus usuários e custos mais baixos, em função da utilização compartilhada dos diversos recursos do sistema. SISTEMAS OPERACIONAIS EM TEMPO REAL Para se iniciar o entendimento sobre sistemas operacionais de tempo real (RTOSs) é necessário compreender algumas questões: O que é computação não tempo real? Na computação não tempo real um programa P é executado com uma entrada I, gerando uma saída O, executando em um tempo T: - O = P(I), T; Assim quando menor T, maior a performance. Mais não há, entretanto, imposições quanto ao valor de T. Ou seja, o tempo de execução não é determinado. O que é computação tempo real? Computação de tempo real é a computação “normal”, com uma imposição a mais em T:- O = P(I), T < D; D é chamado de deadline: o programa obrigatoriamente deve ser executado antes do deadline. O deadline é um tempo crítico de execução; O deadline de cada tarefa deve ser cumprido independente da carga do sistema; O deadline varia de tarefa para tarefa: Painel de cotações da bolsa: alguns minutos; Freios automotivos: alguns milissegundos; A execução do programa num tempo maior que D não é apenas indesejada é inútil. Os sistemas em tempo real, os mais rápidos de todos são utilizados em ambientes onde o tempo é um fator crítico, ou seja, onde os dados devem ser processados muito rapidamente, pois influenciam as decisões mais imediatas: voos espaciais, controle de tráfego aéreo, aeronaves de alta velocidade, processos industriais, equipamentos médicos mais sofisticados, distribuição de eletricidade e comutação telefônica. Um verdadeiro sistema em tempo real deve produzir respostas 100% imediatas em 100% das vezes. O tempo de resposta é medido em frações de segundo, mas esse ideal muitas vezes não é alcançado. Apesar de teoricamente ser possível converter um sistema operacional de múltiplos fins em um sistema em tempo real, na pratica, a sobrecarga dos sistemas gerais é tão grande que o desempenho em tempo real não pode ser alcançado. Assim sendo grande parte das tarefas em tempo real requer sistemas operacionais especialmente concebidos para esse fim. Num sistema em tempo real, o tempo de execução das tarefas é crítico, não apenas um fator de performance. A “corretude” de um programa em tempo real é baseada não apenas na lógica de sua execução, mas no tempo em que ele o faz; Soft real-time: o tempo de execução é crítico, mas possíveis atrasos apenas degradam a qualidade da resposta do sistema: Transmissão de áudio/vídeo real-time; Sistemas de bancos de dados integrados (bancos, supermercados, etc.); Sistemas de medição (satélites, microscópios, etc.). Hard real-time: o tempo de execução é absolutamente crítico e não tolera atrasos; uma operação que não cumpra o deadline é considerada inútil: Equipamentos médicos; Freios automotivos e sistemas de navegação; Sistemas operacionais de tempo real (RTOS) são sistemas que auxiliam (mas não garantem) um escalonamento de tarefas que cumpre com deadlines; RTOSs não são orientados à excelência de performance (throughput), mas sim ao cumprimento dos deadlines; SISTEMAS HIBRIDOS São combinações entre sistemas em lotes e sistemas interativos. Eles parecem ser interativos por que os usuários acessam o sistema por terminais e com isso tem respostas rápidas. Ele aceita programas em lote e os executa em segundo plano. No seu tempo livre ele executa programas que não precisam da interferências de um operador.