Fundamentos de Sistemas Operacionais Professor: João Fábio de Oliveira jfabio@amprnet.org.br (41) 9911-3030 Objetivo: Apresentar o que são os Sistemas Operacionais, seu funcionamento, o que eles fazem, como o seu desempenho pode ser avaliado e como eles são comparáveis entre si. Considerações: a) 4 Provas Bimestrais e 2 Trabalhos b) As aulas serão teóricas/expositivas, seguindo a bibliografia sugerida.
Parte I Teoria dos Sistemas Operacionais Visão Geral Componente de Software Componente de Hardware Sistemas Operacionais
O que é um Sistema Operacional? Interface de Comandos do Usuário Gerenciador da Unidade de Processamento Gerenciador de Memória Gerenciador de Dispositivos Gerenciador de Arquivos
Software de Sistemas Operacionais Componentes em todos os SO: Gerenciador de Memória, Gerenciador de Unidade de Processamento, Gerenciador de Dispositivos e Gerenciador de Arquivos A Interface de Comandos do Usuário é específico de cada SO, uns mais amigáveis outros nem tanto. Tarefa básica de cada componente: Monitorar continuamente seus recursos Fazer cumprir as regras qye determinam quem recebe o quê, quando e quanto Alocar o recurso quando for apropriado Desalocar o recurso (ou seja, anular a alocação) quando for apropriado
Software de Sistemas Operacionais Gerenciador da Unidade de Processamento (CPU) Gerenciador de Dispositivos (teclado, impressora, unidade de disco, modem, monitor, etc) Gerenciador de Memória (memória principal RAM) Gerenciador de Arquivos (arquivos de programa, arquivos de dados, compiladores, etc) Os sistemas em rede possuem um Gerenciador de Rede que assume a responsabilidade pelas tarefas relacionadas a rede, como: comunicações, protocolos, monitoramentos, etc.
Componentes de Hardware O Hardware é um item essencial para avaliar o SO: CPU, Memória, Dispositivos de E/S Até 1975, mainframes e minicomputadores eram classificados por memória e preço. Após, surgiram os supercomputadores, que atualmente rodam aplicações críticas, e também os microcomputadores, direcionando ao mercado pequeno e doméstico. Tipos de Sistemas Operacionais Sistemas em Lotes (Batch): conjunto de comandos repassados seqüencialmente através de arquivos. Sistemas Interativos: possui troca de informações com o usuário durante a execução dos comandos. Sistemas em Tempo Real: deve produzir respostas imediatas para o usuário. Usado em missões críticas, como aplicações médicas, etc. Sistemas Híbridos: uma composição dos sistemas em lote e interativos. A maioria dos sistemas atuais são híbridos.
Um Pouco de História... Anos 40: primeira geração, SO operacionais rudimentares, sem estrutura. Anos 50: segunda geração, SO começam a ter estrutura de reaproveitamento, foco no mercado, nasce o Job Control Language (JCL). Anos 60: terceira geração, evolução das CPUs e introdução do conceito de multiprogramação. Anos 70: CPUs cada vez mais rápidas em relação aos demais dispositivos, introdução da Memória Virtual para ampliar recursos do SO.
Um Pouco de História... Anos 80: introdução do firmware, que incorpora parte dos comandos da máquina, aliviando a carga dos SO e deixando-os otimizados. Além disto, a indústria passa a trabalhar com multiprocessamento (vários processadores), um grande salto na performance das máquinas. Anos 90 e atualidade: os SO atuais possuem amplos recursos e estrutura para tratarem com robustez e eficiências as necessidades de aplicações massivas, seja tratamentos de vídeo, internet, voz, entre outrso. Porém, há de se considerar que a evolução do hardware é consideravelmente rápido, oferecendo cada vez mais recursos para os SO modernos.
Gerenciamento de Memória Os Primeiros Sistemas O gerenciamento da memória principal é um processo crítico. O desempenho como um todo depende do VOLUME de memória e dos processos de OTIMIZAÇÃO durante as tarefas. Alocações (Otimização): Sistemas de Usuário Único Partições Fixas Partições Dinâmicas Partições Dinâmicas Realocáveis
Gerenciamento de Memória Sistemas de Usuário Único A alocação de memória é total para o programa, ele tinha de ser carregado completamente na memória para ser executado. Havia problema sérios de limitações e não aceitava multiprogramação.
Gerenciamento de Memória Partições Fixas É configurado várias partições da memória, com tamanho fixo, onde cada tarefa poderia ser executada de forma independente. O tamanho era fixado, não havia flexibilidade quanto ao tamanho dos programas, se maior que as partições, não eram executados. (wait) Tarefas: T1 30K T2 50K T3 30K T4 25K Partição 1 Partição 2 Partição 3 Partição 4 Estado Original 100K 25K 25K 50K Memória Principal Depois de Receber as Tarefas Tarefa 1-30K Tarefa 4-25K Tarefa 2-50K Memória Principal
Gerenciamento de Memória Partições Dinâmicas A memória ainda é tratada em blocos contíguos, porém as alocações seguem o critério de primeiro a chegar, primeiro a ser atendido, desde que tenha segmentos livres de memória. Um problema típico criado é o da fragmentação, que neste modelo não é resolvido, mesmo havendo partes livres de memória, que somados, poderiam atender uma tarefa.
Gerenciamento de Memória Partições Dinâmicas Passo1: Alocação Inicial Tarefas: T1 10K T2 15K T3 20K T4 20K SO T1-10K T2-15K T3-20K T4-50K 0K 10K 20K 35K 55K 105K Terminados T1 e T4 Passo2: Libera Espaço SO vago-10k T2-15K T3-20K Vago-50K 0K 10K 20K 35K 55K 105K Surgem T5 5K T6 30K Passo3: Aloca T5 e T6 SO T5-5K T2-15K T3-20K T6-30K Vago-20K 0K 10K 20K 35K 55K 85K 105K Terminado T3 Passo4: Libera Espaço SO T5-5K T2-15K Vago-20K T6-30K Vago-20K 0K 10K 20K 35K 55K 85K 105K Surgem T7 10K T8 30K SO T5-5K T2-15K T7-10K 10K T6-30K 20K ESPERA Mas não há 30K livre no total? 0K 10K 20K 35K 55K 85K 105K
Gerenciamento de Memória Otimização: Primeira x Melhor (Partição Livre) A Primeira partição livre é simples mas ineficiente em grande volume de trabalho. O otimização com o conceito da Melhor partição livre aproveita os recursos livres para acomodar melhor as necessidades das tarefas, porém exige um controle adicional de listas para gerenciar as partições livres. Uma lista de memória é criada para administrar os espaços livres, com isto, há condições de se ofertar a melhor partição livre para determinada tarefa. É um processo mais lento, porém mais eficiente.
Gerenciamento de Memória Desalocação Basicamente, o processo de desalocação para partições fixas envolve apenas mudança de status do controle de alocação. Já para partições dinâmicas, o processo é um pouco mais complexo, considerando: Que o bloco seja adjacente ao outro livre Que o bloco esteja entre dois blocos livres Que o bloco seja isolado entre outros já alocados
Gerenciamento de Memória Partições Dinâmicas Realocáveis Implementa uma estrutura que resolve o problema da fragmentação de blocos livres, chamada de compactação. Não é uma tarefa fácil. O SO trabalha para aproveitar os fragmentos livres, utiliza-se de tabelas auxiliares para este controle, e com isto há condições de se realocar memória para processos que necessitam de mais espaço. Esta tarefa é executada pelo SO de forma intrínseca.
Gerenciamento de Memória As técnicas aqui apresentadas (usuário único, partição fíxa, partição dinâmica e partição dinâmica realocável), possuem três características em comum: Carga completa do programa na memória Armazenamento contínuo do programa na memória Permanência do programa na memória durante todo o tempo de execução Estas técnicas, que são mais antigas, mostram um cenário que hoje os sistemas mais modernos já incorporam outros recursos mais sofisticas, considerando critérios de alocação de espaço em hardware diversos, técnicas de swap, alocações em discos, entre outros...
Exercícios...